- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/internals/database/structure/closuretree.php
- Класс: BitrixTasksInternalsDataBaseStructureClosureTree
- Вызов: ClosureTree::getSubTree
static function getSubTree($id, array $parameters = array(), array $settings = array())
{
/** @var DataManager $dc */
$dc = static::getDataController();
$pCName = static::getParentNodeColumnName();
$cName = static::getNodeColumnName();
$id = intval($id);
$parameters['runtime'][] = new EntityReferenceField(
'TDD',
$dc::getEntity(),
array(
'=ref.'.$cName => 'this.'.$cName,
'=ref.DIRECT' => array('?', '1'),
'!=ref.'.$cName => 'ref.'.$pCName,
),
array(
//'join_type' => 'inner'
)
);
$parameters['filter']['='.$pCName] = $id;
$parameters['select'][] = $cName;
$parameters['select']['ACTUAL_PARENT_ID'] = 'TDD.'.$pCName;
$res = $dc::getList($parameters);
$data = array();
$returnArray = ($settings['RETURN_ARRAY'] ?? null);
if ($returnArray && ($settings['GROUP_PARENT'] ?? null))
{
while($item = $res->fetch())
{
$parentId = $item['ACTUAL_PARENT_ID'];
unset($item['ACTUAL_PARENT_ID']);
$data[intval($parentId)][$item[$cName]] = $item;
}
return $data;
}
while($item = $res->fetch())
{
$item['__PARENT_ID'] = $item['ACTUAL_PARENT_ID'];
$item['__ID'] = $item[$cName];
unset($item['ACTUAL_PARENT_ID']);
unset($item[$cName]);
$data[$item['__ID']] = $item;
}
if ($returnArray)
{
return $data;
}
return new ClosureTreeFragment($data);
}