• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/item/replicator/task/template.php
  • Класс: BitrixTasksItemReplicatorTaskTemplate
  • Вызов: Template::getCreationOrder
private function getCreationOrder(array $subEntitiesData, $srcId)
{
	$walkQueue = array($srcId);
	$treeBundles = array();

	foreach($subEntitiesData as $subTemplate)
	{
		$treeBundles[$subTemplate['BASE_TEMPLATE_ID']][] = $subTemplate['ID'];
	}

	$tree = $treeBundles;
	$met = array();
	while(!empty($walkQueue))
	{
		$topTemplate = array_shift($walkQueue);
		if(isset($met[$topTemplate])) // hey, i`ve met this guy before!
		{
			return false;
		}
		$met[$topTemplate] = true;

		if(is_array($treeBundles[$topTemplate]))
		{
			foreach($treeBundles[$topTemplate] as $template)
			{
				$walkQueue[] = $template;
			}
		}
		unset($treeBundles[$topTemplate]);
	}

	return $tree;
}