* @copyright 2021 DIGITAL RETAIL TECHNOLOGIES SL * @license https://opensource.org/licenses/MIT The MIT License * * Don't forget to prefix your containers with your own identifier * to avoid any conflicts with others containers. */ class RetailcrmCatalogHelper { const ICML_INFO_NAME = 'RETAILCRM_ICML_INFO'; public static function getIcmlFileDate() { $date = null; $filePath = self::getIcmlFilePath(); if (!file_exists($filePath) || ($fileHandler = fopen($filePath, 'r')) === false) { return false; } while ($line = fgets($fileHandler)) { if (false !== strpos($line, 'yml_catalog date=')) { preg_match_all('/date="([\d\- :]+)"/', $line, $matches); if (2 == count($matches)) { $date = $matches[1][0]; } break; } } fclose($fileHandler); return DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $date); } public static function getIcmlFileLink() { return _PS_BASE_URL_SSL_ . '/' . self::getIcmlFilename(); } public static function getIcmlFileName() { $isMultiStoreActive = Shop::isFeatureActive(); $shop = Context::getContext()->shop; if ($isMultiStoreActive) { $icmlFileName = 'simla_' . $shop->id . '.xml'; } else { $icmlFileName = 'simla.xml'; } return $icmlFileName; } public static function getIcmlFilePath() { return _PS_ROOT_DIR_ . '/' . self::getIcmlFileName(); } public static function isIcmlFileLinkActual() { $api = RetailcrmTools::getApiClient(); if (empty($api)) { return null; } $reference = new RetailcrmReferences($api); $site = $reference->getSite(); if (empty($site)) { return null; } $newYmlUrl = RetailcrmCatalogHelper::getIcmlFileLink(); RetailcrmLogger::writeDebug( __METHOD__, sprintf( 'Comparing %s and %s: %s', $newYmlUrl, $site['ymlUrl'], $newYmlUrl === $site['ymlUrl'] ? 'true' : 'false' ) ); return $newYmlUrl === $site['ymlUrl']; } /** * @param int $productsCount * @param int $offersCount */ public static function setIcmlFileInfo($productsCount, $offersCount) { $icmlInfo = [ 'productsCount' => $productsCount, 'offersCount' => $offersCount, ]; Configuration::updateValue(self::ICML_INFO_NAME, (string) json_encode($icmlInfo)); } }