/** * Строим переводчик * @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; }
/** * Создаём и возвращаем ключ */ 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); } }
public function clear() { Boot_Cookie::clear("auth_token"); $this->_me = null; }
/** * Инициализиуем * @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; } }