• Модуль: support
  • Путь к файлу: ~/bitrix/modules/support/classes/mysql/support.php
  • Класс: CTicket
  • Вызов: CTicket::GetDynamicList
static function GetDynamicList($by = 's_date_create', $order = 'desc', $arFilter = [])
{
	$err_mess = (CTicket::err_mess())."
Function: GetDynamicList
Line: "; global $DB; $arSqlSearch = Array(); if (is_array($arFilter)) { $filterKeys = array_keys($arFilter); $filterKeysCount = count($filterKeys); for ($i=0; $i<$filterKeysCount; $i++) { $key = $filterKeys[$i]; $val = $arFilter[$filterKeys[$i]]; if ((is_array($val) && count($val)<=0) || (!is_array($val) && ((string) $val == '' || $val==='NOT_REF'))) continue; $matchValueSet = (in_array($key."_EXACT_MATCH", $filterKeys)) ? true : false; $key = strtoupper($key); switch($key) { case "DATE_CREATE_1": if (CheckDateTime($val)) $arSqlSearch[] = "T.DATE_CREATE>=".$DB->CharToDateFunction($val, "SHORT"); break; case "DATE_CREATE_2": if (CheckDateTime($val)) $arSqlSearch[] = "T.DATE_CREATE<".$DB->CharToDateFunction($val, "SHORT")." + INTERVAL 1 DAY"; break; case "RESPONSIBLE": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $matchValueSet) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("T.RESPONSIBLE_USER_ID, UR.LOGIN, UR.LAST_NAME, UR.NAME", $val, $match); break; case "RESPONSIBLE_ID": if (intval($val)>0) $arSqlSearch[] = "T.RESPONSIBLE_USER_ID = '".intval($val)."'"; elseif ($val==0) $arSqlSearch[] = "(T.RESPONSIBLE_USER_ID is null or T.RESPONSIBLE_USER_ID=0)"; break; case "SLA_ID": case "SLA": $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $matchValueSet) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("T.SLA_ID", $val, $match); break; case "CATEGORY_ID": case "CATEGORY": if (intval($val)>0) $arSqlSearch[] = "T.CATEGORY_ID = '".intval($val)."'"; elseif ($val==0) $arSqlSearch[] = "(T.CATEGORY_ID is null or T.CATEGORY_ID=0)"; break; case "CRITICALITY_ID": case "CRITICALITY": if (intval($val)>0) $arSqlSearch[] = "T.CRITICALITY_ID = '".intval($val)."'"; elseif ($val==0) $arSqlSearch[] = "(T.CRITICALITY_ID is null or T.CRITICALITY_ID=0)"; break; case "STATUS_ID": case "STATUS": if (intval($val)>0) $arSqlSearch[] = "T.STATUS_ID = '".intval($val)."'"; elseif ($val==0) $arSqlSearch[] = "(T.STATUS_ID is null or T.STATUS_ID=0)"; break; case "MARK_ID": case "MARK": if (intval($val)>0) $arSqlSearch[] = "T.MARK_ID = '".intval($val)."'"; elseif ($val==0) $arSqlSearch[] = "(T.MARK_ID is null or T.MARK_ID=0)"; break; case "SOURCE_ID": case "SOURCE": if (intval($val)>0) $arSqlSearch[] = "T.SOURCE_ID = '".intval($val)."'"; elseif ($val==0) $arSqlSearch[] = "(T.SOURCE_ID is null or T.SOURCE_ID=0)"; break; case "DIFFICULTY_ID": case "DIFFICULTY": if (intval($val)>0) $arSqlSearch[] = "T.DIFFICULTY_ID = '".intval($val)."'"; elseif ($val==0) $arSqlSearch[] = "(T.DIFFICULTY_ID is null or T.DIFFICULTY_ID=0)"; break; } } } $strSqlSearch = GetFilterSqlSearch($arSqlSearch); if ($by == "s_date_create") $strSqlOrder = "ORDER BY T.DATE_CREATE"; else { $strSqlOrder = "ORDER BY T.DATE_CREATE"; } if ($order!="asc") { $strSqlOrder .= " desc "; } $strSql = " SELECT count(T.ID) ALL_TICKETS, sum(if(T.DATE_CLOSE is null,1,0)) OPEN_TICKETS, sum(if(T.DATE_CLOSE is null,0,1)) CLOSE_TICKETS, DAYOFMONTH(T.DAY_CREATE) CREATE_DAY, MONTH(T.DAY_CREATE) CREATE_MONTH, YEAR(T.DAY_CREATE) CREATE_YEAR FROM b_ticket T LEFT JOIN b_user UR ON (T.RESPONSIBLE_USER_ID = UR.ID) WHERE $strSqlSearch and T.DAY_CREATE is not null GROUP BY TO_DAYS(T.DAY_CREATE) $strSqlOrder "; $res = $DB->Query($strSql, false, $err_mess.__LINE__); return $res; }