- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/classes/general/task.php
- Класс: CTasks
- Вызов: CTasks::GetChildrenCount
static function GetChildrenCount($filter, $parentIds)
{
if (!$parentIds)
{
return false;
}
global $DB;
$obUserFieldsSql = new CUserTypeSQL;
$obUserFieldsSql->SetEntity("TASKS_TASK", "T.ID");
$obUserFieldsSql->SetFilter($filter);
if (!is_array($filter))
{
$filter = [];
}
$userId = User::getId();
$filter["PARENT_ID"] = $parentIds;
unset($filter["ONLY_ROOT_TASKS"]);
$sqlSearch = CTasks::GetFilter($filter);
$r = $obUserFieldsSql->GetFilter();
if ($r <> '')
{
$sqlSearch[] = "(" . $r . ")";
}
$relatedJoins = static::getRelatedJoins([], $filter, [], ['USER_ID' => $userId]);
$relatedJoins = implode("n", $relatedJoins);
$strSql = "
SELECT T.PARENT_ID, COUNT(T.ID) AS CNT
FROM (";
$strSql .= "
SELECT T.PARENT_ID AS PARENT_ID, T.ID
FROM b_tasks T
INNER JOIN b_user CU ON CU.ID = T.CREATED_BY
INNER JOIN b_user RU ON RU.ID = T.RESPONSIBLE_ID
" . $relatedJoins . "
" . $obUserFieldsSql->GetJoin("T.ID") . "
" . (sizeof($sqlSearch) ? "WHERE " . implode(" AND ", $sqlSearch) : "") . "
GROUP BY T.ID
";
$strSql .= ") T
GROUP BY T.PARENT_ID
";
$res = $DB->Query($strSql, false, "File: " . __FILE__ . "
Line: " . __LINE__);
return $res;
}