- Модуль: 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;
}