/*
##############################################
# 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");
ClearVars();
$bDemo = (CTicket::IsDemo()) ? "Y" : "N";
$bAdmin = (CTicket::IsAdmin()) ? "Y" : "N";
if($bAdmin!="Y" && $bDemo!="Y") $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/include.php");
IncludeModuleLangFile(__FILE__);
$err_mess = "File: ".__FILE__."
Line: ";
define("HELP_FILE","ticket_dict_list.php");
$message = null;
/***************************************************************************
Функции
***************************************************************************/
function CheckFields() // проверка на наличие обязательных полей
{
global $ID, $NAME, $SID, $C_TYPE, $arrSITE, $DB;
$str = "";
$arMsg = Array();
if (trim($NAME) == '')
//$str .= GetMessage("SUP_FORGOT_NAME")."
";
$arMsg[] = array("id"=>"NAME", "text"=> GetMessage("SUP_FORGOT_NAME"));
if (preg_match("/[^A-Za-z_0-9]/",$SID))
//$str .= GetMessage("SUP_INCORRECT_SID")."
";
$arMsg[] = array("id"=>"SID", "text"=> GetMessage("SUP_INCORRECT_SID"));
elseif ($SID <> '' && is_array($arrSITE) && count($arrSITE)>0)
{
$arFilter = array(
"ID" => "~".$ID,
"TYPE" => $C_TYPE,
"SID" => $SID,
"SITE" => $arrSITE
);
$z = CTicketDictionary::GetList();
if ($zr = $z->Fetch())
{
$s = str_replace("#TYPE#", CTicketDictionary::GetTypeNameByID($str_C_TYPE), GetMessage("SUP_SID_ALREADY_IN_USE"));
$s = str_replace("#LANG#", $zr['LID'] <> ''? $zr['LID'] : mb_strtolower($zr['SITE_ID']), $s);
$s = str_replace("#RECORD_ID#",$zr["ID"],$s);
//$str .= $s."
";
$arMsg[] = array("id"=>"SID", "text"=> $s);
}
}
if(!empty($arMsg))
{
$e = new CAdminException($arMsg);
$GLOBALS["APPLICATION"]->ThrowException($e);
return false;
}
return true;
}
function symbolsAndNumbers($str)
{
return preg_replace ("/[^a-z0-9A-Z]/","",$str);
}
/***************************************************************************
Обработка GET | POST
***************************************************************************/
$ID = intval($_REQUEST['ID']);
$SET_AS_DEFAULT = $_REQUEST['SET_AS_DEFAULT'];
InitBVar($SET_AS_DEFAULT);
// если была нажата кнопка "save" на текущей странице
if (($save <> '' || $apply <> '') && $REQUEST_METHOD=="POST" && $bAdmin=="Y" && check_bitrix_sessid())
{
$arFields = array(
'C_TYPE' => symbolsAndNumbers($_REQUEST['C_TYPE']),
'SID' => $_REQUEST['SID'],
'SET_AS_DEFAULT' => $SET_AS_DEFAULT,
'C_SORT' => $_REQUEST['C_SORT'],
'NAME' => $_REQUEST['NAME'],
'DESCR' => $_REQUEST['DESCR'],
'RESPONSIBLE_USER_ID' => $_REQUEST['RESPONSIBLE_USER_ID'],
'arrSITE' => $_REQUEST['arrSITE'],
);
if (is_array($_REQUEST['arrSITE']) && count($_REQUEST['arrSITE']) > 0)
{
$arFields['FIRST_SITE_ID'] = reset($_REQUEST['arrSITE']);
$_SESSION['SESS_TICKET_DIC_SITE'] = $_REQUEST['arrSITE'];
}
if (CModule::IncludeModule('statistic') && $_REQUEST['C_TYPE']=='C')
{
$arFields['EVENT1'] = $_REQUEST['EVENT1'];
$arFields['EVENT2'] = $_REQUEST['EVENT2'];
$arFields['EVENT3'] = $_REQUEST['EVENT3'];
}
$bOK = false;
$new = false;
if ($ID > 0)
{
$bOK = CTicketDictionary::Update($ID, $arFields);
}
else
{
if ($ID = CTicketDictionary::Add($arFields))
{
$new = true;
$bOK = true;
}
}
if ($bOK)
{
if ($save <> '') LocalRedirect("/bitrix/admin/ticket_dict_list.php?lang=".LANGUAGE_ID. "&find_type=".symbolsAndNumbers($_REQUEST['C_TYPE']));
elseif ($new) LocalRedirect("/bitrix/admin/ticket_dict_edit.php?ID=".$ID. "&lang=".LANGUAGE_ID."&find_type=".symbolsAndNumbers($_REQUEST['C_TYPE'])."&tabControl_active_tab=".urlencode($tabControl_active_tab));
}
else
{
if ($e = $APPLICATION->GetException())
$message = new CAdminMessage(GetMessage("SUP_ERROR"), $e);
}
/*
if (CheckFields())
{
$DB->PrepareFields("b_ticket_dictionary");
if (is_array($arrSite)>0) $_SESSION["SESS_TICKET_DIC_SITE"] = $arrSite;
if ($SET_AS_DEFAULT=="Y")
{
$arFilter = array(
"TYPE" => $C_TYPE,
"SITE" => $arrSITE
);
$z = CTicketDictionary::GetList($v1, $v2, $arFilter, $v3);
while ($zr = $z->Fetch())
{
$arFields = array("SET_AS_DEFAULT" => "'N'");
$DB->Update("b_ticket_dictionary",$arFields,"WHERE ID='".$zr["ID"]."'",$err_mess.__LINE__);
}
}
if (is_array($arrSITE))
{
reset($arrSITE);
list($k, $FIRST_SITE_ID) = each($arrSITE);
}
$arFields = array(
"FIRST_SITE_ID" => "'".$DB->ForSql($FIRST_SITE_ID,2)."'",
"C_TYPE" => "'".$str_C_TYPE."'",
"SID" => "'".$str_SID."'",
"SET_AS_DEFAULT" => "'".$str_SET_AS_DEFAULT."'",
"C_SORT" => "'".$str_C_SORT."'",
"NAME" => "'".$str_NAME."'",
"DESCR" => "'".$str_DESCR."'",
"RESPONSIBLE_USER_ID" => "'".$str_RESPONSIBLE_USER_ID."'"
);
if (CModule::IncludeModule("statistic") && $str_C_TYPE=="C")
{
$arFields["EVENT1"] = "'".$str_EVENT1."'";
$arFields["EVENT2"] = "'".$str_EVENT2."'";
$arFields["EVENT3"] = "'".$str_EVENT3."'";
}
if ($ID>0) $DB->Update("b_ticket_dictionary",$arFields,"WHERE ID='".$ID."'",$err_mess.__LINE__);
else
{
$ID = $DB->Insert("b_ticket_dictionary",$arFields, $err_mess.__LINE__);
$new = "Y";
}
if (!$message)
{
// сайты
$DB->Query("DELETE FROM b_ticket_dictionary_2_site WHERE DICTIONARY_ID='".$ID."'", false, $err_mess.__LINE__);
if (is_array($arrSITE))
{
reset($arrSITE);
foreach($arrSITE as $sid)
{
$strSql = "INSERT INTO b_ticket_dictionary_2_site (DICTIONARY_ID, SITE_ID) VALUES ($ID, '".$DB->ForSql($sid,2)."')";
$DB->Query($strSql, false, $err_mess.__LINE__);
}
}
if (strlen($save)>0) LocalRedirect("/bitrix/admin/ticket_dict_list.php?lang=".LANGUAGE_ID. "&find_type=".$str_C_TYPE."&set_filter=Y");
elseif ($new=="Y") LocalRedirect("/bitrix/admin/ticket_dict_edit.php?ID=".$ID. "&lang=".LANGUAGE_ID."&find_type=".$str_C_TYPE."&set_filter=Y&tabControl_active_tab=".urlencode($tabControl_active_tab));
}
}
else
{
if ($e = $APPLICATION->GetException())
$message = new CAdminMessage(GetMessage("SUP_ERROR"), $e);
}
//*/
}
$arrSites = array();
$rs = CSite::GetList();
while ($ar = $rs->Fetch())
$arrSites[$ar["ID"]] = $ar;
$tdic = CTicketDictionary::GetByID($ID);
if (!($tdic && $tdic->ExtractFields()))
{
$ID=0;
$str_C_SORT="100";
$arrSite = $_SESSION["SESS_TICKET_DIC_SITE"];
$str_C_TYPE = symbolsAndNumbers($find_type);
if ($str_C_TYPE <> '') $str_C_SORT = CTicketDictionary::GetNextSort($TYPE_ID);
//$str_EVENT1 = "ticket";
$str_EVENT1 = "";
}
else
{
$arrSITE = CTicketDictionary::GetSiteArray($ID);
if ($str_C_TYPE!="C")
{
$str_EVENT1 = "";
$str_EVENT2 = "";
$str_EVENT3 = "";
}
}
if ($message) $DB->InitTableVarsForEdit("b_ticket_dictionary", "", "str_");
if ($ID>0) $sDocTitle = GetMessage("SUP_EDIT_RECORD", array("#ID#" => $ID));
else $sDocTitle = GetMessage("SUP_NEW_RECORD");
$APPLICATION->SetTitle($sDocTitle);
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
/***************************************************************************
HTML форма
****************************************************************************/
?>
$aMenu = array(
array(
"ICON" => "btn_list",
"TEXT" => GetMessage("SUP_RECORDS_LIST"),
"LINK" => "/bitrix/admin/ticket_dict_list.php?lang=".LANGUAGE_ID."&find_type=".symbolsAndNumbers($find_type)
)
);
if(intval($ID)>0)
{
$aMenu[] = array("SEPARATOR"=>"Y");
$aMenu[] = array(
"ICON" => "btn_new",
"TEXT" => GetMessage("SUP_CREATE_NEW_RECORD"),
"LINK" => "/bitrix/admin/ticket_dict_edit.php?lang=".LANGUAGE_ID."&find_type=".symbolsAndNumbers($find_type)
);
if ($bAdmin=="Y")
{
$aMenu[] = array(
"ICON" => "btn_delete",
"TEXT" => GetMessage("SUP_DELETE_RECORD"),
"LINK" => "javascript:if(confirm('".GetMessage("SUP_DELETE_RECORD_CONFIRM")."')) window.location='/bitrix/admin/ticket_dict_list.php?action=delete&ID=".$ID."&lang=".LANGUAGE_ID."&find_type=".symbolsAndNumbers($find_type) ."&". bitrix_sessid_get()."';",
);
}
}
$context = new CAdminContextMenu($aMenu);
$context->Show();
if ($message)
echo $message->Show();
?>