• Модуль: 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; }