171 if (!is_array($arUserGroups))
172 $arUserGroups =
array($arUserGroups);
174 if (empty($arUserGroups))
178 if (!is_array($arCatalogGroupsFilter))
179 $arCatalogGroupsFilter =
array($arCatalogGroupsFilter);
181 if (!empty($arCatalogGroupsFilter))
182 $arCatalogGroupsFilter = array_fill_keys($arCatalogGroupsFilter,
true);
189 if (empty($arUserGroups))
192 if (defined(
'CATALOG_SKIP_CACHE') && CATALOG_SKIP_CACHE)
195 while ($priceType = $priceTypeIterator->Fetch())
197 $priceTypeId = (int)$priceType[
'CATALOG_GROUP_ID'];;
198 $key = ($priceType[
'BUY'] ==
'Y' ?
'buy' :
'view');
199 if (
$key ==
'view' && !empty($arCatalogGroupsFilter) && !isset($arCatalogGroupsFilter[$priceTypeId]))
202 unset(
$key, $priceTypeId);
204 unset($priceType, $priceTypeIterator);
216 if ($managedCache->read($cacheTime,
'catalog_group_perms'))
218 $data = $managedCache->get(
'catalog_group_perms');
223 while ($priceType = $priceTypeIterator->Fetch())
225 $priceTypeId = (int)$priceType[
'CATALOG_GROUP_ID'];
226 $groupId = (int)($priceType[
'GROUP_ID']);
227 $key = ($priceType[
'BUY'] ==
'Y' ?
'buy' :
'view');
229 if (!isset(
$data[$groupId]))
234 $data[$groupId][
$key][$priceTypeId] = $priceTypeId;
235 unset(
$key, $groupId, $priceTypeId);
237 unset($priceType, $priceTypeIterator);
240 foreach (
$data as &$groupData)
242 if (!empty($groupData[
'view']))
243 $groupData[
'view'] = array_values($groupData[
'view']);
244 if (!empty($groupData[
'buy']))
245 $groupData[
'buy'] = array_values($groupData[
'buy']);
249 $managedCache->set(
'catalog_group_perms',
$data);
252 foreach ($arUserGroups as &$groupId)
254 if (!isset(
$data[$groupId]))
256 if (!empty(
$data[$groupId][
'view']))
261 if (!empty($arCatalogGroupsFilter) && !isset($arCatalogGroupsFilter[$priceTypeId]))
263 $result[
'view'][$priceTypeId] = $priceTypeId;
267 if (!empty(
$data[$groupId][
'buy']))
271 $result[
'buy'][$priceTypeId] = $priceTypeId;