- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/manager/task/projectdependence.php
- Класс: Bitrix\Tasks\Manager\Task\should
- Вызов: should::getListByParentEntity
static function getListByParentEntity($userId, $taskId, array $parameters = array())
{
static::checkCanReadTaskThrowException($userId, $taskId);
$data = array();
if($parameters['TYPE'] == self::ALL || $parameters['TYPE'] == self::OUTGOING)
{
throw new \Bitrix\Main\NotImplementedException('Only INGOING');
}
if(!$parameters['DIRECT'])
{
throw new \Bitrix\Main\NotImplementedException('Only DIRECT');
}
$listParameters = array(
'select' => array(
'DEPENDS_ON_ID',
//'DIRECT', // system field, do not select
//'MPCITY', // system field, do not select
'TASK_ID',
'TYPE',
),
'filter' => array('=DIRECT' => '1', '=TASK_ID' => $taskId)
);
if ($parameters['DEPENDS_ON_DATA'] ?? null)
{
$listParameters['select'][static::SE_PREFIX.'DEPENDS_ON_TITLE'] = 'DEPENDS_ON.TITLE';
}
// checking rights on dependent tasks
$mixins = TaskTable::getRuntimeMixins(
array(
array(
'CODE' => 'CHECK_RIGHTS',
'USER_ID' => $userId,
'REF_FIELD' => 'DEPENDS_ON_ID',
'APPLY_FILTER'=>['ID'=> $taskId]
)
)
);
if(!empty($mixins))
{
$listParameters['runtime'] = $mixins;
}
$res = DependenceTable::getList($listParameters);
while($item = $res->fetch())
{
$seDependsOn = array();
foreach($item as $fld => $value)
{
if($fld == static::SE_PREFIX.'DEPENDS_ON_TITLE')
{
$seDependsOn['TITLE'] = $value;
unset($item[$fld]);
}
}
if(!empty($seDependsOn))
{
$seDependsOn['ID'] = $item['DEPENDS_ON_ID'];
$item[static::SE_PREFIX.'DEPENDS_ON'] = $seDependsOn;
}
if (isset($parameters['DROP_PRIMARY']))
{
unset($item['TASK_ID']);
}
$data[] = $item;
}
return array('DATA' => $data, 'CAN' => array());
}