• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/util/scheduler.php
  • Класс: BitrixTasksUtilScheduler
  • Вызов: Scheduler::getTaskRelationHash
protected function getTaskRelationHash()
{
	$id = $this->taskId;
	$result = array();

	if($id)
	{
		global $DB;

		$sql = DependenceTable::getSubTreeSql($id);
		$res = $DB->query($sql);

		$items = array(); // all items
		$taskData = array($id => true); // actual task list in bundle
		while($item = $res->fetch())
		{
			// make datetime objects
			if($item['CREATED_DATE'])
			{
				$item['CREATED_DATE'] = DateTime::createFromUserTimeGmt($item['CREATED_DATE']);
			}
			if($item['START_DATE_PLAN'])
			{
				$item['START_DATE_PLAN'] = DateTime::createFromUserTimeGmt($item['START_DATE_PLAN']);
			}
			if($item['END_DATE_PLAN'])
			{
				$item['END_DATE_PLAN'] = DateTime::createFromUserTimeGmt($item['END_DATE_PLAN']);
			}

			$items[] = $item;

			$taskId = $item['TASK_ID'];
			unset($item['TASK_ID']);
			unset($item['TYPE']);
			unset($item['FROM_TASK_ID']);

			$taskData[$taskId] = $item;
		}

		$relations = array();
		foreach($items as $item)
		{
			if(isset($taskData[$item['FROM_TASK_ID']])) // due to multiple-parent relations there are extraneous links possibe (came from join)
			{
				$pid = $item['FROM_TASK_ID'];

				$relations[$pid][$item['TASK_ID']] = array(
					'TASK_ID' => $item['TASK_ID'],
					'TYPE' => $item['TYPE'],
					'FROM_TASK_ID' => $item['FROM_TASK_ID'],
				);
			} // else skip this relation
		}

		$this->makeRelationTree($this->taskId, $relations, $taskData);

		$filteredRelations = array();
	}
}