예제 #1
0
 private function getLangsAndDomains($TEMPLATE)
 {
     $sub_menu = '';
     $langs = languages::getAll();
     $domains = domains::getAll();
     page::assign('ldObjectLinks', '');
     if (count($langs) > 1 || count($domains) > 1) {
         $isMultiDom = count($domains) > 1 ? true : false;
         $sub_items = $curLD = '';
         $mas = array();
         $num = 0;
         while (list($num2, $domain) = each($domains)) {
             reset($langs);
             while (list($num1, $lang) = each($langs)) {
                 if (user::issetRight($lang['l_id'] . ' ' . $domain['d_id'], 'structure')) {
                     if ($isMultiDom) {
                         $lanver = $domain['d_name'];
                         if ($lang['l_id'] != $domain['d_def_lang']) {
                             $lanver .= '/' . $lang['l_prefix'];
                         }
                     } else {
                         $lanver = $lang['l_name'];
                     }
                     $link = ADMIN_URL;
                     if ($domain['d_id'] != domains::curSiteDomain()->id()) {
                         $link .= '/' . str_replace('.', '_', $domain['d_name']);
                     }
                     if ($lang['l_id'] != $domain['d_def_lang']) {
                         $link = '/' . $lang['l_prefix'] . $link;
                     }
                     if (domains::curId() == $domain['d_id'] && languages::curId() == $lang['l_id']) {
                         $curLD = $link;
                     }
                     page::assign('name', $lanver);
                     page::assign('url', $link);
                     $sub_items .= page::parse($TEMPLATE['langver']);
                     $mas[] = array('id' => $link, 'name' => $lanver);
                     $num++;
                 }
             }
         }
         if (!empty($sub_items) && $num > 1) {
             if ($isMultiDom) {
                 $lanver = domains::curDomain()->getName() . languages::pre();
             } else {
                 $lanver = languages::curLang()->getName();
             }
             page::assign('eshe', $lanver);
             page::assign('sub_items', $sub_items);
             $sub_menu = page::parse($TEMPLATE['sub_menu']);
             ui::SelectBox('ldObjectLinks', $mas, $curLD, 474, '', 'onSelectldObjectLinks()');
         }
     }
     return $sub_menu;
 }
예제 #2
0
    public function delete()
    {
        if (!empty($this->id) && $this->id != 1) {
            $is_ok = true;
            // Удаляем права, настройки и страницы связанные с данным языком
            $domain = domains::getAll();
            while (list($key, $val) = each($domain)) {
                // Удаление страниц
                $tmp = ormPages::delAllFor($val['id'], $this->id);
                if (!$tmp) {
                    $is_ok = $tmp;
                } else {
                    // Удаление настроек
                    reg::delKey('/structure/' . $val['id'] . '/' . $this->id);
                    // Удаление прав
                    db::q('DELETE FROM <<modules_rights>>
	    				   WHERE mr_name = "' . $this->id . ' ' . $val['id'] . '"
	    				   		 and mr_mod_id = "3";');
                }
            }
            // Удаляем сам язык
            if ($is_ok) {
                // У все доменов приязанных к текущему языку, меняем "язык по умолчанию".
                $domain = db::q('SELECT d_id FROM <<domains>> WHERE d_def_lang = "' . $this->id . '";', records);
                while (list($key, $val) = each($domain)) {
                    if (!empty($val['d_id'])) {
                        $domain = domains::get($val['d_id']);
                        if ($domain instanceof domain) {
                            $domain->setDefLang(1);
                            $domain->save();
                        }
                    }
                }
                $is_ok = db::q('DELETE FROM <<langs>> WHERE l_id = "' . $this->id . '";');
                if ($is_ok !== false) {
                    system::log('Удалена языковая версия сайта "' . $this->values['l_name'] . '" (id:' . $this->id . ')!', warning);
                    return true;
                } else {
                    system::log('Произошла ошибка при удалении языка "' . $this->values['l_name'] . '" (id:' . $this->id . ')!', error);
                    $this->newError(54, 'Произошла ошибка при удалении языка "' . $this->values['l_name'] . '"!');
                }
            } else {
                system::log('Пользователь пытался удалить языковую версию "' . $this->values['l_name'] . '" (id:' . $this->id . '), но у него не хватило прав на удаление всех страниц!', error);
                $this->newError(55, 'Вы не можете удалить язык сайта "' . $this->values['l_name'] . '", т.к. не имеете прав на удаление некоторых страниц!');
            }
        }
        return false;
    }
예제 #3
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;
         }
     }
 }
예제 #4
0
 public function proc()
 {
     reg::setKey('/core/gzip', system::POST('gzip', isBool));
     reg::setKey('/core/delToTrash', system::POST('delToTrash', isBool));
     reg::setKey('/core/scaleBigJpeg', system::POST('scaleBigJpeg', isBool));
     reg::setKey('/core/sizeBigJpeg', system::POST('sizeBigJpeg', isInt));
     reg::setKey('/core/noIE6', system::POST('noIE6', isBool));
     reg::setKey('/core/noIE7', system::POST('noIE7', isBool));
     reg::setKey('/core/noIE8', system::POST('noIE8', isBool));
     reg::setKey('/core/noDelMiniTexts', system::POST('noDelMiniTexts', isBool));
     // Загрузка ватермарка
     if (isset($_FILES['file_watermark']) && !empty($_FILES['file_watermark']['name'])) {
         if (system::fileExtIs($_FILES['file_watermark']['name'], array('png'))) {
             $watermark = system::copyFile($_FILES['file_watermark']['tmp_name'], $_FILES['file_watermark']['name'], '/upload/image');
         } else {
             ui::MessageBox(lang::get('CONFIG_SAVE_ERROR'), lang::get('CONFIG_WATERMARK_ERROR'));
         }
     }
     if (!isset($watermark) && isset($_POST['watermark'])) {
         if (system::fileExtIs($_POST['watermark'], array('png')) || empty($_POST['watermark'])) {
             $watermark = system::checkVar($_POST['watermark'], isString);
         } else {
             ui::MessageBox(lang::get('CONFIG_SAVE_ERROR'), lang::get('CONFIG_WATERMARK_ERROR') . '123');
         }
     }
     if (isset($watermark) && $watermark != reg::getKey('/core/watermark')) {
         reg::setKey('/core/watermark', $watermark);
         $this->deleteCacheWatermark($watermark);
     }
     // ******************	Сохранение доменов 	***************************
     function changeDomain($id, $data)
     {
         $online = isset($data['d_online']) ? $data['d_online'] : 0;
         $isAdd = empty($id) ? true : false;
         $obj = new domain($id);
         $obj->setName($data['d_name']);
         $obj->setOnline($online);
         $obj->setDefLang($data['d_def_lang']);
         $obj->setEmail($data['d_email']);
         $obj->setSiteName($data['d_sitename']);
         $id = $obj->save();
         if ($id === false) {
             ui::MessageBox(lang::get('TEXT_MESSAGE_ERROR'), $obj->getErrorListText());
         } else {
             if ($isAdd) {
                 ui::MessageBox(lang::get('CONFIG_DOMAIN_ADD'), lang::get('CONFIG_DOMAIN_TEXT'));
             }
         }
         return true;
     }
     function delDomain($id)
     {
         $obj = new domain($id);
         if ($obj->delete() === false) {
             ui::MessageBox(lang::get('TEXT_MESSAGE_ERROR'), $obj->getErrorListText());
         }
     }
     $form = new uiMultiForm('domains');
     $form->process('changeDomain', 'delDomain');
     // ******************	Сохранение языков 	***************************
     function changeLang($id, $data)
     {
         $isAdd = empty($id) ? true : false;
         $obj = new language($id);
         $obj->setName($data['l_name']);
         $obj->setPrefix($data['l_prefix']);
         $id = $obj->save();
         if ($id === false) {
             ui::MessageBox(lang::get('TEXT_MESSAGE_ERROR'), $obj->getErrorListText());
         } else {
             if ($isAdd) {
                 ui::MessageBox(lang::get('CONFIG_LANG_ADD'), lang::get('CONFIG_LANG_TEXT'));
             }
         }
         return true;
     }
     function delLang($id)
     {
         $obj = new language($id);
         if ($obj->delete() === false) {
             ui::MessageBox(lang::get('TEXT_MESSAGE_ERROR'), $obj->getErrorListText());
         }
     }
     $form = new uiMultiForm('langs');
     $form->process('changeLang', 'delLang');
     // Если в системе только один язык, сохраняем его данные в реестр для быстрой подгрузки
     if (count(languages::getAll(true)) == 1) {
         reg::setKey('/core/cur_lang/id', languages::get(1, true)->id());
         reg::setKey('/core/cur_lang/prefix', languages::get(1, true)->getPrefix());
         reg::setKey('/core/cur_lang/name', languages::get(1, true)->getName());
     } else {
         reg::delKey('/core/cur_lang');
     }
     // Если в системе только один домен, сохраняем его данные в реестр для быстрой подгрузки
     if (count(domains::getAll(true)) == 1) {
         reg::setKey('/core/cur_domain/id', domains::get(1, true)->id());
         reg::setKey('/core/cur_domain/name', domains::get(1, true)->getName());
         reg::setKey('/core/cur_domain/def_lang', domains::get(1, true)->getDefLang());
         reg::setKey('/core/cur_domain/sitename', domains::get(1, true)->getSiteName());
         reg::setKey('/core/cur_domain/email', domains::get(1, true)->getEmail());
         reg::setKey('/core/cur_domain/online', domains::get(1, true)->online());
         reg::setKey('/core/cur_domain/offline_msg', domains::get(1, true)->getOfflineMsg());
         reg::setKey('/core/cur_domain/error_msg', domains::get(1, true)->getErrorMsg());
     } else {
         reg::delKey('/core/cur_domain');
     }
     ui::MessageBox(lang::get('CONFIG_SAVE_OK'), lang::get('CONFIG_SAVE_OK_MSG'));
     reg::clearCache();
     system::log(lang::get('CONFIG_LOG_SAVE'), warning);
     system::redirect('/core/change');
 }