![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/mageworx/module-seoxtemplates/Model/DbWriter/Product/ |
<?php /** * Copyright © MageWorx. All rights reserved. * See LICENSE.txt for license details. */ namespace MageWorx\SeoXTemplates\Model\DbWriter\Product; use Magento\Framework\App\ResourceConnection; use MageWorx\SeoXTemplates\Model\DataProviderProductFactory; use MageWorx\SeoAll\Helper\LinkFieldResolver; use Magento\Catalog\Model\ResourceModel\Product\Gallery as GalleryResource; use Magento\Catalog\Api\Data\ProductInterface; class Gallery extends \MageWorx\SeoXTemplates\Model\DbWriter\Product { /** * @var \MageWorx\SeoXTemplates\Model\DataProviderInterface */ protected $dataProvider; /** * @var \MageWorx\SeoAll\Helper\LinkFieldResolver */ protected $linkFieldResolver; /** * @var \Magento\Catalog\Model\ResourceModel\Product\Collection */ protected $_collection; /** * @var GalleryResource */ protected $galleryResource; /** * Gallery constructor. * * @param ResourceConnection $resource * @param DataProviderProductFactory $dataProviderProductFactory * @param LinkFieldResolver $linkFieldResolver * @param GalleryResource $galleryResource */ public function __construct( ResourceConnection $resource, DataProviderProductFactory $dataProviderProductFactory, LinkFieldResolver $linkFieldResolver, GalleryResource $galleryResource ) { parent::__construct($resource, $dataProviderProductFactory); $this->linkFieldResolver = $linkFieldResolver; $this->galleryResource = $galleryResource; } /** * Write to database converted string from template code * * @param \Magento\Catalog\Model\ResourceModel\Product\Collection $collection * @param \MageWorx\SeoXTemplates\Model\AbstractTemplate $template * @param int $customStoreId * @return array|false */ public function write($collection, $template, $customStoreId = null) { if (!$collection) { return false; } $this->_collection = $collection; $this->dataProvider = $this->dataProviderProductFactory->create($template->getTypeId()); $data = $this->dataProvider->getData($collection, $template, $customStoreId); foreach ($data as $attributeCode => $attributeData) { $this->attributeDataWrite($attributeCode, $attributeData); } return true; } /** * Write dispatch * * @param string $attributeCode * @param array $attributeData */ protected function attributeDataWrite($attributeCode, $attributeData) { if ($attributeCode === 'media_gallery') { foreach ($attributeData as $productId => $multipleData) { foreach ($multipleData as $valueId => $data) { $this->galleryResource->deleteGalleryValueInStore( $data['value_id'], $data[$this->linkFieldResolver->getLinkField(ProductInterface::class, 'entity_id')], $data['store_id'] ); $this->galleryResource->insertGalleryValueInStore($data); } } } } }