Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/yandex.market/lib/export/entity/iblock/ |
Upload File : |
<?php namespace Yandex\Market\Export\Entity\Iblock; use Bitrix\Main; use Bitrix\Iblock; use Yandex\Market; class Provider { protected static $catalogIblockIdCache = []; protected static $contextCache = []; public static function getCatalogIblockId($offerIblockId) { $offerIblockId = (int)$offerIblockId; if ($offerIblockId <= 0 || !Main\Loader::includeModule('catalog')) { return null; } if (isset(self::$catalogIblockIdCache[$offerIblockId]) || array_key_exists($offerIblockId, self::$catalogIblockIdCache)) { return self::$catalogIblockIdCache[$offerIblockId]; } $catalogData = \CCatalogSku::GetInfoByIBlock($offerIblockId); $result = null; if (!empty($catalogData) && $catalogData['CATALOG_TYPE'] === \CCatalogSku::TYPE_OFFERS) { $productIblockId = (int)$catalogData['PRODUCT_IBLOCK_ID']; $result = $productIblockId > 0 ? $productIblockId : null; } self::$catalogIblockIdCache[$offerIblockId] = $result; return $result; } public static function getContext($iblockId) { $iblockId = (int)$iblockId; if (isset(static::$contextCache[$iblockId])) { $result = static::$contextCache[$iblockId]; } else { $result = static::loadContext($iblockId); static::$contextCache[$iblockId] = $result; } return $result; } protected static function loadContext($iblockId) { $iblockId = (int)$iblockId; $result = [ 'IBLOCK_ID' => $iblockId, 'IBLOCK_NAME' => null, 'SITE_ID' => null, 'SITE_LIST' => [], 'HAS_CATALOG' => false, 'HAS_OFFER' => false ]; // load iblock info if ($iblockId > 0 && Main\Loader::includeModule('iblock')) { // -- base field $queryIblockFields = \CIBlock::GetList([], [ 'ID' => $iblockId, 'CHECK_PERMISSIONS' => 'N' ]); if ($iblock = $queryIblockFields->Fetch()) { $result['IBLOCK_NAME'] = $iblock['NAME']; $result['SITE_ID'] = $iblock['LID']; } // -- site link $queryIblockSite = Iblock\IblockSiteTable::getList([ 'filter' => [ '=IBLOCK_ID' => $iblockId ], 'select' => [ 'SITE_ID' ] ]); while ($iblockSite = $queryIblockSite->fetch()) { $result['SITE_LIST'][] = $iblockSite['SITE_ID']; } } // load catalog data if ($iblockId > 0 && Main\Loader::includeModule('catalog')) { $catalogData = \CCatalogSku::GetInfoByIBlock($iblockId); if (!empty($catalogData)) { $result['HAS_CATALOG'] = true; $hasOffers = ( !empty($catalogData['CATALOG_TYPE']) && ( $catalogData['CATALOG_TYPE'] === \CCatalogSku::TYPE_PRODUCT || $catalogData['CATALOG_TYPE'] === \CCatalogSku::TYPE_FULL ) ); if ($hasOffers) { $result['HAS_OFFER'] = true; $result['OFFER_ONLY'] = ($catalogData['CATALOG_TYPE'] === \CCatalogSku::TYPE_PRODUCT); $result['OFFER_IBLOCK_ID'] = (int)$catalogData['IBLOCK_ID']; $result['OFFER_PROPERTY_ID'] = (int)$catalogData['SKU_PROPERTY_ID']; } } } return $result; } }