/*
##############################################
# 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");
IncludeModuleLangFile(__FILE__);
ClearVars();
$ID = intval($ID);
//CTicket::GetRoles($isDemo, $isSupportClient, $isSupportTeam, $isAdmin, $isAccess, $USER_ID, $CHECK_RIGHTS);
//if(!$isAdmin && !$isDemo) $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
$bDemo = (CTicket::IsDemo()) ? "Y" : "N";
$bAdmin = (CTicket::IsAdmin()) ? "Y" : "N";
if($bAdmin!="Y" && $bDemo!="Y")
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
IncludeModuleLangFile(__FILE__);
$LIST_URL = "/bitrix/admin/ticket_sla_list.php";
$TABLE_NAME = "b_ticket_sla";
$EDIT_URL = $APPLICATION->GetCurPage();
function CheckTime($minute_from, $minute_till)
{
if (mb_strlen($_POST["MINUTE_FROM_".$i."_".$j]) < 0 && mb_strlen($_POST["MINUTE_TILL_".$i."_".$j]) < 0)
return false;
$arFrom = explode(':', $minute_from);
$minute_from = intval($arFrom[0]*60 + $arFrom[1]);
$arTill = explode(':', $minute_till);
$minute_till = intval($arTill[0]*60 + $arTill[1]);
if ($minute_from >= $minute_till)
return false;
if ($minute_from > 1440 || $minute_till > 1440 )
return false;
return true;
}
function CheckShedule($shedule)
{
$iMaxMinute = 0;
foreach ($shedule as $key => $value)
{
$arFrom = explode(':', $value['MINUTE_FROM']);
$minute_from = intval($arFrom[0]*60 + $arFrom[1]);
$arTill = explode(':', $value['MINUTE_TILL']);
$minute_till = intval($arTill[0]*60 + $arTill[1]);
if ($iMaxMinute < $minute_from)
echo $iMaxMinute = $minute_till;
else
return false;
}
return true;
}
/***************************************************************************
Обработка GET | POST
****************************************************************************/
$arrUSER = array();
$message = false;
if (($save <> '' || $apply <> '') && $bAdmin=="Y" && $_SERVER["REQUEST_METHOD"]=="POST" && check_bitrix_sessid())
{
$arFields = array("arSITES"=>Array(), "arGROUPS"=>Array(), "arMARKS"=>Array(), "arCATEGORIES"=>Array(), "arCRITICALITIES"=>Array());
foreach ($_POST as $key => $value)
{
$arFields[$key] = $value;
}
/*
for($i=0; $i<=6; $i++)
{
if (strlen($_POST["OPEN_TIME_".$i])>0)
{
$arFields["arSHEDULE"][$i] = array("OPEN_TIME" => $_POST["OPEN_TIME_".$i]);
if ($_POST["OPEN_TIME_".$i]=="CUSTOM")
{
if (intval(${"custom_time_".$i."_counter"})>0)
{
$bExist = false;
for($j=0; $j<=${"custom_time_".$i."_counter"}; $j++)
{
// проверяем, чтобы время окончания было позже начала
if(CheckTime($_POST["MINUTE_FROM_".$i."_".$j], $_POST["MINUTE_TILL_".$i."_".$j]))
{
$bExist = true;
$arFields["arSHEDULE"][$i]["CUSTOM_TIME"][] = array(
"MINUTE_FROM" => $_POST["MINUTE_FROM_".$i."_".$j],
"MINUTE_TILL" => $_POST["MINUTE_TILL_".$i."_".$j],
);
}
}
if ($bExist)
{
// проверяем корректно ли заданы промежутки времени
if (!CheckShedule($arFields["arSHEDULE"][$i]["CUSTOM_TIME"]))
{
unset($arFields["arSHEDULE"][$i]["CUSTOM_TIME"]);
$bExist = false;
}
}
if (!$bExist) $arFields["arSHEDULE"][$i]["OPEN_TIME"] = "CLOSED";
}
}
}
}*/
$ID = CTicketSLA::Set($arFields, $ID);
if (intval($ID) <= 0)
{
if($e = $APPLICATION->GetException())
{
$message = new CAdminMessage(GetMessage("SUP_ERROR"), $e);
}
else
{
//if($obException = $APPLICATION->GetException()) $strError = $obException->GetString()."
";
//if (strlen($strError)<=0)
//{
}
}
else
{
if ($save <> '')
{
LocalRedirect($LIST_URL."?lang=".LANGUAGE_ID);
}
else
{
LocalRedirect($EDIT_URL."?ID=".$ID."&lang=".LANGUAGE_ID."&tabControl_active_tab=".urlencode($tabControl_active_tab));
}
}
$DB->PrepareFields($TABLE_NAME);
}
$arrSites = array();
$rs = CSite::GetList();
while ($ar = $rs->Fetch())
$arrSites[$ar["ID"]] = $ar;
$arCategory = $arMark = $arCriticality = array();
$rs = CTicketDictionary::GetList("s_dropdown", '', array("TYPE" => "C"));
while($ar = $rs->Fetch()) $arCategory[] = $ar;
$rs = CTicketDictionary::GetList("s_dropdown", '', array("TYPE" => "K"));
while($ar = $rs->Fetch()) $arCriticality[] = $ar;
$rs = CTicketDictionary::GetList("s_dropdown", '', array("TYPE" => "M"));
while($ar = $rs->Fetch()) $arMark[] = $ar;
$rs = CTicketSLA::GetByID($ID);
if (!$rs || !$rs->ExtractFields())
{
$ID=0;
$str_PRIORITY = 100;
//for($i=0;$i<=6;$i++) $arSHEDULE[$i]["OPEN_TIME"] = "24H";
}
else
{
$arGROUPS = CTicketSLA::GetGroupArray($ID);
//$arSHEDULE = CTicketSLA::GetSheduleArray($ID);
$arSITES = CTicketSLA::GetSiteArray($ID);
$arCATEGORIES = CTicketSLA::GetCategoryArray($ID);
$arCRITICALITIES = CTicketSLA::GetCriticalityArray($ID);
$arMARKS = CTicketSLA::GetMarkArray($ID);
}
if ($message)
$DB->InitTableVarsForEdit($TABLE_NAME, "", "str_");
$APPLICATION->SetTitle(($ID>0? GetMessage("SUP_PAGE_TITLE_EDIT_RECORD", array("#ID#"=>$ID)) : GetMessage("SUP_PAGE_TITLE_NEW_RECORD")));
/***************************************************************************
HTML форма
****************************************************************************/
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
$aMenu = array(
array(
"ICON" => "btn_list",
"TEXT" => GetMessage("SUP_RECORD_LIST"),
"LINK" => $LIST_URL."?lang=".LANGUAGE_ID
)
);
if(intval($ID)>0)
{
$aMenu[] = array("SEPARATOR"=>"Y");
$aMenu[] = array(
"ICON" => "btn_new",
"TEXT" => GetMessage("SUP_NEW_RECORD"),
"LINK" => $EDIT_URL."?lang=".LANGUAGE_ID
);
if ($ID>1 && $bAdmin=="Y")
{
$aMenu[] = array(
"ICON" => "btn_delete",
"TEXT" => GetMessage("SUP_DELETE_RECORD"),
"LINK" => "javascript:if(confirm('".GetMessage("SUP_DELETE_RECORD_CONFIRM")."'))window.location='".$LIST_URL."?action=delete&ID=".$ID."&lang=".LANGUAGE_ID."&".bitrix_sessid_get()."';",
);
}
}
//echo ShowSubMenu($aMenu);
$context = new CAdminContextMenu($aMenu);
$context->Show();
if ($message)
{
echo $message->Show();
}
?>