- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/integration/report/internals/task.php
- Класс: BitrixTasksIntegrationReportInternalsTaskTable
- Вызов: TaskTable::getChildrenTasksData
static function getChildrenTasksData($taskId, $parameters = array())
{
$taskId = Assert::expectIntegerPositive($taskId, '$taskId');
if(!is_array($parameters))
{
$parameters = array();
}
// a shame, but no tree struct here, so have to make "recursive" calls...
$queue = array($taskId);
$meetings = array();
$result = array();
$i = -1;
while(!empty($queue))
{
$i++;
$nextId = array_shift($queue);
if(isset($meetings[$nextId]))
{
throw new BitrixTasksException('Task subtree seems to be loopy');
}
$meetings[$nextId] = true;
$nextParams = array_merge_recursive(BitrixTasksInternalsRuntime::cloneFields($parameters), array(
'filter' => array(
'=PARENT_ID' => $nextId
),
'select' => array(
'ID'
)
));
$res = static::getList($nextParams);
while($item = $res->fetch())
{
if(intval($item['ID']))
{
array_unshift($queue, $item['ID']);
$result[$item['ID']] = $item;
}
}
}
return new BitrixMainDBArrayResult($result);
}