/** * Process export * * @param \Thelia\ImportExport\Export\AbstractExport $export An export * @param \Thelia\Core\Serializer\SerializerInterface $serializer A serializer interface * * @return string Export file path */ protected function processExport(AbstractExport $export, SerializerInterface $serializer) { $filename = sprintf('%s-%s-%s.%s', (new \DateTime())->format('Ymd'), uniqid(), $export->getFileName(), $serializer->getExtension()); $filePath = THELIA_CACHE_DIR . 'export' . DS . $filename; $fileSystem = new Filesystem(); $fileSystem->mkdir(dirname($filePath)); $file = new \SplFileObject($filePath, 'w+b'); $serializer->prepareFile($file); foreach ($export as $idx => $data) { $data = $export->beforeSerialize($data); $data = $export->applyOrderAndAliases($data); $data = $serializer->serialize($data); $data = $export->afterSerialize($data); if ($idx > 0) { $data = $serializer->separator() . $data; } $file->fwrite($data); } $serializer->finalizeFile($file); unset($file); return $filePath; }
/** * Process import * * @param \Thelia\ImportExport\Import\AbstractImport $import An import * @param \Thelia\Core\Serializer\SerializerInterface $serializer A serializer interface * * @return array List of errors */ protected function processImport(AbstractImport $import, SerializerInterface $serializer) { $errors = []; $import->setData($serializer->unserialize($import->getFile()->openFile('r'))); foreach ($import as $idx => $data) { $import->checkMandatoryColumns($data); $error = $import->importData($data); if ($error !== null) { $errors[] = $error; } } return $errors; }
/** * Add a serializer * * @param \Thelia\Core\Serializer\SerializerInterface $serializer A serializer * * @return $this Return $this, allow chaining */ public function add(SerializerInterface $serializer) { $this->serializers[$serializer->getId()] = $serializer; return $this; }