- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/access/model/templatemodel.php
- Класс: BitrixTasksAccessModelTemplateModel
- Вызов: TemplateModel::getDepartments
private function getDepartments(array $roles = []): array
{
$key = 'DEP_' . static::class . '_' . $this->getId() . '_' . implode(',', $roles);
if (!array_key_exists($key, static::$cache))
{
$members = $this->getMembers();
$userIds = [];
foreach ($members as $role => $ids)
{
if (
empty($roles)
|| in_array($role, $roles)
)
{
$userIds = array_merge($userIds, $ids);
}
}
static::$cache[$key] = [];
if (!empty($userIds))
{
$userIds = implode(',', $userIds);
$res = BitrixTasksUtilUser::getList(
[
'filter' => [
'@ID' => new SqlExpression($userIds),
],
'select' => ['ID', 'UF_DEPARTMENT']
]
);
foreach ($res as $row)
{
if (is_array($row['UF_DEPARTMENT']) && !empty($row['UF_DEPARTMENT']))
{
static::$cache[$key] = array_merge(static::$cache[$key], $row['UF_DEPARTMENT']);
}
}
}
}
return static::$cache[$key];
}