コード例 #1
0
 /**
  * @param \Magento\Catalog\Api\Data\ProductInterface $product
  * @param \Magento\Downloadable\Api\Data\LinkInterface[] $links
  * @return $this
  */
 protected function saveLinks(\Magento\Catalog\Api\Data\ProductInterface $product, array $links)
 {
     $existingLinkIds = [];
     //get existing links from extension attribute
     $extensionAttributes = $product->getExtensionAttributes();
     if ($extensionAttributes !== null) {
         $existingLinks = $extensionAttributes->getDownloadableProductLinks();
         if ($existingLinks !== null) {
             foreach ($existingLinks as $existingLink) {
                 $existingLinkIds[] = $existingLink->getId();
             }
         }
     }
     $updatedLinkIds = [];
     foreach ($links as $link) {
         $linkId = $link->getId();
         if ($linkId) {
             $updatedLinkIds[] = $linkId;
         }
         $this->linkRepository->save($product->getSku(), $link);
     }
     $linkIdsToDelete = array_diff($existingLinkIds, $updatedLinkIds);
     foreach ($linkIdsToDelete as $linkId) {
         $this->linkRepository->delete($linkId);
     }
     return $this;
 }
コード例 #2
0
 /**
  * @param object $entity
  * @param array $arguments
  * @return \Magento\Catalog\Api\Data\ProductInterface|object
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function execute($entity, $arguments = [])
 {
     /** @var $entity \Magento\Catalog\Api\Data\ProductInterface */
     if ($entity->getTypeId() != Type::TYPE_DOWNLOADABLE) {
         return $entity;
     }
     /** @var \Magento\Downloadable\Api\Data\LinkInterface[] $links */
     $links = $entity->getExtensionAttributes()->getDownloadableProductLinks() ?: [];
     foreach ($links as $link) {
         $link->setId(null);
         $this->linkRepository->save($entity->getSku(), $link, !(bool) $entity->getStoreId());
     }
     return $entity;
 }
コード例 #3
0
 /**
  * @param string $entityType
  * @param object $entity
  * @return object
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function execute($entityType, $entity)
 {
     if ($entity->getTypeId() !== 'downloadable') {
         return $entity;
     }
     /** @var \Magento\Catalog\Api\Data\ProductInterface $entity */
     foreach ($this->linkRepository->getList($entity->getSku()) as $link) {
         $this->linkRepository->delete($link->getId());
     }
     $links = $entity->getExtensionAttributes()->getDownloadableProductLinks() ?: [];
     foreach ($links as $link) {
         $this->linkRepository->save($entity->getSku(), $link, !(bool) $entity->getStoreId());
     }
     return $entity;
 }
コード例 #4
0
ファイル: SaveHandler.php プロジェクト: rafaelstz/magento2
 /**
  * @param string $entityType
  * @param object $entity
  * @param array $arguments
  * @return \Magento\Catalog\Api\Data\ProductInterface|object
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function execute($entityType, $entity, $arguments = [])
 {
     if ($entity->getTypeId() !== 'downloadable') {
         return $entity;
     }
     $links = $entity->getExtensionAttributes()->getDownloadableProductLinks() ?: [];
     $updatedLinks = [];
     $oldLinks = $this->linkRepository->getList($entity->getSku());
     foreach ($links as $link) {
         if ($link->getId()) {
             $updatedLinks[$link->getId()] = true;
         }
         $this->linkRepository->save($entity->getSku(), $link, !(bool) $entity->getStoreId());
     }
     /** @var \Magento\Catalog\Api\Data\ProductInterface $entity */
     foreach ($oldLinks as $link) {
         if (!isset($updatedLinks[$link->getId()])) {
             $this->linkRepository->delete($link->getId());
         }
     }
     return $entity;
 }