/*
##############################################
# Bitrix: SiteManager #
# Copyright (c) 2004 Bitrix #
# http://www.bitrix.ru #
# mailto:admin@bitrix.ru #
##############################################
*/
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/prolog.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/include.php");
$bDemo = (CTicket::IsDemo()) ? "Y" : "N";
$bAdmin = (CTicket::IsAdmin()) ? "Y" : "N";
$bSupportTeam = (CTicket::IsSupportTeam()) ? "Y" : "N";
if($bAdmin!="Y" && $bSupportTeam!="Y" && $bDemo!="Y") $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/include.php");
IncludeModuleLangFile(__FILE__);
include($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/colors.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/img.php");
/***************************************************************************
Функции
***************************************************************************/
function CheckFilter() // проверка введенных полей
{
global $strError, $FilterArr;
reset($FilterArr); foreach ($FilterArr as $f) global $$f;
$str = "";
$arMsg = Array();
if (trim($find_date1) <> '' || trim($find_date2) <> '')
{
$date_1_ok = false;
$date1_stm = MkDateTime(ConvertDateTime($find_date1,"D.M.Y"),"d.m.Y");
$date2_stm = MkDateTime(ConvertDateTime($find_date2,"D.M.Y")." 23:59","d.m.Y H:i");
if (!$date1_stm && trim($find_date1) <> '')
//$str.= GetMessage("SUP_WRONG_DATE_FROM")."
";
$arMsg[] = array("id"=>"find_date1", "text"=> GetMessage("SUP_WRONG_DATE_FROM"));
else
$date_1_ok = true;
if (!$date2_stm && trim($find_date2) <> '')
//$str.= GetMessage("SUP_WRONG_DATE_TILL")."
";
$arMsg[] = array("id"=>"find_date2", "text"=> GetMessage("SUP_WRONG_DATE_TILL"));
elseif ($date_1_ok && $date2_stm <= $date1_stm && $date2_stm <> '')
//$str.= GetMessage("SUP_FROM_TILL_DATE")."
";
$arMsg[] = array("id"=>"find_date2", "text"=> GetMessage("SUP_FROM_TILL_DATE"));
}
if(!empty($arMsg))
{
$e = new CAdminException($arMsg);
$GLOBALS["APPLICATION"]->ThrowException($e);
return false;
}
return true;
}
function fill_all_values($sid, $type, $mess=false, $site=false)
{
global $arrTickets, $arrT, $MESS;
if(is_array($site))
{
$site = implode("|", $site);
}
$z = ($type=="SLA") ? CTicketSLA::GetDropDown($site) : CTicketDictionary::GetList("s_dropdown", "asc", array("TYPE" => $type, "SITE" => $site));
if ($type!="SLA")
{
if ($mess===false) $mess = GetMessage("SUP_NO");
$arrTickets[$sid][0]["NAME"] = "(".$mess.")";
$arrTickets[$sid][0]["COUNTER_OPEN"] = $arrT[$sid][0]["COUNTER_OPEN"];
$arrTickets[$sid][0]["COUNTER_OPEN_RED"] = $arrT[$sid][0]["COUNTER_OPEN_RED"];
$arrTickets[$sid][0]["COUNTER_OPEN_GREEN"] = $arrT[$sid][0]["COUNTER_OPEN_GREEN"];
$arrTickets[$sid][0]["COUNTER_CLOSE"] = $arrT[$sid][0]["COUNTER_CLOSE"];
$arrTickets[$sid][0]["MESSAGES_OPEN"] = $arrT[$sid][0]["MESSAGES_OPEN"];
$arrTickets[$sid][0]["OVERDUE_MESSAGES_OPEN"] = $arrT[$sid][0]["OVERDUE_MESSAGES_OPEN"];
$arrTickets[$sid][0]["MESSAGES_CLOSE"] = $arrT[$sid][0]["MESSAGES_CLOSE"];
$arrTickets[$sid][0]["OVERDUE_MESSAGES_CLOSE"] = $arrT[$sid][0]["OVERDUE_MESSAGES_CLOSE"];
}
while ($zr = $z->Fetch())
{
$arrTickets[$sid][$zr["ID"]]["NAME"] = "[".$zr["ID"]."] ".htmlspecialcharsbx($zr["NAME"]);
$arrTickets[$sid][$zr["ID"]]["COUNTER_OPEN"] = $arrT[$sid][$zr["ID"]]["COUNTER_OPEN"];
$arrTickets[$sid][$zr["ID"]]["COUNTER_OPEN_RED"] = $arrT[$sid][$zr["ID"]]["COUNTER_OPEN_RED"];
$arrTickets[$sid][$zr["ID"]]["COUNTER_OPEN_GREEN"] = $arrT[$sid][$zr["ID"]]["COUNTER_OPEN_GREEN"];
$arrTickets[$sid][$zr["ID"]]["COUNTER_CLOSE"] = $arrT[$sid][$zr["ID"]]["COUNTER_CLOSE"];
$arrTickets[$sid][$zr["ID"]]["MESSAGES_OPEN"] = $arrT[$sid][$zr["ID"]]["MESSAGES_OPEN"];
$arrTickets[$sid][$zr["ID"]]["OVERDUE_MESSAGES_OPEN"] = $arrT[$sid][$zr["ID"]]["OVERDUE_MESSAGES_OPEN"];
$arrTickets[$sid][$zr["ID"]]["MESSAGES_CLOSE"] = $arrT[$sid][$zr["ID"]]["MESSAGES_CLOSE"];
$arrTickets[$sid][$zr["ID"]]["OVERDUE_MESSAGES_CLOSE"] = $arrT[$sid][$zr["ID"]]["OVERDUE_MESSAGES_CLOSE"];
}
}
function sup_sort($a,$b)
{
$sort1 = intval($a["COUNTER_OPEN"])+intval($a["COUNTER_CLOSE"]);
$sort2 = intval($b["COUNTER_OPEN"])+intval($b["COUNTER_CLOSE"]);
if ($sort1==$sort2) return 0;
if ($sort1<$sort2) return 1; else return -1;
}
/***************************************************************************
Обработка GET | POST
****************************************************************************/
$sTableID = "t_ticket_desktop";
$oSort = new CAdminSorting($sTableID);// инициализация сортировки
$lAdmin = new CAdminList($sTableID, $oSort);// инициализация списка
$filter = new CAdminFilter(
$sTableID."_filter_id",
array(
GetMessage("SUP_F_SITE"),
GetMessage("SUP_F_RESPONSIBLE"),
)
);
if ($set_default=="Y" && !isset($_SESSION["SESS_ADMIN"][$sTableID]) || empty($_SESSION["SESS_ADMIN"][$sTableID]) )
{
$find_date1_DAYS_TO_BACK=1;
//$find_date2 = ConvertTimeStamp(time()-86400, "SHORT");
$set_filter = "Y";
}
$FilterArr = Array(
"find_date1","find_date2",
"find_site",
"find_responsible_id","find_responsible","find_responsible_exact_match",
);
$lAdmin->InitFilter($FilterArr);//инициализация фильтра
if ($bAdmin!="Y" && $bDemo!="Y") $find_responsible_id = $USER->GetID();
InitBVar($find_responsible_exact_match);
if (CheckFilter())
{
$arFilter = Array(
"SITE" => $find_site,
"DATE_CREATE_1" => $find_date1,
"DATE_CREATE_2" => $find_date2,
"RESPONSIBLE_ID" => $find_responsible_id,
"RESPONSIBLE" => $find_responsible,
"RESPONSIBLE_EXACT_MATCH" => $find_responsible_exact_match
);
}
else
{
if($e = $APPLICATION->GetException())
$message = new CAdminMessage(GetMessage("SUP_FILTER_ERROR"), $e);
}
global $by, $order;
$rsTickets = CTicket::GetList($by, $order, $arFilter, null, "Y", "N", "N");
$OPEN_TICKETS = $CLOSE_TICKETS = 0;
$arrTickets = array();
$arrValues = array(
"STATUS",
"CATEGORY",
"CRITICALITY",
"SOURCE",
"MARK",
"SLA",
"DIFFICULTY"
);
$arUsersID = array();
$arrT = array();
while ($arTicket = $rsTickets->Fetch())
{
$mess_count = $arTicket["MESSAGES"];
$mess_overdue_count = $arTicket["OVERDUE_MESSAGES"];
if (intval($arTicket["RESPONSIBLE_USER_ID"])>0)
{
/*$rsUser = CUser::GetByID($arTicket["RESPONSIBLE_USER_ID"]);
$arUser = $rsUser->Fetch();
$arrSupportUser[$arTicket["RESPONSIBLE_USER_ID"]] = $arUser;*/
$arUsersID[] = intval($arTicket["RESPONSIBLE_USER_ID"]);
//$R_NAME = "[".$arTicket["RESPONSIBLE_USER_ID"]."] (".htmlspecialcharsbx($arUser["LOGIN"]).") ".htmlspecialcharsbx($arUser["NAME"])." ".htmlspecialcharsbx($arUser["LAST_NAME"]);
}
else
{
//$R_NAME = "(".GetMessage("SUP_NO").")";
$arrT["RESPONSIBLE"][intval($arTicket["RESPONSIBLE_USER_ID"])]["NAME"] = "(".GetMessage("SUP_NO").")";
}
reset($arrValues);
foreach ($arrValues as $v)
$arrT[$v][intval($arTicket[$v."_ID"])]["ID"] = intval($arTicket[$v."_ID"]);
if ($arTicket["DATE_CLOSE"] == '')
{
$OPEN_TICKETS++;
$OPEN_MESSAGES += $mess_count;
$OPEN_OVERDUE_MESSAGES += $mess_overdue_count;
reset($arrValues);
foreach ($arrValues as $v)
{
$arrT[$v][intval($arTicket[$v."_ID"])]["COUNTER_OPEN"] += 1;
if ($arTicket["LAST_MESSAGE_BY_SUPPORT_TEAM"]=="Y")
$arrT[$v][intval($arTicket[$v."_ID"])]["COUNTER_OPEN_GREEN"] += 1;
elseif ($arTicket["LAST_MESSAGE_BY_SUPPORT_TEAM"]=="N")
$arrT[$v][intval($arTicket[$v."_ID"])]["COUNTER_OPEN_RED"] += 1;
}
reset($arrValues);
foreach ($arrValues as $v)
{
$arrT[$v][intval($arTicket[$v."_ID"])]["MESSAGES_OPEN"] += $mess_count;
$arrT[$v][intval($arTicket[$v."_ID"])]["OVERDUE_MESSAGES_OPEN"] += $mess_overdue_count;
}
$arrT["RESPONSIBLE"][intval($arTicket["RESPONSIBLE_USER_ID"])]["COUNTER_OPEN"] += 1;
$arrT["RESPONSIBLE"][intval($arTicket["RESPONSIBLE_USER_ID"])]["MESSAGES_OPEN"] += $mess_count;
$arrT["RESPONSIBLE"][intval($arTicket["RESPONSIBLE_USER_ID"])]["OVERDUE_MESSAGES_OPEN"] += $mess_overdue_count;
if ($arTicket["LAST_MESSAGE_BY_SUPPORT_TEAM"]=="Y")
{
$OPEN_TICKETS_GREEN++;
$arrT["RESPONSIBLE"][intval($arTicket["RESPONSIBLE_USER_ID"])]["COUNTER_OPEN_GREEN"] += 1;
}
elseif ($arTicket["LAST_MESSAGE_BY_SUPPORT_TEAM"]!="Y")
{
$OPEN_TICKETS_RED++;
$arrT["RESPONSIBLE"][intval($arTicket["RESPONSIBLE_USER_ID"])]["COUNTER_OPEN_RED"] += 1;
}
}
else
{
$CLOSE_TICKETS++;
$CLOSE_MESSAGES += $mess_count;
$CLOSE_OVERDUE_MESSAGES += $mess_overdue_count;
reset($arrValues);
foreach ($arrValues as $v)
$arrT[$v][intval($arTicket[$v."_ID"])]["COUNTER_CLOSE"] += 1;
reset($arrValues);
foreach ($arrValues as $v)
{
$arrT[$v][intval($arTicket[$v."_ID"])]["MESSAGES_CLOSE"] += $mess_count;
$arrT[$v][intval($arTicket[$v."_ID"])]["OVERDUE_MESSAGES_CLOSE"] += $mess_overdue_count;
}
$arrT["RESPONSIBLE"][intval($arTicket["RESPONSIBLE_USER_ID"])]["COUNTER_CLOSE"] += 1;
$arrT["RESPONSIBLE"][intval($arTicket["RESPONSIBLE_USER_ID"])]["MESSAGES_CLOSE"] += $mess_count;
$arrT["RESPONSIBLE"][intval($arTicket["RESPONSIBLE_USER_ID"])]["OVERDUE_MESSAGES_CLOSE"] += $mess_overdue_count;
}
}
if(count($arUsersID) > 0)
{
$arrSupportUser = array();
$arUsersID = array_unique($arUsersID);
$strUsers = implode("|", $arUsersID);
$rs = CUser::GetList('id', 'asc', array( "ID" => $strUsers), array("FIELDS"=>array("NAME","LAST_NAME","LOGIN","ID")));
while($ar = $rs->Fetch())
{
$arrT["RESPONSIBLE"][$ar["ID"]]["NAME"] = "[" . $ar["ID"] . "] " .
htmlspecialcharsbx("(" . $ar["LOGIN"] . ") " . $ar["NAME"] . " " . $ar["LAST_NAME"]);
$arrSupportUser[$ar["ID"]] = $ar;
}
}
// сортировка порядка вывода таблиц
$arrTickets["RESPONSIBLE"] = $arrT["RESPONSIBLE"];
fill_all_values("CRITICALITY", "K", false, $find_site);
fill_all_values("STATUS", "S", false, $find_site);
fill_all_values("DIFFICULTY", "D", false, $find_site);
fill_all_values("CATEGORY", "C", false, $find_site);
fill_all_values("SOURCE", "SR", "web", $find_site);
fill_all_values("MARK", "M", false, $find_site);
fill_all_values("SLA", "SLA", false, $find_site);
// сортировка значений внутри таблиц
if (is_array($arrTickets["RESPONSIBLE"])) uasort($arrTickets["RESPONSIBLE"], "sup_sort");
if (is_array($arrTickets["CRITICALITY"])) uasort($arrTickets["CRITICALITY"], "sup_sort");
if (is_array($arrTickets["STATUS"])) uasort($arrTickets["STATUS"], "sup_sort");
if (is_array($arrTickets["DIFFICULTY"])) uasort($arrTickets["DIFFICULTY"], "sup_sort");
if (is_array($arrTickets["CATEGORY"])) uasort($arrTickets["CATEGORY"], "sup_sort");
if (is_array($arrTickets["SOURCE"])) uasort($arrTickets["SOURCE"], "sup_sort");
if (is_array($arrTickets["MARK"])) uasort($arrTickets["MARK"], "sup_sort");
if (is_array($arrTickets["SLA"])) uasort($arrTickets["SLA"], "sup_sort");
// filter parameters for ticket list urls
$tlist_filter_pass = '';
$tlist_filter_pass_array = array();
foreach ($_GET as $k => $v)
{
if (mb_strpos($k, 'find_') === 0)
{
$tlist_filter_pass_array[$k] = $v;
}
}
if (count($tlist_filter_pass_array))
{
$tlist_filter_pass = '&' . http_build_query($tlist_filter_pass_array);
$tlist_filter_pass = str_replace('find_date', 'find_date_create', $tlist_filter_pass);
}
$lAdmin->BeginCustomContent();?>
"> |
"> |
">
|
Fatal error: Uncaught Error: Call to undefined function GetMessage() in D:\ktt\ttepla.com\public_html\bitrix\modules\support\admin\ticket_desktop.php:336 Stack trace: #0 {main} thrown in D:\ktt\ttepla.com\public_html\bitrix\modules\support\admin\ticket_desktop.php on line 336 |