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;
}