Esempio n. 1
0
 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');
 }
Esempio n. 2
0
    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;
    }
Esempio n. 3
0
    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);
    }
Esempio n. 4
0
 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;
 }
Esempio n. 5
0
 /**
 * @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;
 }
Esempio n. 6
0
 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;
 }
Esempio n. 7
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;
    }
Esempio n. 8
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');
 }
Esempio n. 9
0
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;
}