/*
##############################################
# Bitrix: SiteManager #
# Copyright (c) 2002-2005 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();
$message = null;
$MOD_RIGHT = $APPLICATION->GetGroupRight("mail");
if($MOD_RIGHT<"R") $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
IncludeModuleLangFile(__FILE__);
Bitrix\Main\Loader::includeModule('mail');
$err_mess = "File: ".__FILE__."
Line: ";
$strError = "";
$ID = intval($ID);
$bCanUseTLS = (defined('BX_MAIL_FORCE_USE_TLS') && BX_MAIL_FORCE_USE_TLS === true) || function_exists('openssl_open');
if($REQUEST_METHOD=="POST" && ($save <> '' || $save_ext <> '' || $apply <> '') && $MOD_RIGHT=="W" && check_bitrix_sessid())
{
$arFields = array(
'ACTIVE' => $ACTIVE,
'LID' => $LID,
'SERVICE_ID' => $SERVICE_ID,
'NAME' => $NAME,
'SERVER' => $SERVER,
'PORT' => $PORT,
'RELAY' => $RELAY,
'AUTH_RELAY' => $AUTH_RELAY,
'DOMAINS' => $DOMAINS,
'SERVER_TYPE' => $SERVER_TYPE,
'LOGIN' => $LOGIN,
'PASSWORD' => $PASSWORD,
'CHARSET' => $CHARSET,
'USE_MD5' => $USE_MD5,
'DELETE_MESSAGES' => $DELETE_MESSAGES,
'PERIOD_CHECK' => $PERIOD_CHECK,
'DESCRIPTION' => $DESCRIPTION,
'MAX_MSG_COUNT' => $MAX_MSG_COUNT,
'MAX_MSG_SIZE' => ((int) $MAX_MSG_SIZE) * 1024,
'MAX_KEEP_DAYS' => (int) $MAX_KEEP_DAYS,
'USE_TLS' => $bCanUseTLS && $USE_TLS == 'Y' ? ($SKIP_CERT == 'Y' ? 'S' : 'Y') : 'N',
'USER_ID' => $USER_ID,
'LINK' => $LINK
);
if ($ID > 0)
{
if ($arFields['PASSWORD'] == '')
unset($arFields['PASSWORD']);
$res = CMailbox::Update($ID, $arFields);
}
else
{
$ID = CMailbox::Add($arFields);
$res = $ID > 0;
}
if (!$res)
{
if ($e = $APPLICATION->GetException())
$message = new CAdminMessage(GetMessage("MAIL_MBOX_EDT_ERROR"), $e);
}
else
{
if ($save_ext <> '' && $filter_type != '')
LocalRedirect("mail_filter_edit.php?lang=".LANG."&filter_type=".$filter_type."&find_mailbox_id=".$ID);
elseif ($save <> '')
LocalRedirect("mail_mailbox_admin.php?lang=".LANG);
else
LocalRedirect($APPLICATION->GetCurPage()."?lang=".LANG."&ID=".$ID);
}
}
$mb = CMailbox::GetByID($ID);
if (!$mb->ExtractFields("str_"))
$ID = 0;
if($ID===0){
$str_SERVER_TYPE = $mailbox_type == 'user' ? 'imap' : 'pop3';
$str_PORT = $str_SERVER_TYPE == 'imap' ? ($bCanUseTLS ? '993' : '143') : '110';
$str_USE_TLS = $str_SERVER_TYPE == 'imap' && $bCanUseTLS ? 'Y' : 'N';
$str_ACTIVE = 'Y';
$str_AUTH_RELAY = 'Y';
$str_RELAY = 'Y';
}
if ($message)
$DB->InitTableVarsForEdit("b_mail_mailbox", "", "str_");
$sDocTitle = ($ID > 0) ? preg_replace("'#ID#'i", $ID, GetMessage("MAIL_MBOX_EDT_TITLE_1")) : GetMessage("MAIL_MBOX_EDT_TITLE_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_MBOX_EDT_BACK_LINK"),
"LINK" => "mail_mailbox_admin.php?lang=".LANG
)
);
if ($ID > 0)
{
$aMenu[] = array("SEPARATOR"=>"Y");
$aMenu[] = array(
"ICON" => "btn_new",
"TEXT" => GetMessage("MAIL_MBOX_EDT_NEW"),
"LINK" => "mail_mailbox_edit.php?lang=".LANG
);
if ($MOD_RIGHT=="W")
{
$aMenu[] = array(
"TEXT" => GetMessage("MAIL_MBOX_EDT_DEL"),
"ICON" => "btn_delete",
"LINK" => "javascript:if(confirm('".GetMessage("MAIL_MBOX_EDT_DEL_CONFIRM")."'))window.location='mail_mailbox_admin.php?action=delete&ID=".$ID."&lang=".LANG."&".bitrix_sessid_get()."';",
);
}
}
//echo ShowSubMenu($aMenu);
$context = new CAdminContextMenu($aMenu);
$context->Show();
$aTabs = array(
array("DIV" => "edit1", "TAB" => GetMessage("MAIL_MBOX_EDT_TAB"), "ICON"=>"mail_mailbox_edit", "TITLE"=>$sDocTitle),
);
if (in_array($str_SERVER_TYPE, array('pop3', 'smtp')))
$aTabs[] = array("DIV" => "edit2", "TAB" => GetMessage("MAIL_MBOX_EDT_TAB2"), "ICON"=>"mail_mailbox_edit", "TITLE"=>$sDocTitle);
$tabControl = new CAdminTabControl("tabControl", $aTabs);
if (in_array($str_SERVER_TYPE, array('imap', 'domain', 'crdomain', 'controller')))
{
$mailServices = array();
$result = Bitrix\Mail\MailServicesTable::getList(array(
'filter' => array('ACTIVE' => 'Y'),
'order' => array('SORT' => 'ASC', 'NAME' => 'ASC')
));
while (($service = $result->fetch()) !== false)
{
if (!isset($mailServices[$service['SITE_ID']]))
$mailServices[$service['SITE_ID']] = array();
$mailServices[$service['SITE_ID']][$service['ID']] = $service;
}
}
?>
if ($message)
echo $message->Show();
?>