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'); } }