...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/security/controller/compatible.php
- Класс: Bitrix\Crm\Security\Controller\Compatible
- Вызов: Compatible::getPermissionAttributes
public function getPermissionAttributes(string $permissionEntityType, array $entityIDs): array { $entityIDs = array_unique(array_filter(array_map('intval', $entityIDs))); if (empty($entityIDs)) { return []; } $attributes = []; $entityPrefix = mb_strtoupper($permissionEntityType); $missedEntityIDs = []; foreach ($entityIDs as $entityId) { $entityKey = "{$entityPrefix}_{$entityId}"; if (isset($this->cachedAttrs[$entityKey])) { $attributes[$entityId] = $this->cachedAttrs[$entityKey]; } else { $missedEntityIDs[] = $entityId; } } if (empty($missedEntityIDs)) { return $attributes; } // "SELECT ENTITY_ID, ATTR FROM b_crm_entity_perms WHERE ENTITY = '{$DB->ForSql($permissionEntityType)}' AND ENTITY_ID IN({$missedEntityIDs})" $attributesCollection = Crm\EntityPermsTable::getList([ 'select' => [ 'ENTITY_ID', 'ATTR', ], 'filter' => [ '=ENTITY' => $permissionEntityType, '@ENTITY_ID' => $missedEntityIDs, ] ]); while ($entityAttributesData = $attributesCollection->Fetch()) { $entityId = $entityAttributesData['ENTITY_ID']; $entityAttribute = $entityAttributesData['ATTR']; $attributes[$entityId][] = $entityAttribute; $entityKey = "{$entityPrefix}_{$entityId}"; if (!isset($this->cachedAttrs[$entityKey])) { $this->cachedAttrs[$entityKey] = []; } $this->cachedAttrs[$entityKey][] = $entityAttribute; } return $attributes; }