Example #1
0
 /**
  * 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;
 }
Example #2
0
 /**
  * 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;
 }