• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/classes/general/taskitem.php
  • Класс: CTaskItem
  • Вызов: CTaskItem::duplicateChildTasks
public function duplicateChildTasks($cloneTaskInstance)
{
	CTaskAssert::assert($cloneTaskInstance instanceof CTaskItemInterface);

	$duplicates = array();

	try
	{
		$data = $this->getData(false);
	}
	catch (TasksException $e)
	{
		return $duplicates;
	}

	if($data)
	{
		// getting tree data and checking for dead loops
		$queue = array();
		$this->duplicateChildTasksLambda($this, $queue);

		$idMap = array();
		foreach($queue as $taskInstance)
		{
			$data = $taskInstance->getData();

			$cloneInstances = $taskInstance->duplicate(array(
				'PARENT_ID' => isset($idMap[$data['PARENT_ID']]) ? $idMap[$data['PARENT_ID']] : $cloneTaskInstance->getId()
			), array(
				'CLONE_CHILD_TASKS' => false
			));
			if(is_array($cloneInstances) && !empty($cloneInstances))
			{
				$cloneInstance = array_shift($cloneInstances);

				$idMap[$taskInstance->getId()] = $cloneInstance->getId();
				$duplicates[$taskInstance->getId()] = $cloneInstance;
			}
		}
	}

	return $duplicates;
}