• Модуль: support
  • Путь к файлу: ~/bitrix/modules/support/classes/mysql/support.php
  • Класс: CTicket
  • Вызов: CTicket::GetMessageDynamicList
static function GetMessageDynamicList($by = 's_date_create', $order = 'desc', $arFilter = [])
{
	$err_mess = (CTicket::err_mess())."
Function: GetMessageDynamicList
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 "SITE": case "SITE_ID": if (is_array($val)) $val = implode(" | ", $val); $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $matchValueSet) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("T.SITE_ID",$val,$match); break; case "DATE_CREATE_1": if (CheckDateTime($val)) $arSqlSearch[] = "M.DATE_CREATE>=".$DB->CharToDateFunction($val, "SHORT"); break; case "DATE_CREATE_2": if (CheckDateTime($val)) $arSqlSearch[] = "M.DATE_CREATE<".$DB->CharToDateFunction($val, "SHORT")." + INTERVAL 1 DAY"; break; case "OWNER": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $matchValueSet) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("M.OWNER_USER_ID, U.LOGIN, U.LAST_NAME, U.NAME", $val, $match); break; case "OWNER_ID": if (intval($val)>0) $arSqlSearch[] = "M.OWNER_USER_ID = '".intval($val)."'"; elseif ($val==0) $arSqlSearch[] = "(M.OWNER_USER_ID is null or M.OWNER_USER_ID=0)"; break; case "IS_HIDDEN": case "IS_LOG": case "IS_OVERDUE": $arSqlSearch[] = ($val=="Y") ? "M.".$key."='Y'" : "M.".$key."='N'"; 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 M.DATE_CREATE"; else { $strSqlOrder = "ORDER BY M.DATE_CREATE"; } if ($order!="asc") { $strSqlOrder .= " desc "; } $strSql = " SELECT count(M.ID) COUNTER, sum(if(M.EXPIRE_AGENT_DONE='Y', 1, 0)) COUNTER_OVERDUE, DAYOFMONTH(M.DAY_CREATE) CREATE_DAY, MONTH(M.DAY_CREATE) CREATE_MONTH, YEAR(M.DAY_CREATE) CREATE_YEAR FROM b_ticket_message M INNER JOIN b_ticket T ON (T.ID = M.TICKET_ID) LEFT JOIN b_user U ON (M.OWNER_USER_ID = U.ID) WHERE $strSqlSearch GROUP BY TO_DAYS(M.DAY_CREATE) $strSqlOrder "; $res = $DB->Query($strSql, false, $err_mess.__LINE__); return $res; }