Пример #1
0
 /**
  * Duplicate images for variations
  *
  * @param array $productsData
  *
  * @return array
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  */
 public function duplicateImagesForVariations($productsData)
 {
     $imagesForCopy = [];
     foreach ($productsData as $variationId => $simpleProductData) {
         if (!isset($simpleProductData['media_gallery']['images'])) {
             continue;
         }
         foreach ($simpleProductData['media_gallery']['images'] as $imageId => $image) {
             $image['variation_id'] = $variationId;
             if (isset($imagesForCopy[$imageId][0])) {
                 // skip duplicate image for first product
                 unset($imagesForCopy[$imageId][0]);
             }
             $imagesForCopy[$imageId][] = $image;
         }
     }
     foreach ($imagesForCopy as $imageId => $variationImages) {
         foreach ($variationImages as $image) {
             $file = $image['file'];
             $variationId = $image['variation_id'];
             $newFile = $this->media->duplicateImageFromTmp($file);
             $productsData[$variationId]['media_gallery']['images'][$imageId]['file'] = $newFile;
             foreach ($this->variationMediaAttributes->getMediaAttributes() as $attribute) {
                 if (isset($productsData[$variationId][$attribute->getAttributeCode()]) && $productsData[$variationId][$attribute->getAttributeCode()] == $file) {
                     $productsData[$variationId][$attribute->getAttributeCode()] = $newFile;
                 }
             }
         }
     }
     return $productsData;
 }
Пример #2
0
 /**
  * Duplicate images for variations
  *
  * @param array $productsData
  *
  * @return array
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  */
 public function duplicateImagesForVariations($productsData)
 {
     $imagesForCopy = [];
     foreach ($productsData as $variationId => $simpleProductData) {
         if (!isset($simpleProductData['media_gallery']['images'])) {
             continue;
         }
         foreach ($simpleProductData['media_gallery']['images'] as $imageId => $image) {
             $image['variation_id'] = $variationId;
             if (isset($imagesForCopy[$imageId][0])) {
                 // skip duplicate image for first product
                 unset($imagesForCopy[$imageId][0]);
             }
             $imagesForCopy[$imageId][] = $image;
         }
     }
     foreach ($imagesForCopy as $imageId => $variationImages) {
         foreach ($variationImages as $image) {
             $file = $image['file'];
             $variationId = $image['variation_id'];
             $newFile = $this->media->duplicateImageFromTmp($file);
             $productsData[$variationId]['media_gallery']['images'][$imageId]['file'] = $newFile;
             foreach (['small_image', 'thumbnail', 'image'] as $imageType) {
                 if (isset($productsData[$variationId][$imageType]) && $productsData[$variationId][$imageType] == $file) {
                     $productsData[$variationId][$imageType] = $newFile;
                 }
             }
         }
     }
     return $productsData;
 }
Пример #3
0
 /**
  * {@inheritdoc}
  */
 public function duplicateImageFromTmp($file)
 {
     $pluginInfo = $this->pluginList->getNext($this->subjectType, 'duplicateImageFromTmp');
     if (!$pluginInfo) {
         return parent::duplicateImageFromTmp($file);
     } else {
         return $this->___callPlugins('duplicateImageFromTmp', func_get_args(), $pluginInfo);
     }
 }