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