%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/support/classes/mysql/ |
Current File : //home/bitrix/www/bitrix/modules/support/classes/mysql/sla.php |
<? require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/classes/general/sla.php"); class CTicketSLA extends CAllTicketSLA { function err_mess() { $module_id = "support"; @include($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".$module_id."/install/version.php"); return "<br>Module: ".$module_id." <br>Class: CTicketSLA<br>File: ".__FILE__; } // get SLA list function GetList(&$arSort, $arFilter=Array(), &$isFiltered) { $err_mess = (CTicketSLA::err_mess())."<br>Function: GetList<br>Line: "; global $DB, $USER, $APPLICATION; $isFiltered = false; // filter params correct if (CTicket::CheckFilter($arFilter)) { $arSqlSearch = Array(); if (is_array($arFilter) && count($arFilter)>0) { $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) && (strlen($val)<=0 || $val==='NOT_REF'))) { continue; } $matchValueSet = (in_array($key."_EXACT_MATCH", $filterKeys)) ? true : false; $key = strtoupper($key); if (is_array($val)) { $val = implode(" | ",$val); } switch($key) { case "ID": case "SLA_ID": $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $matchValueSet) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("S.".$key,$val,$match); break; case "NAME": case "DESCRIPTION": case "DEADLINE_SOURCE": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $matchValueSet) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("S.".$key, $val, $match); break; case "SITE": $val .= " | ALL"; $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $matchValueSet) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("SS.SITE_ID", $val, $match); $left_join_site = "LEFT JOIN b_ticket_sla_2_site SS ON (S.ID = SS.SLA_ID)"; break; } } } } $strSqlSearch = GetFilterSqlSearch($arSqlSearch); $arSort = is_array($arSort) ? $arSort : array(); if (count($arSort)>0) { $ar1 = array_merge($DB->GetTableFieldsList("b_ticket_sla"), array()); $ar2 = array_keys($arSort); $arDiff = array_diff($ar2, $ar1); if (is_array($arDiff) && count($arDiff)>0) { foreach($arDiff as $value) { unset($arSort[$value]); } } } if (count($arSort)<=0) { $arSort = array("PRIORITY" => "DESC"); } while(list($by, $order) = each($arSort)) { if( strtoupper( $order ) != "DESC" ) { $order="ASC"; } if ($by=="RESPONSE_TIME") { $arSqlOrder[] = "case RESPONSE_TIME_UNIT when 'day' then 3 when 'hour' then 2 when 'minute' then 1 end $order"; $arSqlOrder[] = $by." ".$order; } else { $arSqlOrder[] = $by." ".$order; } } if (is_array($arSqlOrder) && count($arSqlOrder)>0) { $strSqlOrder = " ORDER BY ".implode(",", $arSqlOrder); } $strSql = " SELECT DISTINCT S.*, case S.RESPONSE_TIME_UNIT when 'day' then S.RESPONSE_TIME*1440 when 'hour' then S.RESPONSE_TIME*60 when 'minute' then S.RESPONSE_TIME end M_RESPONSE_TIME, case S.NOTICE_TIME_UNIT when 'day' then S.NOTICE_TIME*1440 when 'hour' then S.NOTICE_TIME*60 when 'minute' then S.NOTICE_TIME end M_NOTICE_TIME, S.ID REFERENCE_ID, S.NAME REFERENCE, ".$DB->DateToCharFunction("S.DATE_MODIFY")." DATE_MODIFY_F, ".$DB->DateToCharFunction("S.DATE_CREATE")." DATE_CREATE_F FROM b_ticket_sla S $left_join_site WHERE $strSqlSearch $strSqlOrder "; $rs = $DB->Query($strSql, false, $err_mess.__LINE__); $isFiltered = (IsFiltered($strSqlSearch)); return $rs; } } ?>