Spamworldpro Mini Shell
Spamworldpro


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/amasty/feed/Model/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/old/vendor/amasty/feed/Model/Import.php
<?php
/**
 * @author Amasty Team
 * @copyright Copyright (c) Amasty (https://www.amasty.com)
 * @package Product Feed for Magento 2
 */

namespace Amasty\Feed\Model;

use Amasty\Base\Model\Serializer as BaseSerializer;
use Amasty\Feed\Model\ResourceModel\Feed\CollectionFactory;
use Magento\Framework\App\Filesystem\DirectoryList;
use Magento\Framework\Exception\LocalizedException;
use Magento\Framework\Filesystem;
use Magento\Framework\Serialize\Serializer\Serialize;
use Magento\Framework\Setup\SampleData\Context as SampleDataContext;
use Magento\Framework\Setup\SampleData\FixtureManager;

class Import
{
    /**
     * @var Serialize
     */
    private $serializer;

    /**
     * @var string[]
     */
    private $templates = [
        'google', 'bing', 'shopping'
    ];

    /**
     * @var Filesystem
     */
    private $filesystem;

    /**
     * @var CollectionFactory
     */
    private $collectionFactory;

    /**
     * @var BaseSerializer
     */
    private $baseSerializer;

    /**
     * @var FixtureManager
     */
    private $fixtureManager;

    /**
     * @var FeedRepository
     */
    private $feedRepository;

    public function __construct(
        SampleDataContext $sampleDataContext,
        CollectionFactory $collectionFactory,
        FeedRepository $feedRepository,
        Filesystem $filesystem,
        Serialize $serializer,
        BaseSerializer $baseSerializer
    ) {
        $this->fixtureManager = $sampleDataContext->getFixtureManager();
        $this->collectionFactory = $collectionFactory;
        $this->serializer = $serializer;
        $this->filesystem = $filesystem;
        $this->feedRepository = $feedRepository;
        $this->baseSerializer = $baseSerializer;
    }

    public function install()
    {
        $dir = $this->filesystem->getDirectoryRead(DirectoryList::ROOT);

        foreach ($this->templates as $template) {
            $fileName = $dir->getRelativePath($this->fixtureManager->getFixture('Amasty_Feed::fixtures/' . $template));
            if (!$dir->isExist($fileName)) {
                continue;
            }

            try {
                $content = $dir->readFile($fileName);
            } catch (\Magento\Framework\Exception\FileSystemException $exception) {
                continue;
            }

            $data = $this->serializer->unserialize($content);

            if (is_array($data)) {
                if (isset($data['csv_field'])) {
                    $data['csv_field'] = $this->convertCsvFieldSerialization($data['csv_field']);
                }
                $feedCollection = $this->collectionFactory->create()
                    ->addFieldToFilter('name', $data['name'])
                    ->addFieldToFilter('is_template', 1);

                if ($feedCollection->getSize() > 0) {
                    $items = $feedCollection->getItems();
                    end($items)->delete();
                }

                $feedModel = $this->feedRepository->getEmptyModel();
                $feedModel->setData($data);
                try {
                    $this->feedRepository->save($feedModel);
                } catch (LocalizedException $exception) {
                    continue;
                }
            }
        }
    }

    public function update($templates)
    {
        if (!is_array($templates)) {
            $templates = [$templates];
        }

        $this->templates = $templates;

        $this->install();
    }

    private function convertCsvFieldSerialization($csvField)
    {
        try {
            $unserializedValue = $this->serializer->unserialize($csvField);
            $convertedValue = $this->baseSerializer->serialize($unserializedValue);

            return $convertedValue !== false ? $convertedValue : $csvField;
        } catch (\Exception $e) {
            return $csvField;
        }
    }
}

Spamworldpro Mini