• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/product/catalogprovider.php
  • Класс: BitrixCatalogProductCatalogProvider
  • Вызов: CatalogProvider::getStoreIds
private function getStoreIds(): array
	{
		$context = $this->getContext();

		$filterId = [
			'ACTIVE' => 'Y',
		];
		if (isset($context['SITE_ID']) && $context['SITE_ID'] !== '')
		{
			$filterId['+SITE_ID'] = $context['SITE_ID'];
		}

		$cacheId = md5(serialize($filterId));
		$storeIds = static::getHitCache(self::CACHE_STORE, $cacheId);
		if (empty($storeIds))
		{
			$storeIds = [];

			$filter = MainEntityQuery::filter();
			$filter->where('ACTIVE', '=', 'Y');
			if (isset($context['SITE_ID']) && $context['SITE_ID'] != '')
			{
				$subFilter = MainEntityQuery::filter();
				$subFilter->logic('or')->where('SITE_ID', '=', $context['SITE_ID'])->where('SITE_ID', '=', '')->whereNull('SITE_ID');
				$filter->where($subFilter);
				unset($subFilter);
			}

			$iterator = CatalogStoreTable::getList([
				'select' => ['ID', 'SORT'],
				'filter' => $filter,
				'order' => ['SORT' => 'ASC', 'ID' => 'ASC']
			]);
			while ($row = $iterator->fetch())
			{
				$storeIds[] = (int)$row['ID'];
			}
			unset($row, $iterator, $filter);
			if (!empty($storeIds))
			{
				static::setHitCache(self::CACHE_STORE, $cacheId, $storeIds);
			}
		}
		unset($cacheId, $filterId);

		return $storeIds;
	}