Пример #1
0
 private function redirect()
 {
     global $APPLICATION, $USER;
     $services = CIntranetMailSetupHelper::getMailServices();
     $mailbox = CIntranetMailSetupHelper::getUserMailbox($USER->GetID());
     $serviceId = $mailbox['SERVICE_ID'];
     $error = false;
     switch ($services[$serviceId]['type']) {
         case 'imap':
             if (!empty($services[$serviceId]['link'])) {
                 LocalRedirect($services[$serviceId]['link'], true);
             } else {
                 if (!empty($mailbox['LINK'])) {
                     LocalRedirect($mailbox['LINK'], true);
                 } else {
                     LocalRedirect($APPLICATION->GetCurPage() . '?page=home');
                 }
             }
             break;
         case 'controller':
             list($login, $domain) = explode('@', $mailbox['LOGIN'], 2);
             $crRedirect = CControllerClient::ExecuteEvent('OnMailControllerRedirect', array('LOCALE' => LANGUAGE_ID, 'DOMAIN' => $domain, 'NAME' => $login));
             if (isset($crRedirect['result'])) {
                 LocalRedirect($crRedirect['result'], true);
             } else {
                 $error = empty($crRedirect['error']) ? GetMessage('INTR_MAIL_CONTROLLER_INVALID') : CMail::getErrorMessage($crRedirect['error']);
             }
             break;
         case 'domain':
             list($login, $domain) = explode('@', $mailbox['LOGIN'], 2);
             $result = CMailDomain2::getRedirectUrl(LANGUAGE_ID, $services[$serviceId]['token'], $domain, $login, $errorUrl = '', $error);
             if (is_null($result)) {
                 $error = CMail::getErrorMessage($error);
             } else {
                 LocalRedirect($result, true);
             }
             break;
         case 'crdomain':
             list($login, $domain) = explode('@', $mailbox['LOGIN'], 2);
             $crRedirect = CControllerClient::ExecuteEvent('OnMailControllerMemberRedirect', array('LOCALE' => LANGUAGE_ID, 'DOMAIN' => $domain, 'NAME' => $login));
             if (isset($crRedirect['result'])) {
                 LocalRedirect($crRedirect['result'], true);
             } else {
                 $error = empty($crRedirect['error']) ? GetMessage('INTR_MAIL_CONTROLLER_INVALID') : CMail::getErrorMessage($crRedirect['error']);
             }
             break;
         default:
             LocalRedirect($APPLICATION->GetCurPage() . '?page=home');
     }
     if ($error !== false) {
         CUserCounter::Set($USER->GetID(), 'mail_unseen', -1, SITE_ID);
         CUserOptions::SetOption('global', 'last_mail_check_' . SITE_ID, time());
         CUserOptions::SetOption('global', 'last_mail_check_success_' . SITE_ID, false);
         LocalRedirect($APPLICATION->GetCurPage() . '?page=home');
     }
 }