require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/prolog.php");
define("HELP_FILE","ticket_list.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/include.php");
if( isset( $_REQUEST["tabControl_active_tab"] ) )
{
unset( $_REQUEST["tabControl_active_tab"] );
}
ClearVars();
$arFILES = array();
$arFiles = array();
$PROPERTY_ID = "SUPPORT";
$bDemo = (CTicket::IsDemo()) ? "Y" : "N";
$bAdmin = (CTicket::IsAdmin()) ? "Y" : "N";
$bSupportClient = (CTicket::IsSupportClient()) ? "Y" : "N";
$bSupportTeam = (CTicket::IsSupportTeam()) ? "Y" : "N";
$message = null;
$messageA = array();
if($bAdmin!="Y" && $bSupportTeam!="Y" && $bDemo!="Y" && $bSupportClient!="Y") $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/include.php");
\Bitrix\Main\Localization\Loc::loadMessages(__FILE__);
$err_mess = "File: ".__FILE__."
Line: ";
define("HELP_FILE","ticket_list.php");
global $USER_FIELD_MANAGER;
/***************************************************************************
Functions
***************************************************************************/
function CheckFields()
{
global $ID, $TITLE, $MESSAGE, $arFILES, $bSupportTeam, $bAdmin;
$max_size = 0;
$arMsg = Array();
if (trim($TITLE) == '' && intval($ID)<=0)
//$str .= GetMessage("SUP_FORGOT_TITLE")."
";
$arMsg[] = array("id"=>"TITLE", "text"=> GetMessage("SUP_FORGOT_TITLE"));
if (trim($MESSAGE) == '' && intval($ID)<=0)
//$str .= GetMessage("SUP_FORGOT_MESSAGE")."
";
$arMsg[] = array("id"=>"MESSAGE", "text"=> GetMessage("SUP_FORGOT_MESSAGE"));
if ($bSupportTeam!="Y" && $bAdmin!="Y")
{
$max_size = COption::GetOptionString("support", "SUPPORT_MAX_FILESIZE");
$max_size = intval($max_size)*1024;
}
if ($max_size>0 && is_array($arFILES) && count($arFILES)>0)
{
$i = -1;
foreach ($arFILES as $key => $arFILE)
{
$i++;
if (intval($arFILE["size"])>$max_size)
$arMsg[] = array("id"=>"FILE_".$i, "text"=> str_replace("#FILE_NAME#", $arFILE["name"], GetMessage("SUP_MAX_FILE_SIZE_EXCEEDING")));
}
}
if(!empty($arMsg))
{
$e = new CAdminException($arMsg);
$GLOBALS["APPLICATION"]->ThrowException($e);
return false;
}
return true;
}
function Support_GetUserInfo($USER_ID, &$login, &$name, $safe_for_html=true)
{
static $arrUsers;
$login = "";
$name = "";
if (intval($USER_ID)>0)
{
if (is_array($arrUsers) && in_array($USER_ID, array_keys($arrUsers)))
{
$login = $arrUsers[$USER_ID]["LOGIN"];
$name = $arrUsers[$USER_ID]["NAME"];
}
else
{
$rsUser = CUser::GetByID($USER_ID);
$arUser = $rsUser->Fetch();
$login = $arUser["LOGIN"];
$name = $arUser["NAME"]." ".$arUser["LAST_NAME"];
$arrUsers[$USER_ID] = array("LOGIN" => $login, "NAME" => $name);
}
if ($safe_for_html)
{
$login = htmlspecialcharsbx($login);
$name = htmlspecialcharsbx($name);
}
}
}
function Support_GetDictionaryInfo($DID, &$name, &$desc, &$sid, $safe_for_html=true)
{
static $arrDic;
$name = "";
$desc = "";
$sid = "";
if (intval($DID)>0)
{
if (is_array($arrDic) && in_array($DID, array_keys($arrDic)))
{
$name = $arrDic[$DID]["NAME"];
$desc = $arrDic[$DID]["DESC"];
$sid = $arrDic[$DID]["SID"];
}
else
{
$rsD = CTicketDictionary::GetByID($DID);
$arD = $rsD->Fetch();
$name = $arD["NAME"];
$desc = $arD["DESCR"];
$sid = $arD["SID"];
$arrDic[$DID] = array("NAME" => $name, "DESC" => $desc, "SID" => $sid);
}
if ($safe_for_html)
{
$name = htmlspecialcharsbx($name);
$desc = htmlspecialcharsbx($desc);
$sid = htmlspecialcharsbx($sid);
}
}
}
function _Support_GetDictionaryInfoEx($arDictionary = Array())
{
//$arID = array_values($arDictionary);
$arID = Array();
foreach ($arDictionary as $dic => $value)
{
if (intval($value) > 0)
$arID[] = $value;
else
$GLOBALS["str_".$dic."_NAME"] = $GLOBALS["str_".$dic."_DESC"] = $GLOBALS["str_".$dic."_SID"] = "";
}
if (!empty($arID))
{
$arTypes = Array(
"C" => "CATEGORY",
"K" => "CRITICALITY",
"S" => "STATUS",
"M" => "MARK",
"F" => "FUA",
"SR" => "SOURCE",
"D" => "DIFFICULTY"
);
$rs = CTicketDictionary::GetList('', '', array("ID"=> $arID));
while ($ar = $rs->Fetch())
{
$dic = $ar["C_TYPE"];
$GLOBALS["str_".$arTypes[$dic]."_NAME"] = $ar["NAME"];
$GLOBALS["str_".$arTypes[$dic]."_DESC"] = $ar["DESCR"];
$GLOBALS["str_".$arTypes[$dic]."_SID"] = $ar["SID"];
}
}
}
function __GetDropDown($TYPE, &$TICKET_DICTIONARY)
{
$arReturn = Array();
if (array_key_exists($TYPE, $TICKET_DICTIONARY))
{
foreach ($TICKET_DICTIONARY[$TYPE] as $key => $value)
{
$arReturn["REFERENCE"][] = $value["REFERENCE"];
$arReturn["REFERENCE_ID"][] = $key;
}
}
return $arReturn;
}
function Support_GetSLAInfo($ID, &$name, &$description, $safe_for_html=true)
{
static $arrSLA;
$name = "";
$description = "";
if (intval($ID)>0)
{
if (is_array($arrSLA) && in_array($ID, array_keys($arrSLA)))
{
$name = $arrSLA[$ID]["NAME"];
$description = $arrSLA[$ID]["DESCRIPTION"];
}
else
{
$rs = CTicketSLA::GetByID($ID);
$ar = $rs->Fetch();
$name = $ar["NAME"];
$description = $ar["DESCRIPTION"];
$arrSLA[$ar["ID"]] = array("NAME" => $ar["NAME"], "DESCRIPTION" => $ar["DESCRIPTION"]);
}
if ($safe_for_html)
{
$name = htmlspecialcharsbx($name);
$description = htmlspecialcharsbx($description);
}
}
}
/***************************************************************************
Work with GET | POST
***************************************************************************/
$ID = intval($ID);
if ($ID<=0) $bOwner = "Y"; else $bOwner = CTicket::IsOwner($ID) ? "Y" : "N";
if ($bDemo=="Y" && $bOwner=="Y")
{
$bSupportClient = "Y";
$bDemo = "N";
}
$TICKET_LIST_URL = $TICKET_LIST_URL <> ''? CUtil::AddSlashes(htmlspecialcharsbx((mb_substr($TICKET_LIST_URL, 0, 4) == 'http'?'':'/').$TICKET_LIST_URL)) : "ticket_list.php";
$TICKET_EDIT_URL = $TICKET_EDIT_URL <> ''? CUtil::AddSlashes(htmlspecialcharsbx((mb_substr($TICKET_EDIT_URL, 0, 4) == 'http'?'':'/').$TICKET_EDIT_URL)) : "ticket_edit.php";
$TICKET_MESSAGE_EDIT_URL = $TICKET_MESSAGE_EDIT_URL <> ''? CUtil::AddSlashes(htmlspecialcharsbx((mb_substr($TICKET_MESSAGE_EDIT_URL, 0, 4) == 'http'?'':'/').$TICKET_MESSAGE_EDIT_URL)) : "ticket_message_edit.php";
if (intval($mdel_id)>0 && check_bitrix_sessid())
{
CTicket::DeleteMessage($mdel_id, "Y");
LocalRedirect($TICKET_EDIT_URL."?ID=".$ID."&lang=".LANGUAGE_ID);
}
if ($action <> '' && check_bitrix_sessid())
{
switch ($action)
{
case "close":
CTicket::SetTicket(array("CLOSE" => "Y"), $ID);
LocalRedirect($TICKET_EDIT_URL."?ID=".$ID."&lang=".LANGUAGE_ID);
break;
case "open":
CTicket::SetTicket(array("CLOSE" => "N"), $ID);
LocalRedirect($TICKET_EDIT_URL."?ID=".$ID."&lang=".LANGUAGE_ID);
break;
case "unmark_spam":
CTicket::UnMarkAsSpam($ID);
LocalRedirect($TICKET_EDIT_URL."?ID=".$ID."&lang=".LANGUAGE_ID);
break;
case "maybe_spam":
CTicket::MarkAsSpam($ID, "N");
LocalRedirect($TICKET_EDIT_URL."?ID=".$ID."&lang=".LANGUAGE_ID);
break;
case "mark_spam":
CTicket::MarkAsSpam($ID);
LocalRedirect($TICKET_EDIT_URL."?ID=".$ID."&lang=".LANGUAGE_ID);
break;
}
}
// if button "Save" pressed
if (($save <> '' || $apply <> '') && $REQUEST_METHOD=="POST" && check_bitrix_sessid())
{
$arFILES = array();
if (is_array($_FILES) && count($_FILES)>0)
{
foreach ($_FILES as $key => $arFILE)
{
if ($arFILE["name"] <> '')
{
$arFILE["MODULE_ID"] = "support";
$arFILES[] = $arFILE;
}
}
}
if (CheckFields())
{
if ($OPEN=="Y") $CLOSE="N";
if ($CLOSE=="Y") $OPEN="N";
if ($bAdmin!="Y" && $bSupportTeam!="Y")
{
$HIDDEN = "N";
$NOT_CHANGE_STATUS = "N";
}
$arFields = array(
"SITE_ID" => $SITE_ID,
"CLOSE" => $CLOSE,
"AUTO_CLOSE_DAYS" => $AUTO_CLOSE_DAYS,
"TITLE" => $TITLE,
"SLA_ID" => $SLA_ID,
"CATEGORY_ID" => $CATEGORY_ID,
"CRITICALITY_ID" => $CRITICALITY_ID,
"STATUS_ID" => $STATUS_ID,
"DIFFICULTY_ID" => $DIFFICULTY_ID,
"MARK_ID" => $MARK_ID,
"TASK_TIME" => $TASK_TIME,
"HOLD_ON" => $HOLD_ON,
"SOURCE_ID" => $SOURCE_ID,
"OWNER_SID" => $OWNER_SID,
"OWNER_USER_ID" => $OWNER_USER_ID,
"MESSAGE_SOURCE_ID" => $MESSAGE_SOURCE_ID,
"MESSAGE_AUTHOR_SID" => $MESSAGE_AUTHOR_SID,
"MESSAGE_AUTHOR_USER_ID" => $MESSAGE_AUTHOR_USER_ID,
"RESPONSIBLE_USER_ID" => $RESPONSIBLE_USER_ID,
"MESSAGE" => $MESSAGE,
"HIDDEN" => $HIDDEN,
"NOT_CHANGE_STATUS" => $NOT_CHANGE_STATUS,
"FILES" => $arFILES,
"SUPPORT_COMMENTS" => $SUPPORT_COMMENTS,
"COUPON" => $COUPON,
);
if ($ID > 0)
{
$arFields['CHANGE_TITLE'] = $TITLE;
}
$NOTIFY = ($HIDDEN=="Y") ? "N" : "Y";
$bSetTicket = false;
if (CTicket::IsAdmin())
$bSetTicket = true;
else
{
$rsTicket = CTicket::GetByID($ID, SITE_ID, $check_rights = "Y", $get_user_name = "N", $get_extra_names = "N");
if ($arTicket = $rsTicket->GetNext())
$bSetTicket = true;
}
if ($bDemo!="Y" && $bAdmin!="Y" && ($bSupportTeam=="Y" && intval($ID) > 0 && !$bSetTicket))
{
// send to ticket list
if ($OWNER_USER_ID!=$USER->GetID())
LocalRedirect($TICKET_LIST_URL."?lang=".LANGUAGE_ID);
}
$USER_FIELD_MANAGER->EditFormAddFields($PROPERTY_ID, $arFields);
$ID = CTicket::SetTicket($arFields, $ID, "Y", $NOTIFY);
if (intval($ID)>0)
{
CTicket::UpdateOnline($ID);
if (isset($_SESSION['TICKET_ID']) && isset($_SESSION['MESSAGE_ID']))
{
$intLastTicketID = $_SESSION['TICKET_ID'];
$arParam = Array(
'SPLIT_TICKET_ID' => $ID,
'SPLIT_TICKET_TITLE' => $TITLE,
'SPLIT_MESSAGE_USER_ID' => $USER->GetID(),
'SPLIT_ATTACH_FILE' => isset($_POST['ATTACH_FILE']) ? $_POST['ATTACH_FILE'] : Array(),
'SOURCE_TICKET_ID' => $intLastTicketID,
'SOURCE_TICKET_TITLE' => $_SESSION['TICKET_TITLE'],
'SOURCE_MESSAGE_ID' => $MESSAGE_SOURCE_ID,
'SOURCE_MESSAGE_NUM' => $_SESSION['MESSAGE_NUM'],
'SOURCE_MESSAGE_DATE' => $_SESSION['MESSAGE_DATE']
);
CTicket::SplitTicket($arParam);
unset($_SESSION['TICKET_ID']);
unset($_SESSION['TICKET_TITLE']);
unset($_SESSION['MESSAGE_ID']);
unset($_SESSION['MESSAGE_NUM']);
unset($_SESSION['MESSAGE_DATE']);
if ($save <> '') // save -> new ticket
LocalRedirect($TICKET_EDIT_URL."?ID=".$ID."&lang=".LANGUAGE_ID);
elseif ($apply <> '') // apply -> original ticket
LocalRedirect($TICKET_EDIT_URL."?ID=".$intLastTicketID."&lang=".LANGUAGE_ID);
}
else
{
if ($save <> '') LocalRedirect($TICKET_LIST_URL."?lang=".LANGUAGE_ID);
elseif ($apply <> '')
{
// change responsible
if ($bDemo!="Y" && $bAdmin!="Y" && ($bSupportTeam=="Y" && $RESPONSIBLE_USER_ID!=$arTicket['RESPONSIBLE_USER_ID']))
{
// send to ticket list
LocalRedirect($TICKET_LIST_URL."?lang=".LANGUAGE_ID);
}
else
{
// else refresh page
LocalRedirect($TICKET_EDIT_URL."?ID=".$ID."&lang=".LANGUAGE_ID);
}
}
}
}
else
{
$e = new CAdminException(array());
$GLOBALS["APPLICATION"]->ThrowException($e);
$ID = intval($_REQUEST['ID']);
}
}
}
$arrSiteRef = array();
$arrSiteID = array();
$rs = CSite::GetList();
while ($ar = $rs->Fetch())
{
$arrSiteRef[] = "[".$ar["ID"]."] ".$ar["NAME"];
$arrSiteID[] = $ar["ID"];
}
$get_user_name = "N";
$get_extra_names = "N";
$ALL_TICKET_FILES = Array();
$arStrUsers = array();
$site_id = (defined("ADMIN_SECTION") && ADMIN_SECTION==true) ? "" : SITE_ID;
$ticket = CTicket::GetByID($ID, $site_id, "Y", $get_user_name, $get_extra_names);
if (!($ticket && $ticket->ExtractFields()))
{
$ID=0;
$str_lang = $TICKET_SITE = (defined("ADMIN_SECTION") && ADMIN_SECTION==true) ? reset($arrSiteID) : SITE_ID;
$str_RESPONSIBLE_USER_ID = intval(COption::GetOptionString('support', 'DEFAULT_RESPONSIBLE_ID', '0'));
}
else
{
$str_lang = $TICKET_SITE = $str_SITE_ID;
if ($str_DATE_CLOSE <> '') $str_CLOSE = "Y";
CTicket::UpdateOnline($ID);
$rsFiles = CTicket::GetFileList("s_id", "asc", array("TICKET_ID" => $ID));
{
while ($arFile = $rsFiles->Fetch())
{
$name = $arFile["ORIGINAL_NAME"] <> '' ? $arFile["ORIGINAL_NAME"] : $arFile["FILE_NAME"];
if ($arFile["EXTENSION_SUFFIX"] <> '')
{
$suffix_length = mb_strlen($arFile["EXTENSION_SUFFIX"]);
$name = mb_substr($name, 0, mb_strlen($name) - $suffix_length);
}
$ALL_TICKET_FILES[$arFile["MESSAGE_ID"]][] = array("HASH" => $arFile["HASH"], "NAME" => $name, "FILE_SIZE" => $arFile["FILE_SIZE"]);
}
}
if ($get_user_name=="N")
{
//Support_GetUserInfo($str_RESPONSIBLE_USER_ID, $str_RESPONSIBLE_LOGIN, $str_RESPONSIBLE_NAME);
//Support_GetUserInfo($str_OWNER_USER_ID, $str_OWNER_LOGIN, $str_OWNER_NAME);
//Support_GetUserInfo($str_CREATED_USER_ID, $str_CREATED_LOGIN, $str_CREATED_NAME);
//Support_GetUserInfo($str_MODIFIED_USER_ID, $str_MODIFIED_BY_LOGIN, $str_MODIFIED_BY_NAME);
}
$arUserIDs = array($str_RESPONSIBLE_USER_ID, $str_OWNER_USER_ID, $str_CREATED_USER_ID, $str_MODIFIED_USER_ID);
$arGuestIDs = array($str_OWNER_GUEST_ID, $str_CREATED_GUEST_ID, $str_MODIFIED_GUEST_ID);
$arStrUsers =CTicket::GetUsersPropertiesArray($arUserIDs, $arGuestIDs);
if ($get_extra_names=="N")
{
/*Support_GetDictionaryInfo($str_CATEGORY_ID, $str_CATEGORY_NAME, $str_CATEGORY_DESC, $str_CATEGORY_SID);
Support_GetDictionaryInfo($str_CRITICALITY_ID, $str_CRITICALITY_NAME, $str_CRITICALITY_DESC, $str_CRITICALITY_SID);
Support_GetDictionaryInfo($str_STATUS_ID, $str_STATUS_NAME, $str_STATUS_DESC, $str_STATUS_SID);
Support_GetDictionaryInfo($str_MARK_ID, $str_MARK_NAME, $str_MARK_DESC, $str_MARK_SID);
Support_GetDictionaryInfo($str_SOURCE_ID, $str_SOURCE_NAME, $str_SOURCE_DESC, $str_SOURCE_SID);*/
$arDictionary = Array(
"CATEGORY" => $GLOBALS["str_CATEGORY_ID"],
"CRITICALITY" => $GLOBALS["str_CRITICALITY_ID"],
"STATUS" => $GLOBALS["str_STATUS_ID"],
"MARK" => $GLOBALS["str_MARK_ID"],
"SOURCE" => $GLOBALS["str_SOURCE_ID"]
);
_Support_GetDictionaryInfoEx($arDictionary);
Support_GetSLAInfo($str_SLA_ID, $str_SLA_NAME, $str_SLA_DESCRIPTION);
}
}
$str_HIDDEN = COption::GetOptionString("support","DEFAULT_VALUE_HIDDEN");
$str_NOTIFY = COption::GetOptionString("support","DEFAULT_VALUE_NOTIFY");
$srt_NOT_CHANGE_STATUS = "";
if($e = $APPLICATION->GetException())
{
$message = new CAdminMessage(GetMessage("SUP_ERROR"), $e);
$DB->InitTableVarsForEdit("b_ticket", "", "str_");
}
if ($ID>0) $sDocTitle = GetMessage("SUP_EDIT_RECORD", array("#ID#" => $ID, "#TITLE#" => htmlspecialcharsback($str_TITLE)));
else $sDocTitle = GetMessage("SUP_NEW_RECORD");
if (($bSupportTeam=="Y" || $bAdmin=="Y" || $bDemo=="Y") && $str_IS_SPAM <> '')
{
if ($str_IS_SPAM=="Y")
$sDocTitle .= " [".GetMessage("SUP_SPAM")."!]";
else
$sDocTitle .= " [".GetMessage("SUP_SPAM")."?]";
}
$APPLICATION->SetTitle($sDocTitle);
if ($ADD_PUBLIC_CHAIN=="Y" || !isset($ADD_PUBLIC_CHAIN))
{
$APPLICATION->AddChainItem(GetMessage("SUP_RECORDS_LIST"), $TICKET_LIST_URL);
}
$VIEW_TICKET_DEFAULT_MODE = COption::GetOptionString("support", "VIEW_TICKET_DEFAULT_MODE");
$DEFAULT_AUTO_CLOSE_DAYS = COption::GetOptionString("support", "DEFAULT_AUTO_CLOSE_DAYS");
$ONLINE_AUTO_REFRESH = COption::GetOptionString("support", "ONLINE_AUTO_REFRESH");
$str_AUTO_CLOSE_DAYS = $str_AUTO_CLOSE_DAYS <> '' ? $str_AUTO_CLOSE_DAYS : $DEFAULT_AUTO_CLOSE_DAYS;
$bResponsible = $bSupportTeam;
$can_select_message_owner = "N";
$can_select_owner = "N";
$can_select_site = "N";
$can_select_sla = "N";
$can_select_category = "N";
$can_select_status = "N";
$can_select_difficulty = "N";
$can_select_responsible = "N";
$can_select_criticality = "N";
$can_select_mark = "N";
$can_select_mode = "N";
$default_mode = "edit";
if ($VIEW_TICKET_DEFAULT_MODE <> '') $default_mode = $VIEW_TICKET_DEFAULT_MODE;
if ($ID>0)
{
if ($bSupportTeam=="Y" || $bAdmin=="Y" || $bDemo=="Y")
{
$can_select_message_owner = "Y";
$can_select_owner = "Y";
$can_select_sla = "Y";
$can_select_site = "Y";
$can_select_category = "Y";
$can_select_status = "Y";
$can_select_difficulty = "Y";
$can_select_responsible = "Y";
$can_select_criticality = "Y";
if ($str_DATE_CLOSE == '' && $VIEW_TICKET_DEFAULT_MODE <> '')
$can_select_mode = "Y";
}
if ($bOwner=="Y")
{
$can_select_criticality = "Y";
$can_select_mark = "Y";
}
}
if ($ID<=0)
{
if (defined("ADMIN_SECTION") && ADMIN_SECTION==true) $can_select_site = "Y";
if ($bSupportTeam=="Y" || $bAdmin=="Y" || $bDemo=="Y")
{
$can_select_owner = "Y";
$can_select_sla = "Y";
$can_select_category = "Y";
$can_select_status = "Y";
$can_select_difficulty = "Y";
$can_select_responsible = "Y";
$can_select_criticality = "Y";
}
if ($bOwner=="Y")
{
$can_select_category = "Y";
$can_select_criticality = "Y";
}
}
if ($can_select_sla=="Y")
{
$TICKET_SLA = (intval($str_SLA_ID)>0) ? $str_SLA_ID : 1;
$arrSlaRef = array();
$arrSlaID = array();
$rs = CTicketSLA::GetDropDown();
while ($ar = $rs->Fetch())
{
$arrSlaRef[] = $ar["REFERENCE"];
$arrSlaID[] = $ar["ID"];
}
}
else $TICKET_SLA = (intval($str_SLA_ID)>0) ? $str_SLA_ID : CTicketSLA::GetForUser($TICKET_SITE);
$arrSUPPORT_TEAM = array();
$TICKET_DICTIONARY = CTicketDictionary::GetDropDownArray($TICKET_SITE, $TICKET_SLA);
$TICKET_DICTIONARY_ALL = CTicketDictionary::GetDropDownArray();
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");?>
$aMenu = array(
array(
"TEXT" => GetMessage("MAIN_ADMIN_MENU_LIST"),
"TITLE" => GetMessage("SUP_RECORDS_LIST"),
"LINK" => "/bitrix/admin/ticket_list.php?lang=".LANGUAGE_ID,
"ICON" => "btn_list",
),
);
if(intval($ID)>0)
{
$aMenu[] = array("SEPARATOR"=>"Y");
$aMenu[] = array(
"TEXT" => GetMessage("MAIN_ADMIN_MENU_CREATE"),
"TITLE" => GetMessage("SUP_CREATE_NEW_TICKET"),
"ICON" => "btn_new",
"LINK" => "/bitrix/admin/ticket_edit.php?lang=".LANGUAGE_ID,
);
if ($str_DATE_CLOSE == '')
{
$aMenu[] = array(
//"ICON" => "btn_close",
"TEXT" => GetMessage("MAIN_ADMIN_MENU_CLOSE"),
"TITLE" => GetMessage("SUP_CLOSE_TICKET"),
"LINK" => "/bitrix/admin/ticket_edit.php?ID=".$ID."&action=close&lang=".LANGUAGE_ID."&".bitrix_sessid_get()
);
}
else
{
$aMenu[] = array(
//"ICON" => "btn_open",
"TEXT" => GetMessage("MAIN_ADMIN_MENU_OPEN"),
"TITLE" => GetMessage("SUP_OPEN_TICKET"),
"LINK" => "/bitrix/admin/ticket_edit.php?ID=".$ID."&action=open&lang=".LANGUAGE_ID."&".bitrix_sessid_get()
);
}
if ($bSupportTeam=="Y" || $bAdmin=="Y")
{
//$aMenu[] = array("NEWBAR"=>"Y");
$arSpamMenu = Array();
if ($str_IS_SPAM <> '')
{
$arSpamMenu[] = array(
"TEXT" => GetMessage("SUP_UNMARK_TICKET"),
"ACTION" => "window.location='/bitrix/admin/ticket_edit.php?ID=".$ID."&action=unmark_spam&lang=".LANGUAGE_ID."&".bitrix_sessid_get()."';"
);
}
if ($str_IS_SPAM!="N")
{
$arSpamMenu[] = array(
"TEXT" => GetMessage("SUP_MARK_AS_POSSIBLE_SPAM"),
"ACTION" => "window.location='/bitrix/admin/ticket_edit.php?ID=".$ID."&action=maybe_spam&lang=".LANGUAGE_ID."&".bitrix_sessid_get()."';"
);
}
if ($str_IS_SPAM!="Y" && $bAdmin=="Y")
{
$arSpamMenu[] = array(
"TEXT" => GetMessage("SUP_MARK_AS_SPAM"),
"ACTION" => "window.location='/bitrix/admin/ticket_edit.php?ID=".$ID."&action=mark_spam&lang=".LANGUAGE_ID."&".bitrix_sessid_get()."';"
);
}
if ($bAdmin=="Y" || $bDemo=="Y")
{
$arSpamMenu[] = array(
"TEXT" => GetMessage("SUP_MARK_AS_SPAM_DELETE"),
"ACTION" => "javascript:if(confirm('".GetMessage("SUP_MARK_AS_SPAM_DELETE_CONFIRM")."')) window.location='/bitrix/admin/ticket_list.php?ID=".$ID."&action=mark_spam_delete&lang=".LANGUAGE_ID."&".bitrix_sessid_get()."';",
);
$aMenu[] = array(
"TEXT" => GetMessage("MAIN_ADMIN_MENU_DELETE"),
"TITLE" => GetMessage("SUP_DELETE_TICKET"),
"ICON" => "btn_delete",
"LINK" => "javascript:if(confirm('".GetMessage("SUP_DELETE_TICKET_CONFIRM")."')) window.location='/bitrix/admin/ticket_list.php?ID=".$ID."&action=delete&redirectafter=Y&lang=".LANGUAGE_ID."&".bitrix_sessid_get()."';",
);
}
if (!empty($arSpamMenu))
{
$aMenu[] = array(
"TEXT" => GetMessage("SUP_MENU_SPAM"),
"TITLE" => GetMessage("SUP_MENU_SPAM_TITLE"),
"MENU" => $arSpamMenu,
);
}
}
}
//echo ShowSubMenu($aMenu);
$context = new CAdminContextMenu($aMenu);
$context->Show();
if ($message)
{
echo $message->Show();
$messageA = $message->GetMessages();
}
/***************************************************************************
HTML form
****************************************************************************/
$hkInst=CHotKeys::getInstance();
$arHK = array("B", "I", "U", "QUOTE", "CODE", "TRANSLIT");
foreach($arHK as $n => $s)
{
$arExecs = $hkInst->GetCodeByClassName("TICKET_EDIT_$s");
echo $hkInst->PrintJSExecs($arExecs);
}
?>
/***************************************************************************
SPLIT MESSAGE
****************************************************************************/
if (isset($_GET['TICKET_ID']) && isset($_GET['MESSAGE_ID']))
{
$_SESSION["TICKET_ID"] = intval($_GET['TICKET_ID']);
$_SESSION["MESSAGE_ID"] = intval($_GET['MESSAGE_ID']);
$ticket = CTicket::GetByID($_SESSION['TICKET_ID'], $site_id, "Y", $get_user_name, $get_extra_names);
if ($ticket && $ticket->ExtractFields())
{
$obUserTiket = $USER->GetByID($str_OWNER_USER_ID);
$arUserTiket = $obUserTiket->Fetch();
$str_OWNER_LOGIN = htmlspecialcharsbx($arUserTiket['LOGIN']);
$str_OWNER_NAME = htmlspecialcharsbx($arUserTiket['NAME']).' '.htmlspecialcharsbx($arUserTiket['LAST_NAME']);
$str_lang = $TICKET_SITE = $str_SITE_ID;
$TICKET_SLA = $str_SLA_ID = CTicketSLA::GetForUser($str_SITE_ID, $str_OWNER_USER_ID);
$str_DIFFICULTY_ID = '';
$str_CRITICALITY_ID = '';
$obTicketMessage = CTicket::GetMessageByID($_SESSION['MESSAGE_ID']);
$arTicketMessage = $obTicketMessage->Fetch();
$MESSAGE = $arTicketMessage['MESSAGE'];
$_SESSION['MESSAGE_NUM'] = intval($arTicketMessage['C_NUMBER']);
$_SESSION['MESSAGE_DATE'] = $arTicketMessage['DATE_CREATE'];
$_SESSION["TICKET_TITLE"] = $str_TITLE;
$str_TITLE = '';
$str_DATE_CLOSE = null;
$arFiles = array();
if ($rsFiles = CTicket::GetFileList("s_id", "asc", array("MESSAGE_ID" => $_SESSION['MESSAGE_ID'])))
{
while ($arFile = $rsFiles->Fetch())
{
$name = $arFile["ORIGINAL_NAME"];
if ($arFile["EXTENSION_SUFFIX"] <> '')
{
$suffix_length = mb_strlen($arFile["EXTENSION_SUFFIX"]);
$name = mb_substr($name, 0, mb_strlen($name) - $suffix_length);
}
$arFile["NAME"] = $name;
$arFiles[] = $arFile;
}
}
}
}
?>