![]() 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/cartforge.co/app/code/Amasty/Base/Model/Feed/FeedTypes/ |
<?php declare(strict_types=1); /** * @author Amasty Team * @copyright Copyright (c) Amasty (https://www.amasty.com) * @package Magento 2 Base Package */ namespace Amasty\Base\Model\Feed\FeedTypes; use Amasty\Base\Model\Feed\FeedContentProvider; use Amasty\Base\Model\ModuleInfoProvider; use Amasty\Base\Model\Parser; use Amasty\Base\Model\Serializer; use Magento\Framework\Config\CacheInterface; class Ads { public const CSV_CACHE_ID = 'amasty_base_csv'; public const AMASTY_ADS_LAST_MODIFIED_DATE = 'amasty_ads_last_modified_date'; /** * @var CacheInterface */ private $cache; /** * @var Serializer */ private $serializer; /** * @var FeedContentProvider */ private $feedContentProvider; /** * @var Parser */ private $parser; /** * @var Ad\Offline */ private $adOffline; /** * @var ModuleInfoProvider */ private $moduleInfoProvider; public function __construct( CacheInterface $cache, Serializer $serializer, FeedContentProvider $feedContentProvider, Parser $parser, Ad\Offline $adOffline, ModuleInfoProvider $moduleInfoProvider ) { $this->cache = $cache; $this->serializer = $serializer; $this->feedContentProvider = $feedContentProvider; $this->parser = $parser; $this->adOffline = $adOffline; $this->moduleInfoProvider = $moduleInfoProvider; } /** * @return array */ public function execute(): array { $cache = $this->cache->load(self::CSV_CACHE_ID); $unserializedCache = $cache ? $this->serializer->unserialize($cache) : null; return $unserializedCache ?: $this->getFeed(); } /** * @return array */ public function getFeed(): array { $result = []; $cachedData = $this->cache->load(self::CSV_CACHE_ID); $options = $cachedData ? ['modified_since' => $this->getLastModified()] : []; $feedResponse = $this->feedContentProvider->getFeedResponse( $this->feedContentProvider->getFeedUrl(FeedContentProvider::URN_ADS), $options ); if (!$this->moduleInfoProvider->isOriginMarketplace()) { if ($feedResponse->isNeedToUpdateCache()) { $result = $this->parser->parseCsv($feedResponse->getContent()); $result = $this->parser->trimCsvData($result, ['upsell_module_code', 'module_code']); $this->saveCache($result); $this->setLastModified(); } } if (!$result || $feedResponse->isFailed()) { $result = $this->adOffline->getOfflineData($this->moduleInfoProvider->isOriginMarketplace()); $result = $this->parser->trimCsvData($result, ['upsell_module_code', 'module_code']); $this->saveCache($result); } return $result; } private function getLastModified() { return $this->cache->load(self::AMASTY_ADS_LAST_MODIFIED_DATE); } private function setLastModified() { $dateTime = gmdate('D, d M Y H:i:s') . ' GMT'; return $this->cache->save($dateTime, self::AMASTY_ADS_LAST_MODIFIED_DATE); } private function saveCache(array $result) { $this->cache->save( $this->serializer->serialize($result), self::CSV_CACHE_ID, [self::CSV_CACHE_ID] ); } }