/*
##############################################
# Bitrix: SiteManager #
# Copyright (c) 2002-2004 Bitrix #
# http://www.bitrixsoft.com #
# mailto:admin@bitrixsoft.com #
##############################################
*/
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/mail/prolog.php");
ClearVars();
unset($ACTION_VARS);
$message = null;
$MOD_RIGHT = $APPLICATION->GetGroupRight("mail");
if($MOD_RIGHT<"R") $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
IncludeModuleLangFile(__FILE__);
\Bitrix\Main\Loader::includeModule('mail');
$aTabs = array();
$aTabs[] = array("DIV" => "edit1", "TAB" => GetMessage("MAIL_FLT_EDT_PARAMS"), "ICON"=>"mail_filter_edit", "TITLE"=>GetMessage("MAIL_FLT_EDT_PARAMS"));
$aTabs[] = array("DIV" => "edit2", "TAB" => GetMessage("MAIL_FLT_EDT_CONDITIONS"), "ICON"=>"mail_filter_edit", "TITLE"=>GetMessage("MAIL_FLT_EDT_CONDITIONS"));
$aTabs[] = array("DIV" => "edit3", "TAB" =>GetMessage("MAIL_FLT_EDT_ACTIONS"), "ICON"=>"mail_filter_edit", "TITLE"=>GetMessage("MAIL_FLT_EDT_ACTIONS"));
$tabControl = new CAdminTabControl("tabControl", $aTabs);
$err_mess = "File: ".__FILE__."
Line: ";
$arModFilter = false;
if($filter_type!="")
{
$res = CMailFilter::GetFilterList($filter_type);
$arModFilter = $res->Fetch();
}
$ID=intval($ID);
if($REQUEST_METHOD=="POST" && ($save <> '' || $apply <> '') && $MOD_RIGHT>="W" && check_bitrix_sessid())
{
$arFields = Array(
"ACTIVE" => $ACTIVE,
"MAILBOX_ID" => $MAILBOX_ID,
"PARENT_FILTER_ID" => false,
"NAME" => $NAME,
"SORT" => $SORT,
"WHEN_MAIL_RECEIVED"=> $WHEN_MAIL_RECEIVED,
"WHEN_MANUALLY_RUN" => $WHEN_MANUALLY_RUN,
"SPAM_RATING" => $SPAM_RATING,
"SPAM_RATING_TYPE" => $SPAM_RATING_TYPE,
"MESSAGE_SIZE" => $MESSAGE_SIZE,
"MESSAGE_SIZE_TYPE" => $MESSAGE_SIZE_TYPE,
"MESSAGE_SIZE_UNIT" => $MESSAGE_SIZE_UNIT,
"DESCRIPTION" => $DESCRIPTION,
"CONDITIONS" => $CONDITIONS,
"ACTION_STOP_EXEC" => $ACTION_STOP_EXEC,
"ACTION_DELETE_MESSAGE"=> $ACTION_DELETE_MESSAGE,
"ACTION_READ" => $ACTION_READ,
"ACTION_SPAM" => $ACTION_SPAM,
"ACTION_TYPE" => ""
);
if($USER->IsAdmin())
{
$arFields["PHP_CONDITION"] = $PHP_CONDITION;
$arFields["ACTION_PHP"] = $ACTION_PHP;
}
if($arModFilter)
{
$arFields["ACTION_TYPE"] = $arModFilter["ID"];
$ACTION_VARS = call_user_func($arModFilter["PREPARE_RESULT_FUNC"]);
$arFields["ACTION_VARS"] = $ACTION_VARS;
}
if($ID>0)
$res = CMailFilter::Update($ID, $arFields);
else
{
$ID = CMailFilter::Add($arFields);
$res = ($ID>0);
}
if(!$res)
{
if($e = $APPLICATION->GetException())
$message = new CAdminMessage(GetMessage("MAIL_FLT_EDT_ERROR"), $e);
}
else
{
//$strError .= CMailError::GetErrorsText();
//if(strlen($strError)<=0)
//{
if($save <> '')
LocalRedirect("mail_filter_admin.php?lang=".LANG);
else
LocalRedirect($APPLICATION->GetCurPage()."?lang=".LANG."&ID=".$ID."&tabControl_active_tab=".urlencode($tabControl_active_tab));
//}
}
}
if($ID !== 0)
{
$mf = CMailFilter::GetByID($ID);
if (!$ar_res = $mf->ExtractFields("str_"))
{
$ID = 0;
}
else
{
$filter_type = $ar_res["ACTION_TYPE"];
if ($filter_type <> '')
{
$res = CMailFilter::GetFilterList($filter_type);
$arModFilter = $res->Fetch();
}
}
}
if(!$message)
{
if(!isset($ACTIVE))
$ACTIVE="Y";
if(!isset($PORT))
$PORT="110";
if(!isset($SORT))
$SORT="500";
if(!isset($MAILBOX_ID))
$MAILBOX_ID = $find_mailbox_id;
if($ID>0)
$ACTION_VARS = $ar_res["ACTION_VARS"];
}
if($message || $ID==0)
{
$DB->InitTableVarsForEdit("b_mail_filter", "", "str_", "", true);
$ar_CONDITIONS = $CONDITIONS;
}
else
{
$ar_CONDITIONS = Array();
if($ID>0)
{
$res = CMailFilterCondition::GetList(Array("id"=>"asc"), Array("FILTER_ID"=>$ID));
while($ar = $res->Fetch())
$ar_CONDITIONS[$ar["ID"]] = $ar;
}
}
if(!is_array($ar_CONDITIONS))
$ar_CONDITIONS = Array();
if(!$message)
{
$ar_CONDITIONS["n1"] = Array();
$ar_CONDITIONS["n2"] = Array();
$ar_CONDITIONS["n3"] = Array();
}
$sDocTitle = ($ID>0) ? preg_replace("'#ID#'i", $ID, GetMessage("MAIL_FLT_EDT_TITILE_1")) : GetMessage("MAIL_FLT_EDT_TITILE_2");
$APPLICATION->SetTitle($sDocTitle);
require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/prolog_admin_after.php");
$aMenu = array(
array(
"ICON" => "btn_list",
"TEXT"=>GetMessage("MAIL_FLT_EDT_BACK_LINK"),
"LINK"=>"mail_filter_admin.php?lang=".LANG
)
);
if($ID>0)
{
$aMenu[] = array("SEPARATOR"=>"Y");
$aMenu[] = array(
"ICON" => "btn_new",
"TEXT"=>GetMessage("MAIL_FLT_EDT_NEW"),
"LINK"=>"mail_filter_edit.php?lang=".LANG
);
if ($MOD_RIGHT=="W")
{
$aMenu[] = array(
"ICON" => "btn_delete",
"TEXT"=>GetMessage("MAIL_FLT_EDT_DEL"),
"LINK"=>"javascript:if(confirm('".GetMessage("MAIL_FLT_EDT_DEL_CONFIRM")."'))window.location='mail_filter_admin.php?action=delete&ID=".$ID."&lang=".LANG."&".bitrix_sessid_get()."';",
);
}
}
//echo ShowSubMenu($aMenu);
$context = new CAdminContextMenu($aMenu);
$context->Show();
if ($message)
echo $message->Show();
$tabControl->Begin();
?>