• Модуль: 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];
}