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