示例#1
0
文件: translate.php 项目: pnixx/boot
 /**
  * Строим переводчик
  * @throws Exception
  */
 public function __construct()
 {
     //Строим путь до базы
     $dir = APPLICATION_PATH . "/lang/";
     //Получаем из куков язык
     if (class_exists("Boot_Cookie") && Boot_Cookie::get("lang")) {
         $lang = Boot_Cookie::get("lang");
     } elseif (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
         $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
     } else {
         $lang = "ru";
     }
     //Проверяем директорию
     if (is_dir($dir) == false) {
         throw new Boot_Exception("База перевода не найдена", 500);
     }
     $this->_dir = $dir;
     //Если файл перевода не найден
     if (file_exists($dir . $lang . ".json") == false) {
         $lang = "ru";
         if (class_exists("Boot_Cookie")) {
             Boot_Cookie::set('lang', $lang);
         }
     }
     //Парсим файл
     $this->parseJSON($lang);
     $this->_default = $lang;
 }
示例#2
0
文件: skey.php 项目: pnixx/boot
 /**
  * Создаём и возвращаем ключ
  */
 public function __construct()
 {
     if (isset($_COOKIE['skey_public'])) {
         //Получаем ключ
         $skey_public = $_COOKIE['skey_public'];
         //Разбиваем
         $match = explode("_", $skey_public);
         //Если вроде всё правильно получили
         if ($match && count($match) == 3) {
             //Проверяем правильность ключа
             if (md5(Boot::getInstance()->config->default->skey . $match[2] . $match[1]) == $match[0]) {
                 //Сохраняем данные
                 $this->_rand_key = $match[2];
                 $this->_time = $match[1];
                 $this->_init_skey = $skey_public;
             }
         }
     }
     //Если чего-то не хватает, создаём ключ заново
     if ($this->_init_skey == false || $this->_time == false || $this->_rand_key == false) {
         //Создаём уникальное число
         $this->_rand_key = uniqid("revo");
         //Запоминаем время генерации
         $this->_time = time();
         //Генерируем хэш
         $this->_init_skey = md5(Boot::getInstance()->config->default->skey . $this->_rand_key . $this->_time) . "_" . $this->_time . "_" . $this->_rand_key;
         //Запоминаем в сессию
         Boot_Cookie::set("skey_public", $this->_init_skey);
     }
 }
示例#3
0
文件: auth.php 项目: pnixx/boot
 public function clear()
 {
     Boot_Cookie::clear("auth_token");
     $this->_me = null;
 }
示例#4
0
文件: controller.php 项目: pnixx/boot
 /**
  * Инициализиуем
  * @throws Exception
  * @return void
  */
 protected function initizlize()
 {
     //Получаем данные запроса
     $this->getQuery();
     //Загружаем контроллер
     $this->includeController();
     $Cname = $this->getClassName();
     $Aname = $this->_param->action . "Action";
     //Debug
     Boot::getInstance()->debug("Processing by " . (isset($this->_param->module) ? ucfirst($this->_param->module) . "::" : "") . ucfirst($this->_param->controller) . "#" . $this->_param->action);
     Boot::getInstance()->debug("  Parameters: " . json_encode($this->getParams(), JSON_UNESCAPED_UNICODE));
     //Если найден такой класс
     if (class_exists($Cname) == false) {
         throw new Exception('Controller "' . $Cname . '" not exist', 404);
     }
     //Добавляем пути для подключения файлов вьюх
     set_include_path(implode(PATH_SEPARATOR, [APPLICATION_PATH . '/views/' . (isset($this->_param->module) ? strtolower($this->_param->module) . "/" : "") . strtolower($this->_param->controller), APPLICATION_PATH . '/views', get_include_path()]));
     /**
      * Инициализируем
      * @var Boot_Abstract_Controller $controller
      */
     $controller = new $Cname();
     //Инициализируем бибилиотеки
     foreach (Boot::getInstance()->library->getLibraries() as $library) {
         $library->init($controller);
     }
     if (class_exists("Boot_Translate_Lib", false) && $this->hasParam("lang")) {
         $lang = $this->getParam("lang");
         Boot::getInstance()->library->translate->setLocale($lang);
         //Сохраняем в куку
         Boot_Cookie::set("lang", $lang);
     }
     //Если есть функция init
     if (method_exists($controller, 'init')) {
         $controller->init();
     }
     //Проверяем существование экшена
     if (method_exists($controller, $Aname) == false) {
         throw new Exception('Action "' . $Aname . '", controller "' . $Cname . '" not exist', 404);
     }
     //Стартуем экшен
     $controller->{$Aname}();
     //Сохраняем данные для передачи во вьюху
     if (array_key_exists('view', $controller)) {
         $this->view =& $controller->view;
     }
 }