• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/classes/general/task.php
  • Класс: CTasks
  • Вызов: CTasks::GetFieldGrouppedByFilter
static function GetFieldGrouppedByFilter($column, $arFilter, $loggedInUserId)
{
	CTaskAssert::assert($loggedInUserId && is_array($arFilter));

	$arSqlSearch = CTasks::GetFilter($arFilter, '', ['USER_ID' => $loggedInUserId]);

	$keysFiltered = CTasks::GetFilteredKeys($arFilter);

	$bNeedJoinFavoritesTable = in_array('FAVORITE', $keysFiltered, true);

	$sql = "SELECT T." . $column . " AS USER_ID, COUNT(T.ID) AS TASKS_CNT
		FROM b_tasks T
		LEFT JOIN b_tasks_viewed TV ON TV.TASK_ID = T.ID AND TV.USER_ID = " . $loggedInUserId . "

		" . ($bNeedJoinFavoritesTable ? "
			LEFT JOIN "
			. FavoriteTable::getTableName()
			. " FVT ON FVT.TASK_ID = T.ID and FVT.USER_ID = '"
			. $loggedInUserId
			/*always int, no sqli*/
			. "'
			" : "") . "

		WHERE " . implode('AND', $arSqlSearch)
		. " GROUP BY T." . $column;

	return $GLOBALS['DB']->query($sql);
}