• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/Access/Permission/Catalog/IblockCatalogPermissionStepper.php
  • Класс: BitrixCatalogAccessPermissionCatalogIblockCatalogPermissionStepper
  • Вызов: IblockCatalogPermissionStepper::execute
public function execute(array &$option): bool
{
	if (!Loader::includeModule('iblock'))
	{
		return self::FINISH_EXECUTION;
	}

	$emptyDepartmentTypeFirst = serialize([]);
	$emptyDepartmentTypeSecond = serialize([0]);
	$externalTypes = UserTable::getExternalUserTypes();
	$externalTypes[] = null;
	$filter = [
		'!=UF_DEPARTMENT' => [null, $emptyDepartmentTypeFirst, $emptyDepartmentTypeSecond],
		'!=EXTERNAL_AUTH_ID' => $externalTypes,
	];

	if (isset($option['lastId']))
	{
		$filter['>ID'] = (int)$option['lastId'];
	}

	$userData = UserTable::getList([
			'filter' => $filter,
			'select' => ['ID'],
			'limit' =>  self::PORTION,
		])
		->fetchAll()
	;

	$userIds = array_column($userData, 'ID');
	if ($userIds)
	{
		$this->updateIblockAccess($userIds);
		if (count($userIds) === self::PORTION)
		{
			$option['lastId'] = array_pop($userIds);

			return self::CONTINUE_EXECUTION;
		}
	}

	return self::FINISH_EXECUTION;
}