- Модуль: landing
- Путь к файлу: ~/bitrix/modules/landing/lib/internals/site.php
- Класс: BitrixLandingInternalsSiteTable
- Вызов: SiteTable::setAccessFilter
static function setAccessFilter($params)
{
if (
isset($params['filter']['CHECK_PERMISSIONS']) &&
$params['filter']['CHECK_PERMISSIONS'] == 'N'
)
{
return $params;
}
// build filter
$allowedSites = Rights::getAllowedSites();
$buildFilter = Rights::getAccessFilter(
$allowedSites ? ['ID' => $allowedSites] : []
);
if (empty($buildFilter))
{
return $params;
}
// create runtime/filter keys if no exists
if (
!isset($params['filter']) ||
!is_array($params['filter'])
)
{
$params['filter'] = [];
}
if (
!isset($params['runtime']) ||
!is_array($params['runtime'])
)
{
$params['runtime'] = [];
}
if (
!isset($params['group']) ||
!is_array($params['group'])
)
{
$params['group'] = [];
}
//$tasks = Rights::getAccessTasksReferences();
//$readCode = Rights::ACCESS_TYPES['denied'];
$extendedRights = Rights::isExtendedMode();
static $expectedRoles = null;
if ($expectedRoles === null)
{
$expectedRoles = Role::getExpectedRoleIds();
}
// create runtime fields
$runtimeParams = [];
$runtimeParams[] = [
'LOGIC' => 'OR',
'=this.ID' => 'ref.ENTITY_ID',
'=ref.ENTITY_ID' => [0]
];
if ($extendedRights)
{
$runtimeParams['=ref.ROLE_ID'] = [0];
}
else
{
$runtimeParams['=ref.ENTITY_TYPE'] = ['?', Rights::ENTITY_TYPE_SITE];
$runtimeParams['@ref.ROLE_ID'] = [implode(',', $expectedRoles)];
}
$params['runtime'][] = new EntityReferenceField(
'RIGHTS',
'BitrixLandingInternalsRightsTable',
$runtimeParams,
['join_type' => 'INNER']
);
$params['group'][] = 'ID';
// build filter
$params['filter'][] = $buildFilter;
return $params;
}