• Модуль: support
  • Путь к файлу: ~/bitrix/modules/support/classes/mysql/support.php
  • Класс: CTicket
  • Вызов: CTicket::GetMessageList
static function GetMessageList($by = 's_number', $order = 'asc', $arFilter = [], $isFiltered = null, $checkRights = "Y", $getUserName = "Y")
{
	$err_mess = (CTicket::err_mess())."
Function: GetMessageList
Line: "; global $DB, $USER, $APPLICATION; if ($checkRights=="Y") { $bAdmin = (CTicket::IsAdmin()) ? "Y" : "N"; $bSupportTeam = (CTicket::IsSupportTeam()) ? "Y" : "N"; $bSupportClient = (CTicket::IsSupportClient()) ? "Y" : "N"; $bDemo = (CTicket::IsDemo()) ? "Y" : "N"; } else { $bAdmin = "Y"; $bSupportTeam = "Y"; $bSupportClient = "Y"; $bDemo = "Y"; } if ($bAdmin!="Y" && $bSupportTeam!="Y" && $bSupportClient!="Y" && $bDemo!="Y") return false; $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 "ID": $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $matchValueSet) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("M.ID",$val,$match); break; case "TICKET_ID": $arSqlSearch[] = "M.TICKET_ID = ".intval($val); break; case "TICKET": $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $matchValueSet) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("M.TICKET_ID",$val,$match); break; case "IS_MESSAGE": $arSqlSearch[] = ($val=="Y") ? "(M.IS_HIDDEN = 'N' and M.IS_LOG='N' and M.IS_OVERDUE='N')" : "(M.IS_HIDDEN = 'Y' or M.IS_LOG='Y' or M.IS_OVERDUE='Y')"; break; case "IS_HIDDEN": case "IS_LOG": case "IS_OVERDUE": case "NOT_CHANGE_STATUS": case "MESSAGE_BY_SUPPORT_TEAM": $arSqlSearch[] = ($val=="Y") ? "M.".$key."='Y'" : "M.".$key."='N'"; break; case "EXTERNAL_FIELD_1": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $matchValueSet) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("M.EXTERNAL_FIELD_1", $val, $match); break; } } } if ($getUserName=="Y") { $u_select = " , UO.EMAIL OWNER_EMAIL, UO.LOGIN OWNER_LOGIN, concat(ifnull(UO.NAME,''),' ',ifnull(UO.LAST_NAME,'')) OWNER_NAME, UO.LOGIN LOGIN, concat(ifnull(UO.NAME,''),' ',ifnull(UO.LAST_NAME,'')) NAME, UC.EMAIL CREATED_EMAIL, UC.LOGIN CREATED_LOGIN, concat(ifnull(UC.NAME,''),' ',ifnull(UC.LAST_NAME,'')) CREATED_NAME, UM.EMAIL MODIFIED_EMAIL, UM.LOGIN MODIFIED_LOGIN, concat(ifnull(UM.NAME,''),' ',ifnull(UM.LAST_NAME,'')) MODIFIED_NAME "; $u_join = " LEFT JOIN b_user UO ON (UO.ID = M.OWNER_USER_ID) LEFT JOIN b_user UC ON (UC.ID = M.CREATED_USER_ID) LEFT JOIN b_user UM ON (UM.ID = M.MODIFIED_USER_ID) "; } if ($bSupportTeam!="Y" && $bAdmin!="Y") { $arSqlSearch[] = "M.IS_HIDDEN='N'"; $arSqlSearch[] = "M.IS_LOG='N'"; } $strSqlSearch = GetFilterSqlSearch($arSqlSearch); if ($by == "s_id") $strSqlOrder = "ORDER BY M.ID"; elseif ($by == "s_number") $strSqlOrder = "ORDER BY M.C_NUMBER"; else { $strSqlOrder = "ORDER BY M.C_NUMBER"; } if ($order=="desc") { $strSqlOrder .= " desc "; } else { $strSqlOrder .= " asc "; } $strSql = " SELECT M.*, T.SLA_ID, ".$DB->DateToCharFunction("M.DATE_CREATE")." DATE_CREATE, ".$DB->DateToCharFunction("M.TIMESTAMP_X")." TIMESTAMP_X, DS.NAME SOURCE_NAME $u_select FROM b_ticket_message M INNER JOIN b_ticket T ON (T.ID = M.TICKET_ID) LEFT JOIN b_ticket_dictionary DS ON (DS.ID = M.SOURCE_ID) $u_join WHERE $strSqlSearch $strSqlOrder "; $res = $DB->Query($strSql, false, $err_mess.__LINE__); return $res; }