public function proc() { //reg::setKey('/users/errorCountCapcha', system::POST('errorCountCapcha')); reg::setKey('/users/errorCountBlock', system::POST('errorCountBlock')); reg::setKey('/users/reg', system::POST('reg', isBool)); reg::setKey('/users/activation', system::POST('activation', isBool)); reg::setKey('/users/confirm', system::POST('confirm', isBool)); reg::setKey('/users/ask_email', system::POST('ask_email', isBool)); //авторизация чере соц. сети reg::setKey('/users/twitter_bool', system::POST('twitter_bool'), isBool); reg::setKey('/users/twitter_id', system::POST('twitter_id'), isString); reg::setKey('/users/twitter_secret', system::POST('twitter_secret'), isString); reg::setKey('/users/vk_bool', system::POST('vk_bool'), isBool); reg::setKey('/users/vk_id', system::POST('vk_id'), isString); reg::setKey('/users/vk_secret', system::POST('vk_secret'), isString); reg::setKey('/users/ok_bool', system::POST('ok_bool'), isBool); reg::setKey('/users/ok_id', system::POST('ok_id'), isString); reg::setKey('/users/ok_public', system::POST('ok_public'), isString); reg::setKey('/users/ok_secret', system::POST('ok_secret'), isString); reg::setKey('/users/facebook_bool', system::POST('facebook_bool'), isBool); reg::setKey('/users/facebook_id', system::POST('facebook_id'), isString); reg::setKey('/users/facebook_secret', system::POST('facebook_secret'), isString); reg::setKey('/users/yandex_bool', system::POST('yandex_bool'), isBool); reg::setKey('/users/google_bool', system::POST('google_bool'), isBool); 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('/users/settings'); }
public function delete() { if (!empty($this->id) && $this->id != 1) { $is_ok = true; $list = languages::getAll(); while (list($key, $val) = each($list)) { // Удаление страниц $tmp = ormPages::delAllFor($this->id, $val['id']); if (!$tmp) { $is_ok = $tmp; } else { // Удаление прав на домен db::q('DELETE FROM <<modules_rights>> WHERE mr_name = "' . $val['id'] . ' ' . $this->id . '" and mr_mod_id = "3";'); } } // Удаление домена if ($is_ok) { $is_ok = db::q('DELETE FROM <<domains>> WHERE d_id = "' . $this->id . '";'); if ($is_ok !== false) { // Удаление настроек reg::delKey('/structure/' . $this->id); system::log('Удален домен "' . $this->values['d_name'] . '" (id:' . $this->id . ')', warning); return true; } else { system::log('Произошла ошибка при удалении домена "' . $this->values['d_name'] . '" (id:' . $this->id . ')', error); $this->newError(12, 'Произошла ошибка при удалении домена "' . $this->values['d_name'] . '"!'); } } else { system::log('Пользователь пытался удалить домен "' . $this->values['d_name'] . '" (id:' . $this->id . '), но ему не хватило прав на удаление всех страниц!', error); $this->newError(63, 'Вы не можете удалить домен "' . $this->values['d_name'] . '", т.к. не имеете прав на удаление некоторых страниц!'); } } return false; }
public function defAction() { // Устанавливаем статус системы "в режиме администрирования". system::$isAdmin = true; page::$macros = 0; // Попытка авторизации if (!empty($_POST['enter'])) { if (!user::auth($_POST['login'], $_POST['passw'])) { $this->showAuthForm(1); } else { header("Location: " . $_SERVER["HTTP_REFERER"]); } } // Если пользователь не админ, показываем форму авторизации if (!user::isAdmin()) { $this->showAuthForm(); } // Определяем текущий домен domains::curDomain(); // Выход из системы if (system::issetUrl(0) && system::url(0) == 'logout') { user::logout(); } if (system::url(0) == 'showhide') { $_SESSION['SH_FIELDS'] = system::url(1) == 0 ? 'hide' : 'show'; system::stop(); } // Обработка запросов от поля ObjectLinks ui::checkObjectLinks(); system::$defTemplate = MODUL_DIR . '/mpanel/template/default.tpl'; // Определяем модуль if (!system::issetUrl(0)) { system::setUrl(0, user::getDefModul()); } // Если есть ссылка на обработчик формы if (!empty($_POST['right'])) { system::setUrl(1, system::POST('right', isVarName)); } // Определяем право if (system::issetUrl(1)) { // Проверяем существует ли указанное право if (user::issetRight(system::url(1))) { $currRight = system::url(1); } else { if (user::issetRight(str_replace('_proc', '', system::url(1)))) { $currRight = system::url(1); } } } else { // Пытаемся найти право по умолчанию $def_right = user::getDefaultRight(system::url(0)); if ($def_right) { $currRight = $def_right; system::setUrl(1, $def_right); } } $this->getMenu(); page::assign('current_url', system::getCurrentUrl()); page::assign('admin_url', system::au()); if (!empty($currRight)) { // Определяем имя и метод контролера $pos = strpos($currRight, '_'); if ($pos) { $class_name = '__' . substr($currRight, 0, $pos); $action_name = substr($currRight, $pos + 1, strlen($currRight) - $pos); } else { $class_name = '__' . $currRight; $action_name = 'defAction'; } $mod_name = MODUL_DIR . '/' . system::url(0) . '/' . $class_name . '.php'; // Пытаемся подгрузить модуль if (file_exists($mod_name)) { include $mod_name; if (file_exists(MODUL_DIR . '/' . system::url(0) . '/lang-ru.php')) { include MODUL_DIR . '/' . system::url(0) . '/lang-ru.php'; } ui::setHeader(lang::right($currRight)); if (class_exists($class_name)) { eval('$c = new ' . $class_name . '();'); if (ui::$stop) { $content = '.'; } else { if (method_exists($c, $action_name)) { $content = call_user_func(array($c, $action_name)); } } } } if (empty($content)) { $msg = lang::get('TEXT_PROC_NOTFOUND2') . '<br />' . system::getCurrentUrl() . '<br /><br /> ' . lang::get('TEXT_PROC_NOTFOUND3') . '<br />' . $mod_name . '<br /><br /> ' . lang::get('TEXT_PROC_NOTFOUND4'); system::log(lang::get('TEXT_PROC_NOTFOUND') . ' ' . system::getCurrentUrl()); ui::MessageBox(lang::get('TEXT_PROC_NOTFOUND'), $msg); system::redirect('/'); } } else { system::log(lang::get('TEXT_ERROR_RIGHT_LOG') . system::getCurrentUrl()); ui::MessageBox(lang::get('TEXT_ERROR_RIGHT'), lang::get('TEXT_ERROR_RIGHT2')); system::redirect('/'); } //Производим сжатие страницы if (reg::getKey('/config/gzip')) { $PREFER_DEFLATE = false; $FORCE_COMPRESSION = false; $AE = isset($_SERVER['HTTP_ACCEPT_ENCODING']) ? $_SERVER['HTTP_ACCEPT_ENCODING'] : $_SERVER['HTTP_TE']; $support_gzip = strpos($AE, 'gzip') !== FALSE || $FORCE_COMPRESSION; $support_deflate = strpos($AE, 'deflate') !== FALSE || $FORCE_COMPRESSION; if ($support_gzip && $support_deflate) { $support_deflate = $PREFER_DEFLATE; } if ($support_deflate) { header("Content-Encoding: deflate"); ob_start("compress_output_deflate"); } else { if ($support_gzip) { header("Content-Encoding: gzip"); ob_start("compress_output_gzip"); } else { ob_start(); } } } return ui::getMainHTML($content); }
function test() { global $_SYSTEM; if (!is_dir('cache')) { system::log('Cache __construct() FAILD! Cache directoty does not exist.'); return false; } if (!@file_put_contents('cache/test.cache', 'NULL')) { system::log('Cache __construct() FAILD! Cannot access to cache directoty.'); return false; } return true; }
/** * @return Результат выполнения запроса * @param string $sql - Код SQL-запроса * @param const $method - Метод обработки результатов выполнения запроса Используйте одну из констант: records - Вернет результат в виде двумерного ассоциативного массива record - Вернет результат в виде одномерного ассоциативного массива values - Вернет результат в виде одномерного массива value - Вернет результат в виде значения * @param boolean $show_info - Если true, выведет информацию для отладки * @desc Выполняет запрос, возвращает результат для обработки */ public static function q($sql, $method = 0, $show_info = false) { self::init(); system::setTimeLabel(999); $sql = self::addPrefix($sql); //system::log($sql); // system::log(str_replace(array(Chr(9), Chr(10), Chr(13)), '', $sql), error); if ($show_info) { echo '<b>SQL-запрос:</b><br />' . $sql . '<br /><br />'; } try { if (strtolower(substr($sql, 0, 6)) == 'insert') { // Обработка запроса INSERT self::$pdo->exec($sql); $value = self::$pdo->lastInsertId(); } else { if (empty($method)) { // Просто выполнение запроса, без возврата результата. $value = self::$pdo->exec($sql); } else { // Обработка запроса SELECT $res = self::$pdo->query($sql); if ($method == records) { // Получаем много записей $value = $res->fetchAll(PDO::FETCH_ASSOC); } else { if ($method == record) { // Получаем одну запись $value = $res->fetch(PDO::FETCH_ASSOC); } else { if ($method == values) { // Получаем одну запись, нумерованный массив $value = $res->fetch(PDO::FETCH_NUM); } else { if ($method == value) { // Получаем одно значение $mas = $res->fetch(PDO::FETCH_NUM); $value = isset($mas[0]) ? $mas[0] : ''; } } } } } } } catch (Exception $e) { // Ошибка при выполнении запроса $value = false; // Пишем в журнал system::log($e->getMessage(), error); system::log(str_replace(array(Chr(9), Chr(10), Chr(13)), '', $sql), error); // Вывод сообщения об ошибке if (SHOW_SQL_ERRORS != -1 && ($_SERVER['SERVER_ADDR'] == '127.0.0.1' || SHOW_SQL_ERRORS)) { if ($show_info) { echo '<b>ОШИБКИ:</b><br />' . $e->getMessage() . '<br /><br />'; } else { header('Content-Type: text/html; charset=utf-8'); echo '<b>SQL-запрос:</b><br />' . $sql . '<br /><br />'; echo '<b>ОШИБКИ:</b><br />' . $e->getMessage() . '<br /><br />'; } } else { if ($e->getCode() == '42S02') { // Отсутсвие таблиц. Выводим всегда, если не на локалхосте. $msg = '<h3>Ошибка при работе с БД!</h3><br/>'; $msg .= 'Соединение установлено, но необходимые таблицы отсутствуют. <br/><br/>Скорей всего БД пустая или в ней не хватает некоторых таблиц. Попробуйте перезалить дамп БД, а так же перепроверьте префикс для таблиц в настройках подключения к БД.'; page::globalVar('title', 'Bagira.CMS'); page::globalVar('content', $msg); page::parseIt(TEMPL_DIR . '/offline.tpl', true); die; } } } if ($show_info) { echo '<b>Результат:</b><br />'; print_r($value); echo '<br /><br />'; } $time = system::getTimeLabel(999, false); self::toList($sql . '<br />' . $time); return $value; }
static function auth($login, $password) { $ret = false; $login = system::checkVar($login, isString); $sel = new ormSelect('user'); $sel->where($sel->val('active', '=', 1), $sel->val('login', '=', trim($login)), $sel->containedIn('user_group', $sel->val('active', '=', 1))); $sel->limit(1); if (self::$obj = $sel->getObject()) { if (self::$obj->password == system::checkVar($password, isPassword)) { $ret = self::authHim(self::$obj); } else { $max_error = reg::getKey('/users/errorCountBlock'); //Смотрим, если у юзера уже N неправильных паролей, то блокируем его if (self::$obj->error_passw + 1 >= $max_error && $max_error > 0) { self::$obj->active = 0; self::sendMailBlock(self::$obj); } self::$obj->error_passw++; self::$obj->save(); if (!self::$obj->active) { //записываем что пользователь заблокирован по своей дурости из-за не знания пароля system::log(str_replace('%user%', $login, str_replace('%count%', $max_error, lang::get('BLOCKED_USER'))), error); } else { //Записываем в журнал о неправильном вводе пароля system::log(str_replace('%user%', $login, lang::get('ERROR_PASSWORD')), error); } } } return $ret; }
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; }
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'); }
function validate_icon($icondata, $id) { global $_SYSTEM, $mysql, $_FPREFIX; if (!$icondata || !$icondata['itemicon'] || !file_exists($_FPREFIX . 'images/icons/64x64/' . strtolower(basename($icondata['itemicon'])) . '.jpg') || trim(basename($icondata['itemicon'])) == '') { $_SYSTEM->update_icon_db($id); $data = $mysql->getRow("select * from itemicon where itemnumber = ?1", $id, 'armory'); } else { $data = $icondata; } if (!$data || trim($data['itemhtml']) == '') { if (!$data) { $data = array(); } $name = $mysql->getRow("select name from item_template where entry = ?1", $id, 'world'); if ($name) { $data['itemhtml'] = '<strong>' . $name['name'] . '</strong>'; } else { system::log("Cannot load item name (ID: {$id}, SQL [" . mysql_error() . "])"); } } $data['itemicon'] = trim($data['itemicon']); return $data; }