Ejemplo n.º 1
0
 /**
  * {@inheritdoc}
  *
  * Prepare items for PersistentBatchWriter, filters for duplicates and takes only latest versions
  */
 public function write(array $items)
 {
     $uniqueItems = [];
     $uniqueKeys = [];
     foreach ($items as $item) {
         if ($item instanceof Customer || $item instanceof Cart) {
             $this->handleIdentifier($uniqueItems, $item, $item->getOriginId());
         } elseif ($item instanceof Order) {
             $this->handleIdentifier($uniqueItems, $item, $item->getIncrementId());
         } elseif ($item instanceof NewsletterSubscriber) {
             $identifier = $item->getCustomer() ? $item->getCustomer()->getId() : 0;
             if ($identifier !== 0 && in_array($identifier, $uniqueKeys)) {
                 $this->logSkipped($item->getOriginId());
             } else {
                 $uniqueKeys[] = $identifier;
                 $uniqueItems[] = $item;
             }
         } else {
             $uniqueItems[] = $item;
         }
     }
     $this->writer->write($uniqueItems);
     // force entity cache clear if clear is skipped
     $this->databaseHelper->onClear();
 }
Ejemplo n.º 2
0
 /**
  * {@inheritdoc}
  *
  * Prepare items for PersistentBatchWriter, filters for duplicates and takes only latest versions
  */
 public function write(array $items)
 {
     $uniqueItems = [];
     foreach ($items as $item) {
         if ($item instanceof Customer || $item instanceof Cart) {
             $identifier = $item->getOriginId();
             if (array_key_exists($identifier, $uniqueItems)) {
                 $this->logSkipped($identifier);
             }
             if ($item instanceof Customer) {
                 $item->setIsSynced(true);
             }
             $uniqueItems[$identifier] = $item;
         } elseif ($item instanceof Order) {
             $identifier = $item->getIncrementId();
             if (array_key_exists($identifier, $uniqueItems)) {
                 $this->logSkipped($item->getIncrementId());
             }
             $uniqueItems[$identifier] = $item;
         } else {
             $uniqueItems[] = $item;
         }
     }
     $this->writer->write($uniqueItems);
     // force entity cache clear if clear is skipped
     $this->databaseHelper->onClear();
 }