• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/task/dependence.php
  • Класс: BitrixTasksTaskdoes
  • Вызов: does::getRelationHash
static function getRelationHash($id, array $parameters = array())
{
	$id = intval($id);
	$result = array();

	if($id)
	{
		$parameters['select'][] = 'TASK_ID';
		$parameters['select']['TYPE_'] = 'PARENT_NODE.TYPE';
		$parameters['select']['FROM_TASK_ID'] = 'PARENT_NODE.DEPENDS_ON_ID';

		$res = static::getSubTree($id, $parameters, array(
			'INCLUDE_SELF' => true
		));
		$res->addReplacedAliases(array('TYPE_' => 'TYPE'));

		$items = array(); // all items
		$taskIds = array($id => true); // actual task list in bundle
		while($item = $res->fetch())
		{
			$items[] = $item;
			$taskIds[$item['TASK_ID']] = true;
		}

		// due to multiple-parent relations there are extraneous links possibe (came from join)
		// throw them out

		$result = array();
		foreach($items as $item)
		{
			if(isset($taskIds[$item['FROM_TASK_ID']]))
			{
				$pid = $item['FROM_TASK_ID'];
				$result[$pid][$item['TASK_ID']] = $item;
			}
		}
	}

	return $result;
}