private function as_html(array $variables) { $controller = $this->router->param('controller'); $action = $this->router->param('action'); $template = isset($variables['template']) ? $variables['template'] : 'default'; $view = isset($variables['view']) ? $variables['view'] : $action; extract($variables, EXTR_OVERWRITE); $viewfile = JPATH_BASE . DS . 'app' . DS . 'components' . DS . $controller . DS . 'views' . DS . $view . DS . $template . '.php'; joosFile::exists($viewfile) ? require $viewfile : null; }
public static function lists($params = array()) { $cats = new modelCategories(); $cats = $cats->get_list(array('where' => '`group` = "content" AND state = 1', 'key' => 'id', 'order' => 'lft ASC')); $cats_ids = array_keys($cats); if ($params['xml']) { $items = new modelContent(); $items = $items->get_list(array('where' => 'state = 1 AND category_id IN (' . implode(', ', $cats_ids) . ')')); $items_by_cats = array(); foreach ($items as $item) { $item->loc = joosRoute::href('content_view', array('slug' => $item->slug)); $item->lastmod = $item->created_at; $items_by_cats[$item->category_id][] = $item; } } $results = array(); foreach ($cats as $cat) { $cat->loc = joosRoute::href('category_view', array('id' => $cat->id, 'slug' => $cat->slug)); $cat->lastmod = date('Y-m-d'); $cat->title = $cat->name; $cat->level = $cat->level + 1; $results[] = $cat; if ($params['xml']) { if (isset($items_by_cats[$cat->id])) { foreach ($items_by_cats[$cat->id] as $item) { $item->level = $cat->level + 1; $results[] = $item; } } } } return $results; }
public function generate_xml() { // это что бы роутер не жаловался joosRoute::init(); $map = modelSitemap::get_map(true); $map->xml_output(); joosRoute::redirect('index2.php', 'Карта сайта обновлена'); }
public static function lists($param) { $cat_id = $param['cat_id']; $sql = sprintf("SELECT b.id, b.title, b.created_at AS lastmod, c.slug as cat_slug FROM #__blog AS b\n INNER JOIN #__blog_category AS c ON ( c.id=b.category_id AND c.state=1 AND c.id=%s )\n WHERE b.state=1 ORDER BY b.id DESC", $cat_id); $objs = joosDatabase::instance()->set_query($sql)->load_object_list(); foreach ($objs as $obj) { $obj->loc = joosRoute::href('blog_view', array('id' => $obj->id, 'cat_slug' => $obj->cat_slug)); } return $objs; }
/** * Главная страница компонента * * @static * @return array */ public function index() { $blogs = new modelBlogs(); $page = isset(self::$param['page']) ? self::$param['page'] : 0; $pager = new joosPager(joosRoute::href('blog'), $blogs->count('WHERE state = 1'), 5); $pager->paginate($page); $blog_items = $blogs->get_list(array('select' => 'b.*, bc.title as category_title, bc.slug as category_slug, u.id AS user_id, u.user_name', 'join' => ' AS b' . ' INNER JOIN #__blogs_category AS bc ON( b.category_id = bc.id )' . ' INNER JOIN #__users AS u ON( b.user_id = u.id )', 'where' => 'b.state = 1', 'order' => 'b.id DESC', 'limit' => $pager->limit, 'offset' => $pager->offset)); joosDocument::instance()->set_page_title('Блоги')->add_meta_tag('description', 'Блоги'); return array('blogs_items' => $blog_items, 'pager' => $pager); }
/** * Главная страница компонента * * @static * @return array */ public function index() { $news = new modelNews(); $page = isset(self::$param['page']) ? self::$param['page'] : 0; $pager = new joosPager(joosRoute::href('news'), $news->count('WHERE state = 1'), 5); $pager->paginate($page); $news = $news->get_list(array('where' => 'state = 1', 'order' => 'id DESC', 'limit' => $pager->limit, 'offset' => $pager->offset)); joosDocument::instance()->set_page_title('Новости')->add_meta_tag('description', 'Новости компании'); joosBreadcrumbs::instance()->add('Новости'); return array('news' => $news, 'pager' => $pager); }
/** * Главная страница компонента, вывод списка объектов * * @static * @return array */ public function index() { $search_result = array(); $total = 0; $search_word = isset(self::$param['search_word']) ? self::$param['search_word'] : ''; if (isset($_POST['search'])) { $search_word = joosRequest::post('search'); $search_word = joosText::simple_clean($search_word); $search_word = joosFilter::htmlspecialchars($search_word); joosRoute::redirect(joosRoute::href('search_word', array('search_word' => $search_word))); } $search_word = joosText::simple_clean($search_word); joosFilter::make_safe($search_word); if (strlen($search_word) > 100) { $search_word = joosString::substr($search_word, 0, 99); } if ($search_word && joosString::strlen($search_word) < 3) { $search_word = ''; } if ($search_word != '') { $results = joosDatabase::instance()->set_query("SELECT t.id, t.title,t.`fulltext` as text, t.type_id, t.type_cat_id, t.created_at, t.anons_image_id, t.file_id,'topic' AS itemtype,\n g.title AS gamename, t.game_id, g.slug AS game_slug\n FROM #__texts as t\n LEFT JOIN #__games AS g ON g.id=t.game_id\n WHERE LOWER(t.title) LIKE LOWER('%{$search_word}%') OR LOWER(t.`fulltext`) LIKE LOWER('%{$search_word}%') ")->load_object_list(); $rows = array(); $_n = count($results); for ($i = 0, $n = $_n; $i < $n; $i++) { $rows = array_merge((array) $rows, (array) $results[$i]); } $total = count($rows); for ($i = 0; $i < $total; $i++) { $text =& $rows[$i]->text; $search_words = explode(' ', $search_word); $needle = $search_words[0]; $text = modelSearch::prepare_search_content($text, 500, $needle); foreach ($search_words as $k => $hlword) { $search_words[$k] = htmlspecialchars(stripslashes($hlword), ENT_QUOTES, 'UTF-8'); } $searchRegex = implode('|', $search_words); $text = preg_replace('/' . $searchRegex . '/iu', '<span class="highlight">\\0</span>', $text); } $search_result = $rows; } $page = self::$param['page']; $pager = new joosPager(joosRoute::href('search_word', array('search_word' => $search_word)), $total, 10); $pager->paginate($page); // для первой (0) страницы и если есть результаты поиска - запишем словопоиск в базу, для дальнейших ленивых автокомплитов $total > 0 && $page == 0 ? modelSearch::add($search_word) : null; return array('search_word' => $search_word, 'search_result' => $search_result, 'pager' => $pager); }
/** * @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); } }
echo $search_word; ?> " /> </div> <button class="search_button" type="submit">→</button> </form> </div> <?php if ($search_result) { for ($index = $pager->low; $index < $pager->high + 1; $index++) { if (isset($search_result[$index])) { $row = $search_result[$index]; $section = joosHTML::anchor(joosRoute::href('game_index'), 'Что-то'); $row->anons_image = JPATH_SITE_IMAGES . '/' . joosFile::make_file_location((int) $row->image_id) . '/image.png'; $row->view_href = joosRoute::href('opa_view', array('id' => $row->id, 'alias' => $row->game_slug)); ?> <div class="item"> <h2><?php echo $section . ' → '; echo joosHTML::anchor($row->view_href, $row->title); ?> </h2> <?php if ($row->anons_image) { ?> <a class="thumb" href="<?php echo $row->view_href; ?> "> <img src="<?php
?> </a> </li> <li class="date"><i class="icon-time"></i> <?php echo joosDateTime::russian_date('d F, Y'); ?> </li> <li class="tags"> <i class="icon-tags"></i> <a title="<?php echo joosFilter::htmlspecialchars($blog_category->title); ?> " href="<?php echo joosRoute::href('blog_cat', array('category_slug' => $blog_category->slug)); ?> "><?php echo $blog_category->title; ?> </a> </li> </ul> <div class="post-text"> <p><?php echo $blog_item->text_full; ?> </p> </div>
public function route() { $this->router = new joosRoute(); $this->router->route(); return $this; }
* Joostina! - свободное программное обеспечение распространяемое по условиям лицензии GNU/GPL * Для получения информации о используемых расширениях и замечаний об авторском праве, смотрите файл help/copyright.php. */ // запрет прямого доступа defined('_JOOS_CORE') or exit; ?> <?php foreach ($pages as $page) { ?> <div class="row"> <div class="span12"> <h2> <a href="<?php echo joosRoute::href('pages_view', array('page_name' => $page->slug)); ?> "> <?php echo $page->title; ?> </a> </h2> <p><?php echo $page->text; ?> </p> </div> </div> <?php
<a title="<?php echo joosFilter::htmlspecialchars($blog_item->title); ?> " href="<?php echo joosRoute::href('blog_cat', array('category_slug' => $blog_item->category_slug)); ?> "><?php echo $blog_item->category_title; ?> </a> </li> </ul> <div class="post-text"> <p><?php echo $blog_item->text_intro; ?> </p> </div> <a class="btn btn-large btn-primary" href="<?php echo joosRoute::href('blog_view', array('category_slug' => $blog_item->category_slug, 'id' => $blog_item->id)); ?> ">Читать дальше</a> </article> <?php } ?> <?php echo $pager->output;
<li><a class="js-login-modal-replace">Войти</a></li> <li><a href="#">Забыли пароль?</a></li> <li class="divider"></li> <li><a href="#">Регистрация</a></li> </ul> </li> </ul> <div class="modal hide fade" id="modal-login_form"> <div class="modal-header"> <a class="close" data-dismiss="modal">×</a> <h3>Вход</h3> </div> <div class="modal-body"> <form class="form-horizontal" action="<?php echo joosRoute::href('login'); ?> " method="post"> <div class="control-group"> <label class="control-label" for="inp-login">Логин:</label> <div class="controls"> <input type="text" class="input-medium" id="inp-login" name="user_name"> </div> </div> <div class="control-group"> <label class="control-label" for="inp-password">Пароль:</label> <div class="controls"> <input type="password" class="input-medium" id="inp-password" name="password"> </div> </div>
<h5>Восстановление пароля</h5> <div class="menu_inside_submenu"> <ul class="menu_inside_submenu_ul active_ul by_statuses"> <li> <span> <a title="Регистрация" href="<?php echo joosRoute::href('register'); ?> ">Регистрация</a> </span> </li> <li class="menu_inside_submenu_active"> <span> <a title="Восстановление пароля" href="<?php echo joosRoute::href('lostpassword'); ?> ">Восстановление пароля</a> </span> </li> </ul> </div> <form action="<?php throw new joosException('Переделать!'); ?> " method="post"> <dl class="form_lostpassword"> <dt><label for="user_name_f">Введите имя пользователя</label></dt> <dd><input type="text" name="user_name" id="user_name_f" size="40" value="" class="inputbox" maxlength="20"/>
</span> </li> <li> <span> <a title="Восстановление пароля" href="<?php echo joosRoute::href('lostpassword'); ?> ">Восстановление пароля</a> </span> </li> </ul> </div> <form action="<?php echo joosRoute::href('register'); ?> " method="post" id="reg_form"> <div class="errors"><?php echo $user->get_errors(); ?> </div> <dl class="form_registration"> <dt><label for="user_name">Имя пользователя:</label></dt> <dd><input type="text" name="user_name" id="user_name" size="40" value="<?php echo $user->user_name; ?> " class="inputbox" maxlength="10"/></dd>
define('_JOOS_CORE', 1); // рассчет памяти function_exists('memory_get_usage') ? define('_MEM_USAGE_START', memory_get_usage()) : null; // считаем время за которое сгенерирована страница $sysstart = microtime(true); // корень файлов панели управления define('JPATH_BASE_ADMIN', __DIR__); require_once dirname(JPATH_BASE_ADMIN) . DIRECTORY_SEPARATOR . 'core' . DIRECTORY_SEPARATOR . 'joostina.php'; require_once JPATH_BASE . DS . 'core' . DS . 'admin.root.php'; joosDocument::header(); // работа с сессиями начинается до создания главного объекта взаимодействия с ядром joosCoreAdmin::start(); // стартуем пользователя joosCoreAdmin::init_user(); if (helperAcl::is_allowed('admin_panel::init') !== true) { joosRoute::redirect(JPATH_SITE_ADMIN, 'В доступе отказано'); } ob_start(); joosAutoadmin::dispatch(); joosDocument::set_body(ob_get_clean()); ob_start(); // начало вывода html // загрузка файла шаблона $template_file = JPATH_BASE . DS . 'app' . DS . 'templates' . DS . JTEMPLATE_ADMIN . DS . 'index.php'; if (file_exists($template_file)) { require_once $template_file; } else { throw new joosException('Файл index.php шаблона :template_name не найден', array(':template_name' => JTEMPLATE_ADMIN)); } // подсчет времени генерации страницы if (JDEBUG) {
<?php defined('_JOOS_CORE') or exit; /* * Конфиг главного меню сайта */ return array('Главная' => array('title' => '', 'href' => joosRoute::href('default')), 'Новости' => array('title' => '', 'href' => joosRoute::href('news')), 'Блоги' => array('title' => '', 'href' => joosRoute::href('blog')), 'Вёрстка здесь' => array('title' => '', 'href' => false, 'children' => array('Блог' => array('title' => '', 'href' => joosRoute::href('layouts', array('tpl' => 'blog_index'))), 'Блог. Пост' => array('title' => '', 'href' => joosRoute::href('layouts', array('tpl' => 'blog_post'))), 'Пользователи. Список' => array('title' => '', 'href' => joosRoute::href('layouts', array('tpl' => 'users_index'))))));
*/ ?> <h1>Новости</h1> <ul class="news-list unstyled"> <?php foreach ($news as $item) { ?> <li> <div class="date"><?php echo joosDateTime::russian_date('d F в H:m', strtotime($item->created_at)); ?> </div> <h2> <a class="news-title" href="<?php echo joosRoute::href('news_view', array('id' => $item->id)); ?> "> <?php echo $item->title; ?> </a> </h2> <p><?php echo $item->introtext; ?> </p> </li> <?php }
private static function save_register($validator) { $user = new modelUsers(); $user->bind($_POST); if ($user->check($validator) && $user->save($_POST)) { modelUsers::login($user->user_name, $_POST['password']); } else { joosRoute::redirect(JPATH_SITE); //userHtml::register($user, $validator); } }
/** * Смена статуса (поля '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, 'Ошибка смены статуса'); }
?> <b class="caret"></b> </a> <ul class="dropdown-menu"> <li> <a href="<?php echo joosRoute::href('user_view', array('id' => $user->id, 'user_name' => $user->user_name)); ?> ">Перейти в профиль</a> </li> <li><a href="<?php echo joosRoute::href('user_edit'); ?> ">Настройки профиля</a></li> <li class="divider"></li> <li class="logout"> <form action="<?php echo joosRoute::href('logout'); ?> " method="post" id="m-auto_logout"> <button type="submit" class="btn">Выйти</button> <input type="hidden" name="<?php echo joosCSRF::get_code(1); ?> " value="1" /> </form> </li> </ul> </li> </ul>
<h1><?php echo $user->user_name; ?> <small>(<?php echo $user->user_name; ?> )</small> </h1> </div> </div> </div> <h2>Редактирование профиля</h2> <form class="form-horizontal" action="<?php echo joosRoute::href('user_edit'); ?> " method="post"> <fieldset> <legend>Основные данные</legend> <div class="control-group"> <label for="real_name" class="control-label">Реальное имя</label> <div class="controls"> <input type="text" value="<?php echo $user->real_name; ?> " class="input-xlarge" id="real_name" name="real_name"> </div> </div>