Exemplo n.º 1
0
 /**
  * Save Product downloadable information (links and samples)
  *
  * @param \Magento\Catalog\Model\Product $product
  * @return $this
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  * @SuppressWarnings(PHPMD.NPathComplexity)
  * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
  */
 public function save($product)
 {
     parent::save($product);
     if ($data = $product->getDownloadableData()) {
         $this->typeHandler->save($product, $data);
     }
     return $this;
 }
Exemplo n.º 2
0
 /**
  * Save Product downloadable information (links and samples)
  *
  * @param \Magento\Catalog\Model\Product $product
  * @return $this
  */
 public function save($product)
 {
     parent::save($product);
     if ($data = $product->getDownloadableData()) {
         if (isset($data['sample'])) {
             $_deleteItems = array();
             foreach ($data['sample'] as $sampleItem) {
                 if ($sampleItem['is_delete'] == '1') {
                     if ($sampleItem['sample_id']) {
                         $_deleteItems[] = $sampleItem['sample_id'];
                     }
                 } else {
                     unset($sampleItem['is_delete']);
                     if (!$sampleItem['sample_id']) {
                         unset($sampleItem['sample_id']);
                     }
                     $sampleModel = $this->_createSample();
                     $files = array();
                     if (isset($sampleItem['file'])) {
                         $files = $this->_coreData->jsonDecode($sampleItem['file']);
                         unset($sampleItem['file']);
                     }
                     $sampleModel->setData($sampleItem)->setSampleType($sampleItem['type'])->setProductId($product->getId())->setStoreId($product->getStoreId());
                     if ($sampleModel->getSampleType() == \Magento\Downloadable\Helper\Download::LINK_TYPE_FILE) {
                         $sampleFileName = $this->_downloadableFile->moveFileFromTmp($sampleModel->getBaseTmpPath(), $sampleModel->getBasePath(), $files);
                         $sampleModel->setSampleFile($sampleFileName);
                     }
                     $sampleModel->save();
                     $product->setLastAddedSampleId($sampleModel->getId());
                 }
             }
             if ($_deleteItems) {
                 $this->_sampleResFactory->create()->deleteItems($_deleteItems);
             }
         }
         if (isset($data['link'])) {
             $_deleteItems = array();
             foreach ($data['link'] as $linkItem) {
                 if (isset($linkItem['is_delete']) && $linkItem['is_delete'] == '1') {
                     if ($linkItem['link_id']) {
                         $_deleteItems[] = $linkItem['link_id'];
                     }
                 } else {
                     unset($linkItem['is_delete']);
                     if (isset($linkItem['link_id']) && !$linkItem['link_id']) {
                         unset($linkItem['link_id']);
                     }
                     $files = array();
                     if (isset($linkItem['file'])) {
                         $files = $this->_coreData->jsonDecode($linkItem['file']);
                         unset($linkItem['file']);
                     }
                     $sample = array();
                     if (isset($linkItem['sample'])) {
                         $sample = $linkItem['sample'];
                         unset($linkItem['sample']);
                     }
                     $linkModel = $this->_createLink()->setData($linkItem)->setLinkType($linkItem['type'])->setProductId($product->getId())->setStoreId($product->getStoreId())->setWebsiteId($product->getStore()->getWebsiteId())->setProductWebsiteIds($product->getWebsiteIds());
                     if (null === $linkModel->getPrice()) {
                         $linkModel->setPrice(0);
                     }
                     if ($linkModel->getIsUnlimited()) {
                         $linkModel->setNumberOfDownloads(0);
                     }
                     $sampleFile = array();
                     if ($sample && isset($sample['type'])) {
                         if ($sample['type'] == 'url' && $sample['url'] != '') {
                             $linkModel->setSampleUrl($sample['url']);
                         }
                         $linkModel->setSampleType($sample['type']);
                         if (isset($sample['file'])) {
                             $sampleFile = $this->_coreData->jsonDecode($sample['file']);
                         }
                     }
                     if ($linkModel->getLinkType() == \Magento\Downloadable\Helper\Download::LINK_TYPE_FILE) {
                         $linkFileName = $this->_downloadableFile->moveFileFromTmp($this->_createLink()->getBaseTmpPath(), $this->_createLink()->getBasePath(), $files);
                         $linkModel->setLinkFile($linkFileName);
                     }
                     if ($linkModel->getSampleType() == \Magento\Downloadable\Helper\Download::LINK_TYPE_FILE) {
                         $linkSampleFileName = $this->_downloadableFile->moveFileFromTmp($this->_createLink()->getBaseSampleTmpPath(), $this->_createLink()->getBaseSamplePath(), $sampleFile);
                         $linkModel->setSampleFile($linkSampleFileName);
                     }
                     $linkModel->save();
                     $product->setLastAddedLinkId($linkModel->getId());
                 }
             }
             if ($_deleteItems) {
                 $this->_linkResource->deleteItems($_deleteItems);
             }
             if ($product->getLinksPurchasedSeparately()) {
                 $product->setIsCustomOptionChanged();
             }
         }
     }
     return $this;
 }