public function before_store() { // формирование ссылки на категорию блогов $new_slug = joosRequest::param('slug', false); $this->slug = $new_slug ? $new_slug : joosText::text_to_url($this->title); return true; }
/** * Разлогинивание епользователя */ public function logout() { joosCSRF::check_code(1); modelUsers::logout(); $return = joosRequest::param('return'); if ($return && !(strpos($return, 'registration') || strpos($return, 'login'))) { joosRoute::redirect($return); } elseif (isset($_SERVER['HTTP_REFERER'])) { joosRoute::redirect($_SERVER['HTTP_REFERER']); } else { joosRoute::redirect(JPATH_SITE); } }
public static function autoajax() { //$option = joosRequest::param('option'); // выполняемая задача $task = joosRequest::param('task'); // идентификатор запрашиваемого элемента $obj_id = joosRequest::int('obj_id', 0, $_POST); // ключ-название запрашиваемого элемента $obj_key = joosRequest::post('obj_key'); // название объекта запрашиваемого элемента $model = joosRequest::param('obj_model'); if (!$model) { return false; } // пустой объект для складирования результата $return_onj = new stdClass(); if (class_exists($model)) { // создаём объект класса $obj = new $model(); switch ($task) { case 'status_change': $obj->load($obj_id); // меняем состояние объекта на противоположное $obj->change_state($obj_key); // получаем настройки полей $fields_info = $obj->get_fieldinfo(); $fields_info[$obj_key] = array_merge_recursive($fields_info[$obj_key], array('html_table_element_param' => array('statuses' => array(0 => 'Скрыто', 1 => 'Опубликовано'), 'images' => array(0 => 'publish_x.png', 1 => 'publish_g.png')))); // формируем ответ из противоположных элементов текущему состоянию $return_onj->image = isset($fields_info[$obj_key]['html_table_element_param']['images'][!$obj->{$obj_key}]) ? $fields_info[$obj_key]['html_table_element_param']['images'][!$obj->{$obj_key}] : 'error.png'; $return_onj->mess = isset($fields_info[$obj_key]['html_table_element_param']['statuses'][!$obj->{$obj_key}]) ? $fields_info[$obj_key]['html_table_element_param']['statuses'][!$obj->{$obj_key}] : 'ERROR'; $return_onj->new_class = $obj->{$obj_key} ? 'icon-remove' : 'icon-ok'; break; default: return false; break; } echo json_encode($return_onj); return true; } $return_onj->image = 'error.png'; $return_onj->mess = 'error-class'; echo json_encode($return_onj); return false; }
<?php joosModuleAdmin::load_by_name('flash_message'); ?> <div id="component"><?php echo joosDocument::get_body(); ?> </div> </div> <script type="text/javascript"> var _live_site = '<?php echo JPATH_SITE; ?> '; var _option = '<?php echo joosRequest::param('option'); ?> '; var _cur_template = '<?php echo JTEMPLATE_ADMIN; ?> '; </script> <?php echo joosDocument::footer_data(); ?> </body> </html>
/** * @static * @param $user_name * @param bool $password * @param array $params * @return string * * @todo требуется рефакторинг, модуль должен возвращать true или false */ public function login($user_name, $password = false, array $params = array()) { $params += array('redirect' => true); $return = (string) joosRequest::param('return'); if ($return && !(strpos($return, 'com_registration') || strpos($return, 'com_login'))) { //$return = $return; } elseif (isset($_SERVER['HTTP_REFERER'])) { $return = $_SERVER['HTTP_REFERER']; } else { $return = JPATH_SITE; } $user = new modelUsers(); $user->user_name = $user_name; $user->find(); // если акаунт заблокирован if (!$user->id) { if (isset($params['return'])) { return json_encode(array('error' => 'Такого пользователя нет')); } else { joosRoute::redirect($return, 'Такого пользователя нет'); } } // если акаунт заблокирован if ($user->state == 0) { if (isset($params['return'])) { return json_encode(array('error' => _LOGIN_BLOCKED)); } else { joosRoute::redirect($return, _LOGIN_BLOCKED); } } //Проверям пароль if (!self::check_password($password, $user->password)) { if (isset($params['return'])) { return json_encode(array('error' => _LOGIN_INCORRECT)); } else { joosRoute::redirect($return, _LOGIN_INCORRECT); } } // пароль проверили, теперь можно заводить сессиию и ставить куки авторизации $session = new modelUsersSession(); $session->time = time(); $session->guest = 0; $session->user_name = $user->user_name; $session->user_id = $user->id; $session->is_admin = 0; // сгенерием уникальный ID, захеширем его через sessionCookieValue и запишем в базу $session->generate_id(); // записываем в базу данные о авторизованном пользователе и его сессии $session->store(); // формируем и устанавливаем пользователю куку что он автоизован $sessionCookieName = joosSession::session_cookie_name(); // в значении куки - НЕ хешированное session_id из базы setcookie($sessionCookieName, $session->get_cookie(), false, '/', JPATH_COOKIE); // очищаем базу от всех прежних сессий вновь авторизовавшегося пользователя $query = "DELETE FROM #__users_session WHERE is_admin=0 AND session_id != " . $session->_db->get_quoted($session->session_id) . " AND user_id = " . (int) $user->id; joosDatabase::instance()->set_query($query)->query(); // обновляем дату последнего визита авторизованного пользователя $user->lastvisit_date = JCURRENT_SERVER_TIME; $user->store(); $token = new modelUsersTokens(); $token->generate_token($user->id); if (isset($params['return'])) { return json_encode(array('user' => $user)); } else { joosRoute::redirect($return); } }
/** * Смена статуса (поля 'state') */ public static function publish_unpublish($state = 1) { joosCSRF::check_code(); $cid = (array) joosRequest::array_param('cid'); $option = joosRequest::param('option'); $obj_data = joosAutoadmin::get_active_model_obj(); $obj_data->set_state_group($cid, $state) ? joosRoute::redirect('index2.php?option=' . $option . '&menu=' . static::$active_menu, 'Выполнено успешно') : joosRoute::redirect('index2.php?option=' . $option . '&menu=' . static::$active_menu, 'Ошибка смены статуса'); }
* Для получения информации о используемых расширениях и замечаний об авторском праве, смотрите файл help/copyright.php. */ // Установка флага родительского файла define('_JOOS_CORE', 1); // корень файлов панели управления define('JPATH_BASE_ADMIN', __DIR__); require_once dirname(JPATH_BASE_ADMIN) . DIRECTORY_SEPARATOR . 'core' . DIRECTORY_SEPARATOR . 'joostina.php'; require_once JPATH_BASE . DS . 'app' . DS . 'bootstrap.php'; require_once JPATH_BASE . DS . 'core' . DS . 'admin.root.php'; joosDocument::header(); // работа с сессиями начинается до создания главного объекта взаимодействия с ядром joosCoreAdmin::start(); // стартуем пользователя joosCoreAdmin::init_user(); if (helperAcl::is_allowed('admin_panel::use')) { echo json_encode(array('code' => 500, 'message' => 'Ошибка прав доступа')); die; } $option = joosRequest::param('option'); ob_start(); // файл обработки Ajax запросов конкретного компонента $file_com = JPATH_BASE . DS . 'app' . DS . 'components' . DS . $option . DS . 'controller.admin.' . $option . '.ajax.php'; // проверяем, какой файл необходимо подключить, данные берутся из пришедшего GET запроса if (file_exists($file_com)) { include_once $file_com; joosAutoadmin::dispatch_ajax(); } else { echo json_encode(array('code' => 500, 'message' => sprintf('Файл контроллера для %s не найден', $file_com))); die; } ob_end_flush();