* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShop\PrestaShop\Core\Export\FileWriter; use Exception; use PrestaShop\PrestaShop\Core\Export\Data\ExportableDataInterface; use PrestaShop\PrestaShop\Core\Export\Exception\FileWritingException; use PrestaShop\PrestaShop\Core\Export\ExportDirectory; use SplFileObject; /** * Class ExportCsvFileWriter writes provided data into CSV file and saves it in export directory. */ final class ExportCsvFileWriter implements FileWriterInterface { /** * @var ExportDirectory */ private $exportDirectory; /** * @param ExportDirectory $exportDirectory */ public function __construct(ExportDirectory $exportDirectory) { $this->exportDirectory = $exportDirectory; } /** * {@inheritdoc} * * @throws FileWritingException */ public function write($fileName, ExportableDataInterface $data) { $filePath = $this->exportDirectory . $fileName; try { $exportFile = new SplFileObject($filePath, 'w'); } catch (Exception $e) { throw new FileWritingException(sprintf('Cannot open export file for writing'), FileWritingException::CANNOT_OPEN_FILE_FOR_WRITING); } $exportFile->fputcsv($data->getTitles(), ';'); foreach ($data->getRows() as $row) { $exportFile->fputcsv($row, ';'); } return $exportFile; } }