- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/internals/registry/taskregistry.php
- Класс: BitrixTasksInternalsRegistryTaskRegistry
- Вызов: TaskRegistry::fillDepartments
private function fillDepartments(array $taskIds)
{
$userIds = [];
foreach ($taskIds as $taskId)
{
$this->storage[$taskId]['DEPARTMENTS'] = [
MemberTable::MEMBER_TYPE_RESPONSIBLE => [],
MemberTable::MEMBER_TYPE_ORIGINATOR => [],
MemberTable::MEMBER_TYPE_ACCOMPLICE => [],
MemberTable::MEMBER_TYPE_AUDITOR => [],
];
if (!isset($this->storage[$taskId]['MEMBER_LIST']))
{
continue;
}
foreach($this->storage[$taskId]['MEMBER_LIST'] as $row)
{
$userIds[$row['USER_ID']] = $row['USER_ID'];
}
}
if (empty($userIds))
{
return;
}
$userIds = implode(',', $userIds);
$res = BitrixTasksUtilUser::getList(
[
'filter' => [
'@ID' => new SqlExpression($userIds),
],
'select' => ['ID', 'UF_DEPARTMENT']
]
);
$deps = [];
foreach ($res as $row)
{
if (!is_array($row['UF_DEPARTMENT']) || empty($row['UF_DEPARTMENT']))
{
continue;
}
$deps[$row['ID']] = $row['UF_DEPARTMENT'];
}
foreach ($taskIds as $taskId)
{
if (!isset($this->storage[$taskId]['MEMBER_LIST']))
{
continue;
}
foreach($this->storage[$taskId]['MEMBER_LIST'] as $row)
{
if (!isset($deps[$row['USER_ID']]))
{
continue;
}
$this->storage[$taskId]['DEPARTMENTS'][$row['TYPE']] = array_merge($this->storage[$taskId]['DEPARTMENTS'][$row['TYPE']], $deps[$row['USER_ID']]);
}
}
}