Ejemplo n.º 1
0
                } else {
                    $arResult['ID'] = CMailbox::Add($arFields);
                    $res = $arResult['ID'] > 0;
                }
                if (!$res) {
                    $arResult['ERRORS'][] = GetMessage('INTR_MAIL_SAVE_ERROR');
                } else {
                    CUserCounter::Set($USER->GetID(), 'mail_unseen', $unseen, SITE_ID);
                    CUserOptions::SetOption('global', 'last_mail_check_' . SITE_ID, time());
                    CUserOptions::SetOption('global', 'last_mail_check_success_' . SITE_ID, $unseen >= 0);
                    LocalRedirect($APPLICATION->GetCurPage() . '?STEP=confirm&ACT=setup');
                }
            }
        }
        break;
    case 'remove':
        if (check_bitrix_sessid()) {
            CMailbox::Delete($arResult['ID']);
            CUserCounter::Clear($USER->GetID(), 'mail_unseen', SITE_ID);
            CUserOptions::DeleteOption('global', 'last_mail_check_' . SITE_ID);
            CUserOptions::DeleteOption('global', 'last_mail_check_success_' . SITE_ID);
            LocalRedirect($APPLICATION->GetCurPage() . '?STEP=confirm&ACT=remove');
        } else {
            LocalRedirect($APPLICATION->GetCurPage() . '?STEP=setup');
        }
        break;
    case 'confirm':
        $arResult['ACT'] = isset($_REQUEST['ACT']) ? $_REQUEST['ACT'] : '';
        break;
}
$this->IncludeComponentTemplate();
Ejemplo n.º 2
0
 public static function notifyMailDomain($type, $sid, $user_id, $cnt = 0)
 {
     $user_id = intval($user_id);
     $cnt = intval($cnt);
     if (!CModule::includeModule('mail')) {
         return '';
     }
     $arAdmin = CUser::getList($by, $order, array('ID' => $user_id, 'GROUPS_ID' => 1, 'ACTIVE' => 'Y'), array('FIELDS' => array('ID', 'EMAIL')))->fetch();
     if (empty($arAdmin)) {
         return '';
     }
     if ($cnt == 0) {
         return 'CIntranetUtils::notifyMailDomain("' . $type . '", "' . $sid . '", ' . $user_id . ', ' . ++$cnt . ');';
     }
     includeModuleLangFile(__FILE__);
     if (isModuleInstalled('bitrix24')) {
         $learnmoreLink = getMessage('INTR_MAIL_DOMAIN_LEARNMOREB24_LINK');
         $supportLink = getMessage('INTR_MAIL_DOMAIN_SUPPORTB24_LINK');
     } else {
         $learnmoreLink = getMessage('INTR_MAIL_DOMAIN_LEARNMORE_LINK');
         $supportLink = getMessage('INTR_MAIL_DOMAIN_SUPPORT_LINK');
     }
     if (in_array($type, array('nocomplete', 'nomailbox'))) {
         $sid = intval($sid);
         $service = \Bitrix\Mail\MailServicesTable::getList(array('filter' => array('=ID' => $sid)))->fetch();
         if (empty($service) || $service['ACTIVE'] != 'Y' || !in_array($service['SERVICE_TYPE'], array('domain', 'crdomain'))) {
             return '';
         }
         if ($service['SERVICE_TYPE'] == 'domain') {
             $result = CMailDomain2::getDomainStatus($service['TOKEN'], $service['SERVER'], $error);
             $stage = empty($result['stage']) ? null : $result['stage'];
         } else {
             $crResponse = CControllerClient::executeEvent('OnMailControllerCheckMemberDomain', array('DOMAIN' => $service['SERVER']));
             $stage = empty($crResponse['result']['stage']) ? null : $crResponse['result']['stage'];
         }
         if ($type == 'nocomplete') {
             if (in_array($stage, array('owner-check', 'mx-check'))) {
                 CEvent::send('INTRANET_MAILDOMAIN_NOCOMPLETE', array($service['SITE_ID']), array('EMAIL_TO' => $arAdmin['EMAIL'], 'LEARNMORE_LINK' => $learnmoreLink, 'SUPPORT_LINK' => $supportLink));
                 if ($cnt == 1) {
                     global $pPERIOD;
                     $pPERIOD = 3600 * 24 * 4;
                     return 'CIntranetUtils::notifyMailDomain("nocomplete", ' . $sid . ', ' . $user_id . ', ' . ++$cnt . ');';
                 }
             }
         } else {
             if ($stage == 'added') {
                 $dbMailboxes = CMailbox::getList(array(), array('ACTIVE' => 'Y', '!USER_ID' => 0, 'SERVICE_ID' => $sid));
                 $adminMailbox = false;
                 $userMailboxes = false;
                 while ($arMailbox = $dbMailboxes->fetch()) {
                     if ($arMailbox['USER_ID'] == $user_id) {
                         $adminMailbox = true;
                     } else {
                         $userMailboxes = true;
                         break;
                     }
                 }
                 if (!$userMailboxes) {
                     $eventType = $adminMailbox ? 'INTRANET_MAILDOMAIN_NOMAILBOX2' : 'INTRANET_MAILDOMAIN_NOMAILBOX';
                     CEvent::send($eventType, array($service['SITE_ID']), array('EMAIL_TO' => $arAdmin['EMAIL'], 'LEARNMORE_LINK' => $learnmoreLink, 'SUPPORT_LINK' => $supportLink));
                     if ($cnt == 1) {
                         global $pPERIOD;
                         $pPERIOD = 3600 * 24 * 21;
                         return 'CIntranetUtils::notifyMailDomain("nomailbox", ' . $sid . ', ' . $user_id . ', ' . ++$cnt . ');';
                     }
                 }
             }
         }
     } else {
         if ($type == 'noreg') {
             $dbServices = \Bitrix\Mail\MailServicesTable::getList(array('filter' => array('ACTIVE' => 'Y', 'SERVICE_TYPE' => 'crdomain')));
             while ($service = $dbServices->fetch()) {
                 if ($service['FLAGS'] & CMail::F_DOMAIN_REG) {
                     return '';
                 }
             }
             $r = CEvent::send('INTRANET_MAILDOMAIN_NOREG', array($sid), array('EMAIL_TO' => $arAdmin['EMAIL'], 'LEARNMORE_LINK' => $learnmoreLink, 'SUPPORT_LINK' => $supportLink));
         }
     }
     return '';
 }
Ejemplo n.º 3
0
                }
                $DB->Commit();
                break;
            case "activate":
            case "deactivate":
                $arFields = array("ACTIVE" => $_REQUEST['action'] == "activate" ? "Y" : "N");
                if (!CMailBox::Update($ID, $arFields)) {
                    if ($e = $APPLICATION->GetException()) {
                        $lAdmin->AddGroupError(GetMessage("SAVE_ERROR") . $ID . ": " . $e->GetString(), $ID);
                    }
                }
                break;
        }
    }
}
$rsData = CMailbox::GetList(array($by => $order), $arFilter);
$rsData = new CAdminResult($rsData, $sTableID);
$rsData->NavStart();
// установка строки навигации
$lAdmin->NavText($rsData->GetNavPrint(GetMessage("MAIL_MBOX_ADM_NAVIGATION")));
$arHeaders = array();
$arHeaders[] = array("id" => "NAME", "content" => GetMessage("MAIL_MBOX_ADM_NAME"), "default" => true, "sort" => "name");
$arHeaders[] = array("id" => "ACTIVE", "content" => GetMessage("MAIL_MBOX_ADM_ACT"), "default" => true, "sort" => "active");
$arHeaders[] = array("id" => "SERVER", "content" => GetMessage("MAIL_MBOX_ADR"), "default" => true, "sort" => "server");
$arHeaders[] = array("id" => "SERVER_TYPE", "content" => GetMessage("MAIL_MBOX_ADM_TYPE"), "default" => true, "sort" => "server_type");
$arHeaders[] = array("id" => "LID", "content" => GetMessage("MAIL_MBOX_ADM_LANG"), "default" => true, "sort" => "lang");
$arHeaders[] = array("id" => "TIMESTAMP_X", "content" => GetMessage("MAIL_MBOX_ADM_DATECH"), "default" => true, "sort" => "timestamp_x");
$arHeaders[] = array("id" => "ID", "content" => "ID", "default" => true, "sort" => "id");
$lAdmin->AddHeaders($arHeaders);
// построение списка
while ($arRes = $rsData->NavNext(true, "f_")) {
Ejemplo n.º 4
0
define('NO_KEEP_STATISTIC', 'Y');
define('NO_AGENT_STATISTIC', 'Y');
define('NO_AGENT_CHECK', true);
define('DisableEventsCheck', true);
define('NOT_CHECK_PERMISSIONS', true);
define('BX_SECURITY_SESSION_READONLY', true);
require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php';
if (!is_object($USER) || !$USER->IsAuthorized()) {
    return;
}
$userId = $USER->GetID();
session_write_close();
CModule::IncludeModule('mail');
$siteId = isset($_REQUEST['SITE_ID']) ? $_REQUEST['SITE_ID'] : SITE_ID;
$error = false;
$dbAcc = CMailbox::GetList(array('TIMESTAMP_X' => 'DESC'), array('LID' => SITE_ID, 'ACTIVE' => 'Y', 'USER_ID' => $USER->GetID()));
while (($acc = $dbAcc->fetch()) !== false && !in_array($acc['SERVER_TYPE'], array('imap', 'controller', 'domain', 'crdomain'))) {
}
if (!empty($acc)) {
    switch ($acc['SERVER_TYPE']) {
        case 'imap':
            $unseen = CMailUtil::CheckImapMailbox($acc['SERVER'], $acc['PORT'], $acc['USE_TLS'], $acc['LOGIN'], $acc['PASSWORD'], $error, 30);
            break;
        case 'controller':
            list($acc['login'], $acc['domain']) = explode('@', $acc['LOGIN'], 2);
            $crCheckMailbox = CControllerClient::ExecuteEvent('OnMailControllerCheckMailbox', array('DOMAIN' => $acc['domain'], 'NAME' => $acc['login']));
            if (isset($crCheckMailbox['result'])) {
                $unseen = intval($crCheckMailbox['result']);
            } else {
                $unseen = -1;
                $error = empty($crCheckMailbox['error']) ? GetMessage('INTR_MAIL_CONTROLLER_INVALID') : CMail::getErrorMessage($crCheckMailbox['error']);
Ejemplo n.º 5
0
			if(strlen($save_ext)>0 && $filter_type!="")
				LocalRedirect("mail_filter_edit.php?lang=".LANG."&filter_type=".$filter_type."&find_mailbox_id=".$ID);
			elseif(strlen($save)>0)
				LocalRedirect("mail_mailbox_admin.php?lang=".LANG);
			else
				LocalRedirect($APPLICATION->GetCurPage()."?lang=".LANG."&ID=".$ID);
		//}
	}

}

$str_ACTIVE="Y";
$str_PORT="110";
$str_AUTH_RELAY="Y";
$str_RELAY="Y";
$mb = CMailbox::GetByID($ID);
if(!$mb->ExtractFields("str_"))
	$ID=0;

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
Ejemplo n.º 6
0
	public static function Delete($ID)
	{
		global $DB;
		$ID = IntVal($ID);
		$dbr = CMailFilterCondition::GetList(Array(), Array("FILTER_ID"=>$ID));
		while($r = $dbr->Fetch())
		{
			if(!CMailFilterCondition::Delete($r["ID"]))
				return false;
		}

		$strSql = "DELETE FROM b_mail_filter WHERE ID=".$ID;
		CMailbox::SMTPReload();
		return $DB->Query($strSql, true);
	}
Ejemplo n.º 7
0
</td>
</tr>
<tr>
	<td nowrap><?php 
echo GetMessage("MAIL_MSG_ADM_MAILBOX");
?>
:</td>
	<td nowrap>
		<select name="find_mailbox_id">
			<option value=""><?php 
echo GetMessage("MAIL_MSG_ADM_ANY");
?>
</option>
			<?php 
ClearVars("mb_");
$l = CMailbox::GetList(array('NAME' => 'ASC', 'ID' => 'ASC'), array('VISIBLE' => 'Y', 'USER_ID' => 0));
while ($l->ExtractFields("mb_")) {
    ?>
<option value="<?php 
    echo $mb_ID;
    ?>
"<?php 
    if ($find_mailbox_id == $mb_ID) {
        echo " selected";
    }
    ?>
><?php 
    echo $mb_NAME;
    ?>
</option><?php 
}
?>
		</p>
	</tr>

</table></form>
<?php 
if (check_bitrix_sessid()) {
    $arFilter = array('ACTIVE' => 'Y', 'USER_ID' => 0);
    if ($mailbox_id > 0) {
        $arFilter["ID"] = $mailbox_id;
    }
    $dbr = CMailBox::GetList(array(), $arFilter);
    ClearVars("f_");
    while ($res = $dbr->ExtractFields("f_")) {
        CMailError::ResetErrors();
        $mb = new CMailbox();
        echo '<p><b>' . GetMessage("MAIL_CHECK_TEXT") . '&quot;' . $f_NAME . '&quot;:</b></p>';
        if ($mb->Connect($res["ID"])) {
            CAdminMessage::ShowNote(GetMessage("MAIL_CHECK_CNT") . " " . intval($mb->new_mess_count) . " " . GetMessage("MAIL_CHECK_CNT_NEW"));
            $aContext = array();
            if ($mb->new_mess_count > 0) {
                $aContext[] = array("ICON" => "btn_list", "TEXT" => GetMessage("MAIL_CHECK_VIEW"), "LINK" => "mail_message_admin.php?find_mailbox_id=" . $f_ID . "&lang=" . LANG . "&find_new=Y&set_filter=Y", "TITLE" => GetMessage("MAIL_CHECK_VIEW"));
            }
            $aContext[] = array("TEXT" => GetMessage("MAIL_CHECK_LOG"), "LINK" => "mail_log.php?set_filter=Y&find_mailbox_id=" . $f_ID . "&lang=" . LANG, "TITLE" => GetMessage("MAIL_CHECK_LOG"));
        } else {
            CAdminMessage::ShowMessage(GetMessage("MAIL_CHECK_ERR") . " " . CMailError::GetErrorsText());
            $aContext = array(array("TEXT" => GetMessage("MAIL_CHECK_MBOX_PARAMS"), "LINK" => "mail_mailbox_edit.php?ID=" . $f_ID . "&lang=" . LANG, "TITLE" => GetMessage("MAIL_CHECK_MBOX_PARAMS")), array("TEXT" => GetMessage("MAIL_CHECK_LOG"), "LINK" => "mail_log.php?set_filter=Y&find_mailbox_id=" . $f_ID . "&lang=" . LANG, "TITLE" => GetMessage("MAIL_CHECK_LOG")));
        }
        $context = new CAdminContextMenu($aContext);
        $context->Show();
    }
Ejemplo n.º 9
0
                 foreach ($arMailServices[$arService['ID']]['users'] as $domain => $arLogin) {
                     if (empty($arLogin)) {
                         unset($arMailServices[$arService['ID']]['users'][$domain]);
                     }
                 }
             }
             if (!$bDomainUsersExist && !empty($arMailServices[$arService['ID']]['users'])) {
                 $bDomainUsersExist = true;
             }
             if (!empty($arService['SERVER'])) {
                 $bConnectDomainsExist = true;
             }
         }
     } elseif ($arService['SERVICE_TYPE'] == 'domain') {
         $arMailServices[$arService['ID']]['users'] = CMailDomain2::getDomainUsers($arService['TOKEN'], $arService['SERVER'], $error);
         $rsMailbox = CMailbox::getList(array('TIMESTAMP_X' => 'ASC'), array('ACTIVE' => 'Y', '!USER_ID' => 0, 'SERVER_TYPE' => 'domain', 'SERVICE_ID' => $arService['ID']));
         while ($arMailbox = $rsMailbox->fetch()) {
             list($login, $domain) = explode('@', $arMailbox['LOGIN'], 2);
             if (($key = array_search($login, $arMailServices[$arService['ID']]['users'])) !== false) {
                 array_splice($arMailServices[$arService['ID']]['users'], $key, 1);
             }
         }
         if (!$bDomainUsersExist && !empty($arMailServices[$arService['ID']]['users'])) {
             $bDomainUsersExist = true;
         }
         if (!empty($arService['SERVER'])) {
             $bCreateDomainsExist = true;
             $bConnectDomainsExist = true;
         }
     }
 }
Ejemplo n.º 10
0
</td>
</tr>
<tr>
	<td nowrap><?php 
echo GetMessage("MAIL_FILT_ADM_FILT_MBOX");
?>
:</td>
	<td nowrap>
		<select name="find_mailbox_id">
			<option value=""><?php 
echo GetMessage("MAIL_FILT_ADM_FILT_ANY");
?>
</option>
			<?php 
ClearVars("mb_");
$l = CMailbox::GetList(array("NAME" => "ASC", "ID" => "ASC"), array("VISIBLE" => "Y"));
while ($l->ExtractFields("mb_")) {
    ?>
<option value="<?php 
    echo $mb_ID;
    ?>
"<?php 
    if ($find_mailbox_id == $mb_ID) {
        echo " selected";
    }
    ?>
><?php 
    echo $mb_NAME;
    ?>
</option><?php 
}
Ejemplo n.º 11
0
 public static function delete($primary)
 {
     $serviceForDelete = static::getByPrimary($primary)->fetch();
     if (!$serviceForDelete) {
         $deleteResult = new Entity\DeleteResult();
         $deleteResult->addError(new Entity\EntityError(Localization\Loc::getMessage('mail_mailservice_not_found')));
         return $deleteResult;
     }
     $deleteResult = parent::delete($primary);
     if ($deleteResult->isSuccess()) {
         $serviceId = is_array($primary) ? $primary['ID'] : $primary;
         if (in_array($serviceForDelete['SERVICE_TYPE'], array('controller', 'domain'))) {
             $mbData = array('ACTIVE' => 'N', 'SERVICE_ID' => 0);
         } else {
             $emptyService = static::getList(array('filter' => array('=SITE_ID' => $serviceForDelete['SITE_ID'], 'ACTIVE' => 'Y', '=SERVER' => '', '=PORT' => '', '=ENCRYPTION' => '', '=LINK' => ''), 'limit' => 1))->fetch();
             $mbData = $emptyService ? array('SERVICE_ID' => $emptyService['ID'], 'NAME' => $emptyService['NAME']) : array('ACTIVE' => 'N', 'SERVICE_ID' => 0);
         }
         $selectResult = \CMailbox::getList(array(), array('SERVICE_ID' => $serviceId));
         while ($mailbox = $selectResult->fetch()) {
             \CMailbox::update($mailbox['ID'], $mbData);
         }
     }
     return $deleteResult;
 }
Ejemplo n.º 12
0
             $obCache->EndDataCache(array('DEPARTMENTS' => $arResult['DEPARTMENTS'], 'MANAGERS' => $arResult['MANAGERS']));
             if (defined("BX_COMP_MANAGED_CACHE")) {
                 $CACHE_MANAGER->EndTagCache();
             }
         }
     } elseif ($arParams["CACHE_TIME"] > 0) {
         $vars = $obCache->GetVars();
         $arResult['DEPARTMENTS'] = $vars['DEPARTMENTS'];
         $arResult['MANAGERS'] = $vars['MANAGERS'];
     }
     if (CModule::IncludeModule("extranet") && CExtranet::IsExtranetSite() && !CExtranet::IsIntranetUser()) {
         $arResult['MANAGERS'] = array();
     }
 }
 if (CModule::IncludeModule('mail')) {
     $dbMailbox = CMailbox::getList(array('TIMESTAMP_X' => 'DESC'), array('LID' => SITE_ID, 'ACTIVE' => 'Y', 'USER_ID' => intval($arParams['ID']), 'SERVER_TYPE' => 'imap|controller|domain'));
     $mailbox = $dbMailbox->fetch();
     if (strpos($mailbox['LOGIN'], '@') !== false) {
         $arResult['User']['MAILBOX'] = $mailbox['LOGIN'];
     }
 }
 if ($arResult["User"]['PERSONAL_BIRTHDAY'] != '') {
     $arBirthDate = ParseDateTime($arResult["User"]['PERSONAL_BIRTHDAY'], CSite::GetDateFormat('SHORT'));
     $arResult['IS_BIRTHDAY'] = intval($arBirthDate['MM']) == date('n') && intval($arBirthDate['DD']) == date('j');
 }
 if ($arParams["NAME_TEMPLATE"] == '') {
     $arParams["NAME_TEMPLATE"] = CSite::GetNameFormat();
 }
 $arParams["TITLE_NAME_TEMPLATE"] = str_replace(array("#NOBR#", "#/NOBR#"), array("", ""), $arParams["NAME_TEMPLATE"]);
 $bUseLogin = $arParams['SHOW_LOGIN'] != "N" ? true : false;
 $arTmpUser = array("NAME" => $arResult["User"]["~NAME"], "LAST_NAME" => $arResult["User"]["~LAST_NAME"], "SECOND_NAME" => $arResult["User"]["~SECOND_NAME"], "LOGIN" => $arResult["User"]["~LOGIN"]);
Ejemplo n.º 13
0
    private function executeManagePage()
    {
        global $USER, $APPLICATION;
        $APPLICATION->setTitle(GetMessage('INTR_MAIL_MANAGE_PAGE_TITLE'));
        CJSCore::Init(array('admin_interface'));
        if (!$USER->isAdmin() && !$USER->canDoOperation('bitrix24_config')) {
            $APPLICATION->AuthForm(GetMessage('ACCESS_DENIED'));
            return;
        }
        $this->arParams['SERVICES'] = array();
        $services = CIntranetMailSetupHelper::getMailServices();
        foreach ($services as $service) {
            if ($service['type'] == 'controller') {
                $crDomains = CControllerClient::ExecuteEvent('OnMailControllerGetDomains', array());
                if (!empty($crDomains['result']) && is_array($crDomains['result'])) {
                    $service['domains'] = $crDomains['result'];
                    $service['users'] = array();
                    foreach ($service['domains'] as $domain) {
                        $service['users'][$domain] = array();
                    }
                    $crUsers = CControllerClient::ExecuteEvent('OnMailControllerGetUsers', array());
                    if (!empty($crUsers['result']) && is_array($crUsers['result'])) {
                        foreach ($crUsers['result'] as $email) {
                            list($login, $domain) = explode('@', $email, 2);
                            if (isset($service['users'][$domain])) {
                                $service['users'][$domain][] = $login;
                            }
                        }
                        $dbMailboxes = CMailbox::getList(array('TIMESTAMP_X' => 'ASC'), array('ACTIVE' => 'Y', '!USER_ID' => 0, 'SERVICE_ID' => $service['id']));
                        while ($mailbox = $dbMailboxes->fetch()) {
                            list($login, $domain) = explode('@', $mailbox['LOGIN'], 2);
                            if (!empty($service['users'][$domain]) && ($key = array_search($login, $service['users'][$domain])) !== false) {
                                array_splice($service['users'][$domain], $key, 1);
                            }
                        }
                    }
                    $this->arParams['SERVICES'][] = $service;
                }
            }
            if (in_array($service['type'], array('domain', 'crdomain'))) {
                $result = self::checkDomainStatus(array('type' => $service['type'], 'domain' => $service['server'], 'token' => $service['token']), $error);
                if (!empty($result['stage']) && $result['stage'] == 'added') {
                    $service['domains'] = array($service['server']);
                    $service['users'] = array($service['server'] => array());
                    if ($service['type'] == 'domain') {
                        $users = CMailDomain2::getDomainUsers($service['token'], $service['server'], $error);
                        if (!empty($users) && is_array($users)) {
                            $service['users'][$service['server']] = $users;
                        }
                    } else {
                        if ($service['type'] == 'crdomain') {
                            $crUsers = CControllerClient::ExecuteEvent('OnMailControllerGetMemberUsers', array('DOMAIN' => $service['server']));
                            if (!empty($crUsers['result']) && is_array($crUsers['result'])) {
                                $service['users'][$service['server']] = $crUsers['result'];
                            }
                        }
                    }
                    $dbMailboxes = CMailbox::getList(array('TIMESTAMP_X' => 'ASC'), array('ACTIVE' => 'Y', '!USER_ID' => 0, 'SERVICE_ID' => $service['id']));
                    while ($mailbox = $dbMailboxes->fetch()) {
                        list($login, $domain) = explode('@', $mailbox['LOGIN'], 2);
                        if (!empty($service['users'][$domain]) && ($key = array_search($login, $service['users'][$domain])) !== false) {
                            array_splice($service['users'][$domain], $key, 1);
                        }
                    }
                    $this->arParams['SERVICES'][] = $service;
                }
            }
        }
        $this->arResult['GRID_ID'] = 'manage_domain_grid';
        $gridOptions = new CGridOptions($this->arResult['GRID_ID']);
        $arSort = $gridOptions->getSorting(array('sort' => array('ID' => 'ASC'), 'vars' => array('by' => 'by', 'order' => 'order')));
        $arNav = $gridOptions->getNavParams(array('nPageSize' => 50));
        $arSortArg = each($arSort['sort']);
        $arFilter = array('ACTIVE' => 'Y', '!UF_DEPARTMENT' => false);
        if (isset($_REQUEST['act']) && $_REQUEST['act'] == 'search' && !empty($_REQUEST['FILTER'])) {
            $this->arResult['FILTER'] = $_REQUEST['FILTER'];
            $userIds = array();
            $dbMailboxes = CMailbox::getList(array('TIMESTAMP_X' => 'ASC'), array('LID' => SITE_ID, 'ACTIVE' => 'Y', '!USER_ID' => 0, 'LOGIN' => $_REQUEST['FILTER']));
            while ($mailbox = $dbMailboxes->fetch()) {
                if (in_array($mailbox['SERVER_TYPE'], array('imap', 'controller', 'domain'))) {
                    $userIds[] = $mailbox['USER_ID'];
                }
            }
            $arFilter['ID'] = empty($userIds) ? 0 : join('|', $userIds);
        }
        $dbUsers = CUser::GetList($arSortArg['key'], $arSortArg['value'], $arFilter, array('FIELDS' => array('ID', 'LOGIN', 'NAME', 'SECOND_NAME', 'LAST_NAME', 'PERSONAL_PHOTO', 'WORK_POSITION')));
        $dbUsers->navStart($arNav['nPageSize']);
        $arRows = array();
        while ($user = $dbUsers->fetch()) {
            $user['DETAIL_URL'] = COption::getOptionString('intranet', 'search_user_url', '/user/#ID#/');
            $user['DETAIL_URL'] = str_replace(array('#ID#', '#USER_ID#'), array($user['ID'], $user['ID']), $user['DETAIL_URL']);
            $user['PHOTO_THUMB'] = '<img src="/bitrix/components/bitrix/main.user.link/templates/.default/images/nopic_30x30.gif" border="0" alt="" width="32" height="32">';
            if (intval($user['PERSONAL_PHOTO']) > 0) {
                $imageFile = CFile::getFileArray($user['PERSONAL_PHOTO']);
                if ($imageFile !== false) {
                    $arFileTmp = CFile::resizeImageGet($imageFile, array('width' => 42, 'height' => 42), BX_RESIZE_IMAGE_EXACT, false);
                    $user['PHOTO_THUMB'] = CFile::showImage($arFileTmp['src'], 32, 32);
                }
            }
            $anchor_id = RandString(8);
            $arCols = array('NAME' => '<table id="user_' . $user['ID'] . '" style="border-collapse: collapse; border: none; ">
					<tr>
						<td style="border: none !important; padding: 0px !important; ">
							<div style="width: 32px; height: 32px; margin:2px; padding: 2px; box-shadow:0 0 2px 1px rgba(0, 0, 0, 0.1);">
								<a href="' . $user['DETAIL_URL'] . '">' . $user['PHOTO_THUMB'] . '</a>
							</div>
						</td>
						<td style="border: none !important; padding: 0px 0px 0px 7px !important; vertical-align: top; ">
							<a href="' . $user['DETAIL_URL'] . '"><b>' . CUser::formatName(CSite::getNameFormat(), $user, true, true) . '</b></a><br>
							' . htmlspecialcharsbx($user['WORK_POSITION']) . '
						</td>
					</tr>
				</table>', 'EMAIL' => '', 'ADD' => '', 'DELETE' => '');
            if ($mailbox = CIntranetMailSetupHelper::getUserMailbox($user['ID'])) {
                switch ($mailbox['SERVER_TYPE']) {
                    case 'imap':
                        $arCols['EMAIL'] = $mailbox['LOGIN'];
                        if (strpos($mailbox['LOGIN'], '@') === false) {
                            $arCols['EMAIL'] .= '<br><span style="font-weight: normal; ">imap://' . $mailbox['SERVER'] . ':' . $mailbox['PORT'] . '</span>';
                        }
                        $arCols['ADD'] = '<a href="#" onclick="mb.create(' . $user['ID'] . '); return false; ">' . GetMessage('INTR_MAIL_MANAGE_CHANGE') . '</a>';
                        break;
                    case 'controller':
                    case 'domain':
                    case 'crdomain':
                        $arCols['EMAIL'] = $mailbox['LOGIN'];
                        $arCols['ADD'] = '<a href="#" onclick="mb.create(' . $user['ID'] . '); return false; ">' . GetMessage('INTR_MAIL_MANAGE_CHANGE') . '</a><br><a href="#" onclick="mb.changePassword(' . $user['ID'] . '); return false; ">' . GetMessage('INTR_MAIL_MANAGE_PASSWORD') . '</a>';
                        $arCols['DELETE'] = '<a href="#" onclick="mb.remove(' . $user['ID'] . '); return false; ">' . GetMessage('INTR_MAIL_MANAGE_DELETE') . '</a>';
                        break;
                }
            } else {
                $arCols['ADD'] = '<a href="#" onclick="mb.create(' . $user['ID'] . '); return false; ">' . GetMessage('INTR_MAIL_MANAGE_CREATE') . '</a>';
            }
            if (empty($this->arParams['SERVICES'])) {
                $arCols['ADD'] = '';
                $arCols['DELETE'] = '';
            }
            $arCols['EMAIL'] = '<span id="email_' . $user['ID'] . '" style="font-weight: bold; white-space: nowrap; ">' . $arCols['EMAIL'] . '</span>';
            $arCols['ADD'] = '<span id="create_' . $user['ID'] . '" style="white-space: nowrap; ">' . $arCols['ADD'] . '</span>';
            $arCols['DELETE'] = '<span id="delete_' . $user['ID'] . '" style="white-space: nowrap; ">' . $arCols['DELETE'] . '</span>';
            $arRows[$user['ID']] = array('data' => $user, 'columns' => $arCols);
        }
        $this->arResult['ROWS'] = $arRows;
        $this->arResult['ROWS_COUNT'] = $dbUsers->selectedRowsCount();
        $this->arResult['NAV_OBJECT'] = $dbUsers;
        $this->arResult['NAV_OBJECT']->bShowAll = false;
        $this->includeComponentTemplate('manage');
    }
Ejemplo n.º 14
0
 private static function executeManageDeleteMailbox(&$error)
 {
     $error = false;
     $userId = $_REQUEST['USER_ID'];
     if (!check_bitrix_sessid()) {
         $error = GetMessage('INTR_MAIL_CSRF');
     }
     if ($error === false) {
         $mailbox = CIntranetMailSetupHelper::getUserMailbox($userId);
         if (empty($mailbox) || !in_array($mailbox['SERVER_TYPE'], array('controller', 'domain', 'crdomain'))) {
             $error = GetMessage('INTR_MAIL_AJAX_ERROR');
         }
     }
     if ($error === false) {
         CMailbox::delete($mailbox['ID']);
         list($login, $domain) = explode('@', $mailbox['LOGIN'], 2);
         if ($mailbox['SERVER_TYPE'] == 'domain') {
             $domainService = CIntranetMailSetupHelper::getDomainService($mailbox['SERVICE_ID']);
             CMailDomain2::deleteUser($domainService['token'], $domain, $login);
         } else {
             if ($mailbox['SERVER_TYPE'] == 'crdomain') {
                 $crResponse = CControllerClient::ExecuteEvent('OnMailControllerDeleteMemberUser', array('DOMAIN' => $domain, 'NAME' => $login));
                 if (!isset($crResponse['result'])) {
                     $error = empty($crResponse['error']) ? GetMessage('INTR_MAIL_CONTROLLER_INVALID') : CMail::getErrorMessage($crResponse['error']);
                 }
             } else {
                 if ($mailbox['SERVER_TYPE'] == 'controller') {
                     $crResponse = CControllerClient::ExecuteEvent('OnMailControllerDeleteUser', array('DOMAIN' => $domain, 'NAME' => $login));
                     if (!isset($crResponse['result'])) {
                         $error = empty($crResponse['error']) ? GetMessage('INTR_MAIL_CONTROLLER_INVALID') : CMail::getErrorMessage($crResponse['error']);
                     }
                 }
             }
         }
         CUserCounter::Clear($userId, 'mail_unseen', $mailbox['LID']);
         CUserOptions::DeleteOption('global', 'last_mail_check_' . $mailbox['LID']);
         CUserOptions::DeleteOption('global', 'last_mail_check_success_' . $mailbox['LID']);
     }
     if ($error === false) {
         $create = '<a href="#" onclick="mb.create(' . intval($userId) . '); return false; ">' . GetMessage('INTR_MAIL_MANAGE_CREATE') . '</a>';
     }
     return array('result' => $error === false ? 'ok' : 'error', 'create' => isset($create) ? CharsetConverter::ConvertCharset($create, SITE_CHARSET, 'UTF-8') : '', 'error' => CharsetConverter::ConvertCharset($error, SITE_CHARSET, 'UTF-8'));
 }
Ejemplo n.º 15
0
 public static function createMailbox($exists, $userId, $serviceId, $domain, $login, $password, &$error)
 {
     $error = false;
     if (intval($userId)) {
         $dbUser = CUser::getList($by = 'ID', $order = 'ASC', array('ID_EQUAL_EXACT' => intval($userId)), array('FIELDS' => 'ID'));
         if (!$dbUser->fetch()) {
             $error = GetMessage('INTR_MAIL_FORM_ERROR');
         }
     }
     if ($error === false) {
         $services = self::getMailServices();
         if (empty($services[$serviceId]) || !in_array($services[$serviceId]['type'], array('controller', 'domain', 'crdomain'))) {
             $error = GetMessage('INTR_MAIL_FORM_ERROR');
         }
     }
     if ($error === false) {
         $service = $services[$serviceId];
         if ($service['type'] == 'controller') {
             $crDomains = CControllerClient::ExecuteEvent('OnMailControllerGetDomains', array());
             $arDomains = empty($crDomains['result']) ? array() : $crDomains['result'];
             if (!is_array($arDomains) || !in_array($domain, $arDomains)) {
                 $error = CMail::getErrorMessage(CMail::ERR_API_OP_DENIED);
             }
         } else {
             if ($service['type'] == 'crdomain') {
                 $crDomains = CControllerClient::ExecuteEvent('OnMailControllerGetMemberDomains', array());
                 $arDomains = empty($crDomains['result']) ? array() : $crDomains['result'];
                 if (!is_array($arDomains) || !in_array($domain, $arDomains)) {
                     $error = CMail::getErrorMessage(CMail::ERR_API_OP_DENIED);
                 }
             } else {
                 if ($service['type'] == 'domain') {
                     if ($service['server'] != $domain) {
                         $error = GetMessage('INTR_MAIL_FORM_ERROR');
                     }
                 }
             }
         }
     }
     if ($error === false && !$exists) {
         if (!preg_match('/^[a-z0-9_]+(\\.?[a-z0-9_-]*[a-z0-9_]+)*?$/i', $login)) {
             $error = CMail::getErrorMessage(CMail::ERR_API_BAD_NAME);
         }
         if ($error === false) {
             if ($service['type'] == 'controller') {
                 $crResponse = CControllerClient::ExecuteEvent('OnMailControllerAddUser', array('DOMAIN' => $domain, 'NAME' => $login, 'PASSWORD' => $password));
                 if (!isset($crResponse['result'])) {
                     $error = empty($crResponse['error']) ? GetMessage('INTR_MAIL_CONTROLLER_INVALID') : CMail::getErrorMessage($crResponse['error']);
                 }
             } else {
                 if ($service['type'] == 'crdomain') {
                     $crResponse = CControllerClient::ExecuteEvent('OnMailControllerAddMemberUser', array('DOMAIN' => $domain, 'NAME' => $login, 'PASSWORD' => $password));
                     if (!isset($crResponse['result'])) {
                         $error = empty($crResponse['error']) ? GetMessage('INTR_MAIL_CONTROLLER_INVALID') : CMail::getErrorMessage($crResponse['error']);
                     }
                 } else {
                     if ($service['type'] == 'domain') {
                         $result = CMailDomain2::addUser($service['token'], $domain, $login, $password, $error);
                         if (is_null($result)) {
                             $error = CMail::getErrorMessage($error);
                         }
                     }
                 }
             }
         }
     }
     if ($error === false && intval($userId)) {
         if ($exists) {
             if ($service['type'] == 'controller') {
                 $crCheckMailbox = CControllerClient::ExecuteEvent('OnMailControllerCheckMailbox', array('DOMAIN' => $domain, 'NAME' => $login));
                 if (!isset($crCheckMailbox['result'])) {
                     $error = empty($crCheckMailbox['error']) ? GetMessage('INTR_MAIL_CONTROLLER_INVALID') : CMail::getErrorMessage($crCheckMailbox['error']);
                 }
             }
             if ($error === false) {
                 $dbMailbox = CMailbox::getList(array('TIMESTAMP_X' => 'ASC'), array('ACTIVE' => 'Y', '!USER_ID' => intval($userId), '=LOGIN' => $login . '@' . $domain));
                 if (($mailbox = $dbMailbox->fetch()) && $mailbox['USER_ID']) {
                     $error = GetMessage('INTR_MAIL_MAILBOX_OCCUPIED');
                 }
             }
         }
         if ($error === false) {
             $mailbox = self::getUserMailbox($userId);
             if (!empty($mailbox)) {
                 $res = CMailbox::delete($mailbox['ID']);
             }
             $arFields = array('LID' => SITE_ID, 'ACTIVE' => 'Y', 'SERVICE_ID' => $serviceId, 'NAME' => $service['name'], 'LOGIN' => $login . '@' . $domain, 'SERVER_TYPE' => $service['type'], 'USER_ID' => intval($userId));
             $res = CMailbox::add($arFields);
             if (!$res) {
                 $error = GetMessage('INTR_MAIL_SAVE_ERROR');
             }
         }
     }
     if ($error === false) {
         return $login . '@' . $domain;
     }
 }