/*
##############################################
# 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";
$message = null;
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 $arFilterFields;
reset($arFilterFields); foreach ($arFilterFields 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 <> '')
$arMsg[] = array("id"=>"find_date2", "text"=> GetMessage("SUP_FROM_TILL_DATE"));
//$str.= GetMessage("SUP_FROM_TILL_DATE")."
";
}
if(!empty($arMsg))
{
$e = new CAdminException($arMsg);
$GLOBALS["APPLICATION"]->ThrowException($e);
return false;
}
return true;
}
/***************************************************************************
Обработка GET | POST
****************************************************************************/
$sTableID = "t_report_graph";
$oSort = new CAdminSorting($sTableID);// инициализация сортировки
$lAdmin = new CAdminList($sTableID, $oSort);// инициализация списка
$filter = new CAdminFilter(
"filter_id",
array(
GetMessage("SUP_F_SITE"),
GetMessage("SUP_F_RESPONSIBLE"),
GetMessage("SUP_F_SLA"),
GetMessage("SUP_F_CATEGORY"),
GetMessage("SUP_F_CRITICALITY"),
GetMessage("SUP_F_STATUS"),
GetMessage("SUP_F_MARK"),
GetMessage("SUP_F_SOURCE"),
GetMessage("SUP_SHOW")
)
);
if($lAdmin->IsDefaultFilter())
{
//$find_date1_DAYS_TO_BACK=90;
$find_date1_DAYS_TO_BACK=1;
//$find_date2 = ConvertTimeStamp(time()-86400, "SHORT");
$find_open = "Y";
$find_close = "Y";
$find_all = "Y";
$find_mess = "Y";
$find_overdue_mess = "Y";
$set_filter = "Y";
}
$FilterArr1 = Array(
"find_site",
"find_responsible",
"find_responsible_id",
"find_responsible_exact_match",
"find_category_id",
"find_criticality_id",
"find_status_id",
"find_sla_id",
"find_mark_id",
"find_source_id",
"find_date1",
"find_date2",
);
$FilterArr2 = Array(
"find_open",
"find_close",
"find_all",
"find_mess",
"find_overdue_mess"
);
$arFilterFields = array_merge($FilterArr1, $FilterArr2);
$lAdmin->InitFilter($arFilterFields);//инициализация фильтра
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,
"SLA" => $find_sla_id,
"CATEGORY" => $find_category_id,
"CRITICALITY" => $find_criticality_id,
"STATUS" => $find_status_id,
"MARK" => $find_mark_id,
"SOURCE" => $find_source_id,
);
}
else
{
if($e = $APPLICATION->GetException())
{
$message = new CAdminMessage(GetMessage("SUP_FILTER_ERROR"), $e);
//$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();
$arrTime = array();
$arrTime["1"] = 0;
$arrTime["1_2"] = 0;
$arrTime["2_3"] = 0;
$arrTime["3_4"] = 0;
$arrTime["4_5"] = 0;
$arrTime["5_6"] = 0;
$arrTime["6_7"] = 0;
$arrTime["7"] = 0;
$arrMess = array();
$arrMess["2_m"] = 0;
$arrMess["3_m"] = 0;
$arrMess["4_m"] = 0;
$arrMess["5_m"] = 0;
$arrMess["6_m"] = 0;
$arrMess["7_m"] = 0;
$arrMess["8_m"] = 0;
$arrMess["9_m"] = 0;
$arrMess["10_m"] = 0;
$arUsersID = array();
while ($arTicket = $rsTickets->Fetch())
{
if ($arTicket["DATE_CREATE_SHORT"]!=$PREV_CREATE && $PREV_CREATE <> '')
{
$show_graph = "Y";
}
if ($arTicket["DATE_CLOSE"] == '')
{
$OPEN_TICKETS++;
}
else
{
$CLOSE_TICKETS++;
$day_sec = 86400;
$TT = $arTicket["TICKET_TIME"];
if ($TT<$day_sec) $arrTime["1"] += 1;
if ($TT>$day_sec && $TT<=2*$day_sec) $arrTime["1_2"] += 1;
if ($TT>2*$day_sec && $TT<=3*$day_sec) $arrTime["2_3"] += 1;
if ($TT>3*$day_sec && $TT<=4*$day_sec) $arrTime["3_4"] += 1;
if ($TT>4*$day_sec && $TT<=5*$day_sec) $arrTime["4_5"] += 1;
if ($TT>5*$day_sec && $TT<=6*$day_sec) $arrTime["5_6"] += 1;
if ($TT>6*$day_sec && $TT<=7*$day_sec) $arrTime["6_7"] += 1;
if ($TT>7*$day_sec) $arrTime["7"] += 1;
$MC = $arTicket["MESSAGES"];
if ($MC<=2) $arrMess["2_m"] += 1;
elseif ($MC>=10) $arrMess["10_m"] += 1;
else $arrMess[$MC."_m"] += 1;
}
$PREV_CREATE = $arTicket["DATE_CREATE_SHORT"];
if (intval($arTicket["RESPONSIBLE_USER_ID"])>0)
{
$arUsersID[] = intval($arTicket["RESPONSIBLE_USER_ID"]);
/*$rsUser = CUser::GetByID($arTicket["RESPONSIBLE_USER_ID"]);
$arUser = $rsUser->Fetch();
$arrSupportUser[$arTicket["RESPONSIBLE_USER_ID"]] = $arUser;*/
}
}
//================
$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())
{
$arrSupportUser[$ar["ID"]] = $ar;
}
//================
$lAdmin->BeginCustomContent();
?>
if ($message)
echo $message->Show();
?>