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");
ClearVars();
$bDemo = (CTicket::IsDemo()) ? "Y" : "N";
$bAdmin = (CTicket::IsAdmin()) ? "Y" : "N";
$strError = null;
if($bAdmin!="Y" && $bDemo!="Y") $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/include.php");
IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/admin/ticket_message_edit.php");
$err_mess = "File: ".__FILE__."
Line: ";
define("HELP_FILE","ticket_list.php");
/***************************************************************************
Функции
***************************************************************************/
function CheckFields() // проверка на наличие обязательных полей
{
global $arrFILES, $bAdmin, $bSupportTeam;
$arMsg = Array();
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($arrFILES) && count($arrFILES)>0)
{
$i = 0;
foreach ($arrFILES 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")));
//$str .= 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;
}
/***************************************************************************
Обработка GET | POST
***************************************************************************/
$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";
$arFiles = array();
$ID = intval($ID);
$TICKET_ID = intval($TICKET_ID);
$rsTicket = CTicket::GetByID($TICKET_ID, LANGUAGE_ID, "Y", "N", "N");
if ($arTicket = $rsTicket->Fetch())
{
CTicket::UpdateOnline($ID, $USER->GetID());
if ($rsFiles = CTicket::GetFileList("s_id", "asc", array("MESSAGE_ID" => $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);
endif;
$arFile["NAME"] = $name;
$arFiles[] = $arFile;
endwhile;
endif;
// если была нажата кнопка "save" на текущей странице
if (($save <> '' || $apply <> '') && $REQUEST_METHOD=="POST" && $bAdmin=="Y" && $ID>0 && $TICKET_ID>0 && check_bitrix_sessid())
{
$DB->PrepareFields("b_ticket_message");
$arrFILES = array();
if (is_array($arFiles) && count($arFiles)>0)
{
reset ($arFiles);
foreach($arFiles as $arFile)
{
$key = "EXIST_FILE_".$arFile["ID"];
$arF = $_FILES[$key];
$arF["MODULE_ID"] = "support";
$arF["old_file"] = $arFile["ID"];
$arF["del"] = ${$key."_del"};
if ($arF["del"]=="Y" || $arF["name"] <> '') $arrFILES[] = $arF;
}
}
if (is_array($_FILES) && count($_FILES)>0)
{
foreach ($_FILES as $key => $arF)
{
if ($arF["name"] <> '')
{
$arF["MODULE_ID"] = "support";
if (mb_strpos($key, "NEW_FILE") !== false)
{
$arrFILES[] = $arF;
}
}
}
}
if (CheckFields())
{
$IS_SPAM = ($str_IS_SPAM=="Y" || $str_IS_SPAM=="N") ? $str_IS_SPAM : "";
$IS_HIDDEN = ($str_IS_HIDDEN=="Y" || $str_IS_HIDDEN=="N") ? $str_IS_HIDDEN : "";
$IS_LOG = ($str_IS_LOG=="Y" || $str_IS_LOG=="N") ? $str_IS_LOG : "";
$IS_OVERDUE = ($str_IS_OVERDUE=="Y" || $str_IS_OVERDUE=="N") ? $str_IS_OVERDUE : "";
$arFields = array(
"C_NUMBER" => $C_NUMBER,
"MESSAGE" => $MESSAGE,
"SOURCE_ID" => $SOURCE_ID,
"OWNER_SID" => $OWNER_SID,
"OWNER_USER_ID" => $OWNER_USER_ID,
"EXTERNAL_ID" => $EXTERNAL_ID,
"EXTERNAL_FIELD_1" => $EXTERNAL_FIELD_1,
"IS_SPAM" => $IS_SPAM,
"TASK_TIME" => $TASK_TIME,
"IS_HIDDEN" => $IS_HIDDEN,
"IS_LOG" => $IS_LOG,
"IS_OVERDUE" => $IS_OVERDUE,
"NOT_CHANGE_STATUS" => $NOT_CHANGE_STATUS,
"FILES" => $arrFILES
);
if ($IS_LOG == "Y") unset($arFields["TASK_TIME"]);
CTicket::UpdateMessage($ID, $arFields);
//CTicket::UpdateLastParams2($TICKET_ID);
CTicket::UpdateLastParamsN($TICKET_ID, array("EVENT"=>array(CTicket::UPDATE)), true, true);
if (!$strError)
{
if ($save <> '') LocalRedirect($TICKET_EDIT_URL."?lang=".LANGUAGE_ID."&ID=".$TICKET_ID);
elseif ($apply <> '') LocalRedirect($TICKET_MESSAGE_EDIT_URL."?ID=".$ID. "&TICKET_ID=".$TICKET_ID."&lang=".LANGUAGE_ID);
}
}
else
{
if ($e = $APPLICATION->GetException())
$strError = new CAdminMessage(GetMessage("SUP_ERROR"), $e);
}
}
$message = CTicket::GetMessageByID($ID);
if (!($message->ExtractFields()))
{
//$strError .= GetMessage("SUP_MESSAGE_NOT_FOUND")."
";
$e = $APPLICATION->GetException();
$strError = new CAdminMessage(GetMessage("SUP_MESSAGE_NOT_FOUND"),$e);
}
else
{
$arFiles = array();
if ($rsFiles = CTicket::GetFileList("s_id", "asc", array("MESSAGE_ID" => $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);
endif;
$arFile["NAME"] = $name;
$arFiles[] = $arFile;
endwhile;
endif;
}
if ($strError)
$DB->InitTableVarsForEdit("b_ticket_message", "", "str_");
$str_OWNER_USER_ID = intval($str_OWNER_USER_ID)>0 ? intval($str_OWNER_USER_ID) : "";
$sDocTitle = GetMessage("SUP_EDIT_RECORD", array("#ID#" => $ID, "#TID#" => $TICKET_ID));
$APPLICATION->SetTitle($sDocTitle);
}
if ($ADD_PUBLIC_CHAIN=="Y" || !isset($ADD_PUBLIC_CHAIN))
{
$APPLICATION->AddChainItem(GetMessage("SUP_TICKETS_LIST"), $TICKET_LIST_URL);
$APPLICATION->AddChainItem(str_replace("#TID#",$TICKET_ID,GetMessage("SUP_TICKET_EDIT")), $TICKET_EDIT_URL."?ID=".$TICKET_ID);
}
$is_ie = IsIE();
$is_ie = true;
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");?>
$aMenu = array();
$aMenu[] = array(
"TEXT" => str_replace("#TID#",$TICKET_ID,GetMessage("SUP_TICKET_EDIT")),
"LINK" => "/bitrix/admin/ticket_edit.php?lang=".LANGUAGE_ID."&ID=".$TICKET_ID
);
if (intval($arTicket["MESSAGES"])>1)
{
$aMenu[] = array("SEPARATOR"=>"Y");
$aMenu[] = array(
"TEXT" => GetMessage("SUP_DELETE_MESSAGE"),
"LINK" => "javascript:if(confirm('".GetMessage("SUP_DELETE_MESSAGE_CONFIRM")."')) window.location='/bitrix/admin/ticket_edit.php?ID=".$TICKET_ID."&mdel_id=".$ID."&lang=".LANGUAGE_ID."&".bitrix_sessid_get(). "&set_default=Y';",
"WARNING"=>"Y"
);
}
//echo ShowSubMenu($aMenu);
$context = new CAdminContextMenu($aMenu);
$context->Show();
//echo ShowError($strError);
//echo ShowNote($strNote);
if ($strError)
echo $strError->Show();
/***************************************************************************
HTML форма
****************************************************************************/
?>