• Модуль: timeman
  • Путь к файлу: ~/bitrix/modules/timeman/lib/helper/form/schedule/scheduleformhelper.php
  • Класс: BitrixTimemanHelperFormScheduleScheduleFormHelper
  • Вызов: ScheduleFormHelper::fillScheduleSignMap
private function fillScheduleSignMap($parentSign, $selfCode, &$signMap)
{
	$signMap[$selfCode] = $this->getSign($parentSign, $selfCode, $signMap);

	static $directChildrenUsersMap = [];
	if (
		EntityCodesHelper::isDepartment($selfCode)
		&& ($directChildrenUsersMap[$selfCode] ?? null) === null
	)
	{
		$directChildrenUsersMap[$selfCode] = EntityCodesHelper::buildUserCodes(
			$this->departmentRepository->getUsersOfDepartment(EntityCodesHelper::getDepartmentId($selfCode))
		);
	}
	static $directChildrenMap = null;
	if ($directChildrenMap === null)
	{
		$directChildrenMap = $this->departmentRepository->getDepartmentsTree();
		foreach ($directChildrenMap as $index => $data)
		{
			$directChildrenMap[EntityCodesHelper::buildDepartmentCode($index)] = EntityCodesHelper::buildDepartmentCodes($data);
			unset($directChildrenMap[$index]);
		}
		$directChildrenMap = array_filter($directChildrenMap);
	}
	if (array_key_exists($selfCode, $directChildrenMap))
	{
		foreach ($directChildrenMap[$selfCode] as $childCode)
		{
			$this->fillScheduleSignMap($signMap[$selfCode], $childCode, $signMap);
		}
	}
	if (array_key_exists($selfCode, $directChildrenUsersMap))
	{
		foreach ($directChildrenUsersMap[$selfCode] as $userCode)
		{
			$signMap[$userCode] = $this->getSign($signMap[$selfCode], $userCode, $signMap);

			$this->fillScheduleSignMap($signMap[$userCode], $userCode, $signMap);
		}
	}
}