- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/classes/general/task.php
- Класс: CTasks
- Вызов: CTasks::GetDeparmentSql
static function GetDeparmentSql($arDepsIDs, $sAliasPrefix = "", $arParams = [], $behaviour = [])
{
if (!is_array($arDepsIDs))
{
$arDepsIDs = [intval($arDepsIDs)];
}
else
{
$arDepsIDs = array_map('intval', $arDepsIDs);
}
if (!is_array($behaviour))
{
$behaviour = [];
}
if (!isset($behaviour['ALIAS']))
{
$behaviour['ALIAS'] = $sAliasPrefix;
}
if (!isset($arParams['FIELDS']))
{
$arParams['FIELDS'] = [];
}
$a = $sAliasPrefix;
$b = $behaviour;
$f =& $arParams['FIELDS'];
//static::placeFieldSql('CREATED_BY', $b, $f)
$rsDepartmentField = CUserTypeEntity::GetList([], ["ENTITY_ID" => "USER", "FIELD_NAME" => "UF_DEPARTMENT"]);
$cntOfDepartments = count($arDepsIDs);
if ($cntOfDepartments && $arDepartmentField = $rsDepartmentField->Fetch())
{
$strConstraint = $sAliasPrefix . "BUF1.VALUE_INT IN (" . implode(",", $arDepsIDs) . ")";
// EXISTS!
$strSql = "
SELECT
'x'
FROM
b_utm_user " . $sAliasPrefix . "BUF1
WHERE
" . $sAliasPrefix . "BUF1.FIELD_ID = " . $arDepartmentField["ID"] . "
AND
(" . $sAliasPrefix . "BUF1.VALUE_ID = " . static::placeFieldSql('RESPONSIBLE_ID', $b, $f) . "
OR " . $sAliasPrefix . "BUF1.VALUE_ID = " . static::placeFieldSql('CREATED_BY', $b, $f) . "
OR EXISTS(
SELECT 'x'
FROM b_tasks_member " . $sAliasPrefix . "DSTM
WHERE " . $sAliasPrefix . "DSTM.TASK_ID = " . static::placeFieldSql('ID', $b, $f) . "
AND " . $sAliasPrefix . "DSTM.USER_ID = " . $sAliasPrefix . "BUF1.VALUE_ID
)
)
AND
" . $strConstraint . "
";
return $strSql;
}
return false;
}