Spaces:
No application file
No application file
namespace Mautic\ReportBundle\Model; | |
use Mautic\CoreBundle\Exception\FilePathException; | |
use Mautic\CoreBundle\Helper\CoreParametersHelper; | |
use Mautic\CoreBundle\Helper\FilePathResolver; | |
use Mautic\ReportBundle\Exception\FileIOException; | |
class ExportHandler | |
{ | |
/** | |
* @var string | |
*/ | |
private $dir; | |
public function __construct( | |
CoreParametersHelper $coreParametersHelper, | |
private FilePathResolver $filePathResolver | |
) { | |
$this->dir = $coreParametersHelper->get('report_temp_dir'); | |
} | |
/** | |
* @return bool|resource | |
* | |
* @throws FileIOException | |
*/ | |
public function getHandler($fileName) | |
{ | |
$path = $this->getPath($fileName); | |
if (false === ($handler = @fopen($path, 'a'))) { | |
throw new FileIOException('Could not open file '.$path); | |
} | |
return $handler; | |
} | |
/** | |
* @param resource $handler | |
*/ | |
public function closeHandler($handler): void | |
{ | |
fclose($handler); | |
} | |
/** | |
* @param string $fileName | |
*/ | |
public function removeFile($fileName): void | |
{ | |
try { | |
$path = $this->getPath($fileName); | |
$this->filePathResolver->delete($path); | |
} catch (FileIOException) { | |
} | |
} | |
/** | |
* @throws FileIOException | |
*/ | |
public function getPath($fileName): string | |
{ | |
try { | |
$this->filePathResolver->createDirectory($this->dir); | |
} catch (FilePathException $e) { | |
throw new FileIOException('Could not create directory '.$this->dir, 0, $e); | |
} | |
return $this->dir.'/'.$fileName.'.csv'; | |
} | |
} | |