Example #1
0
 /**
  * @param SampleInterface $sample
  * @return SampleInterface
  * @throws \Magento\Framework\Exception\LocalizedException
  */
 public function build(SampleInterface $sample)
 {
     $downloadableData = $this->objectCopyService->getDataFromFieldset('downloadable_data', 'to_sample', $this->data);
     $this->dataObjectHelper->populateWithArray($sample, array_merge($this->data, $downloadableData), SampleInterface::class);
     if ($sample->getSampleType() === \Magento\Downloadable\Helper\Download::LINK_TYPE_FILE) {
         if (!isset($this->data['file'])) {
             throw new \Magento\Framework\Exception\LocalizedException(__('Sample file not provided'));
         }
         $fileName = $this->downloadableFile->moveFileFromTmp($this->getComponent()->getBaseTmpPath(), $this->getComponent()->getBasePath(), $this->data['file']);
         $sample->setSampleFile($fileName);
     }
     if (!$sample->getSortOrder()) {
         $sample->setSortOrder(1);
     }
     $this->resetData();
     return $sample;
 }
 /**
  * Load file and set path to sample
  *
  * @param SampleInterface $sample
  * @return void
  */
 protected function setFiles(SampleInterface $sample)
 {
     if ($sample->getSampleType() == \Magento\Downloadable\Helper\Download::LINK_TYPE_FILE && $sample->getFile()) {
         $sampleFileName = $this->downloadableFile->moveFileFromTmp($sample->getBaseTmpPath(), $sample->getBasePath(), $this->jsonHelper->jsonDecode($sample->getFile()));
         $sample->setSampleFile($sampleFileName);
         $sample->setSampleUrl(null);
     }
 }
Example #3
0
 /**
  * @param \Magento\Downloadable\Api\Data\LinkInterface $link
  * @param array $sample
  * @return \Magento\Downloadable\Api\Data\LinkInterface
  * @throws \Magento\Framework\Exception\LocalizedException
  */
 private function buildSample(\Magento\Downloadable\Api\Data\LinkInterface $link, array $sample)
 {
     if (!empty($sample['url']) || !empty($sample['file'])) {
         $downloadableLinkSampleData = $this->objectCopyService->getDataFromFieldset('downloadable_link_sample_data', 'to_link_sample', $this->data['sample']);
         $this->dataObjectHelper->populateWithArray($link, array_merge($this->data, $downloadableLinkSampleData), \Magento\Downloadable\Api\Data\LinkInterface::class);
         if ($link->getSampleType() === \Magento\Downloadable\Helper\Download::LINK_TYPE_FILE) {
             $linkSampleFileName = $this->downloadableFile->moveFileFromTmp($this->getComponent()->getBaseSampleTmpPath(), $this->getComponent()->getBaseSamplePath(), $sample['file']);
             $link->setSampleFile($linkSampleFileName);
         }
     }
     return $link;
 }
 /**
  * Load files and set paths to link and sample of link
  *
  * @param LinkInterface $link
  * @return void
  */
 protected function setFiles(LinkInterface $link)
 {
     if ($link->getSampleType() == \Magento\Downloadable\Helper\Download::LINK_TYPE_FILE && $link->getSampleFileData()) {
         $linkSampleFileName = $this->downloadableFile->moveFileFromTmp($link->getBaseSampleTmpPath(), $link->getBaseSamplePath(), $this->jsonHelper->jsonDecode($link->getSampleFileData()));
         $link->setSampleFile($linkSampleFileName);
         $link->setSampleUrl(null);
     }
     if ($link->getLinkType() == \Magento\Downloadable\Helper\Download::LINK_TYPE_FILE && $link->getFile()) {
         $linkFileName = $this->downloadableFile->moveFileFromTmp($link->getBaseTmpPath(), $link->getBasePath(), $this->jsonHelper->jsonDecode($link->getFile()));
         $link->setLinkFile($linkFileName);
         $link->setLinkUrl(null);
     }
 }
Example #5
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;
 }