예제 #1
0
 private static function init()
 {
     if (!self::$isAdmin && system::$isAdmin) {
         // Определяем домен для панели управления
         // Определяем домен по УРЛу
         if (system::issetUrl(0)) {
             $tmp_domain = self::get(str_replace('_', '.', system::url(0)));
             if ($tmp_domain instanceof domain) {
                 self::$cur_domain = $tmp_domain;
                 system::clipUrl();
                 languages::setCurLang(self::$cur_domain->getDefLang());
             }
         }
         // Проверяем, имеет ли пользователь доступ к данному домену
         if (!user::issetRight(languages::curId() . ' ' . self::$cur_domain->id(), 'structure')) {
             //echo languages::curId().' '.self::$cur_domain->id();
             $langs = languages::getAll();
             $domains = domains::getAll();
             if (count($langs) > 1 || count($domains) > 1) {
                 while (list($num2, $domain) = each($domains)) {
                     reset($langs);
                     while (list($num1, $lang) = each($langs)) {
                         if (user::issetRight($lang['l_id'] . ' ' . $domain['d_id'], 'structure')) {
                             $link = ADMIN_URL;
                             if ($domain['d_id'] != 1) {
                                 $link .= '/' . str_replace('.', '_', $domain['d_name']);
                             }
                             if ($lang['l_id'] != 1) {
                                 $link = '/' . $lang['l_prefix'] . $link;
                             }
                             system::redirect($link, true);
                         }
                     }
                 }
             }
         }
         self::$isAdmin = true;
     } else {
         if (empty(self::$cur_domain)) {
             // Опеделяем домен для сайта
             $domain_id = reg::getKey('/core/cur_domain/id');
             if (!empty($domain_id)) {
                 // Если домен в системе один, загружаем его данные из реестра
                 $domain_name = reg::getKey('/core/cur_domain/name');
                 self::$domains[$domain_id] = array('d_id' => $domain_id, 'd_name' => $domain_name, 'd_domain_id' => '', 'd_def_lang' => reg::getKey('/core/cur_domain/def_lang'), 'd_sitename' => reg::getKey('/core/cur_domain/sitename'), 'd_email' => reg::getKey('/core/cur_domain/email'), 'd_online' => reg::getKey('/core/cur_domain/online'), 'd_offline_msg' => reg::getKey('/core/cur_domain/offline_msg'), 'd_error_msg' => reg::getKey('/core/cur_domain/error_msg'), 'id' => $domain_id);
                 self::$domains_rel[$domain_name] = $domain_id;
             } else {
                 $serv_name = $_SERVER['HTTP_HOST'];
                 if (substr($serv_name, 0, 4) == 'www.') {
                     $serv_name = substr($serv_name, 4, strlen($serv_name) - 4);
                 }
                 self::$cur_domain = self::get($serv_name);
             }
             if (!self::$cur_domain instanceof domain) {
                 self::$cur_domain = self::get(1);
             }
             if (!self::$cur_domain instanceof domain) {
                 die('не могу определить домен');
             }
             self::$cur_site_domain = self::$cur_domain;
         }
     }
 }