예제 #1
0
 public function autocomplete()
 {
     $word = joosRequest::get('term');
     joosFilter::make_safe($word);
     // если пользователь ввёл меньше 2х символов - не будем выдавать ему подсказку
     if (strlen($word) > 2) {
         $result = modelSearch::get_log($word);
     } else {
         $result = false;
     }
     echo json_encode($result);
 }
예제 #2
0
 /**
  * Главная страница компонента, вывод списка объектов
  *
  * @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);
 }
예제 #3
0
 public function profile_edit()
 {
     if (modelUsers::is_loged() == false) {
         joosRoute::redirect(JPATH_SITE, 'Вы не авторизованы');
     }
     $user = modelUsers::current();
     if (joosCore::user()->id != $user->id) {
         joosRoute::redirect(JPATH_SITE, 'Ай, ай!');
     }
     // если данные пришли POST методом - то это сохранение профиля
     if (joosRequest::is_post()) {
         return self::profile_edit_save();
     } else {
         joosDocument::instance()->set_page_title($user->user_name);
         joosBreadcrumbs::instance()->add($user->user_name);
         joosFilter::make_safe($user);
         return array('user' => $user);
     }
 }
예제 #4
0
파일: debug.php 프로젝트: joostina/joostina
    /**
     * Вывод информации о переменной
     *
     * @tutorial joosDebug::dump( array(1, 'aad', time() ), $var_name );
     * @tutorial joosDebug::dump( $var_name_1,  $var_name_2,  $var_name_3,  $var_name_4 );
     *
     * @param mixed функция принимает неограниченное число параметров - переменных для анализа и вывода
     *
     * @todo расширить для использования в ajax-запросах
     */
    public static function dump()
    {
        joosRequest::send_headers_by_code(503);
        // обозначение места вызова функции отладки
        $trace = debug_backtrace();
        if (isset($trace[1]['file'])) {
            $file_content = self::get_file_context($trace[1]['file'], $trace[1]['line']);
        } else {
            $file_content = self::get_file_context($trace[0]['file'], $trace[0]['line']);
        }
        if (ob_get_level()) {
            ob_end_clean();
        }
        ob_start();
        $func_args = func_get_args();
        $args_count = count($func_args);
        var_dump($args_count == 1 ? $func_args[0] : $func_args);
        $output = ob_get_clean();
        $output = preg_replace('/]\\=>\\n(\\s+)/m', '] => ', $output);
        /**
         * @todo тут надо провреить, переменная судя по всему не используется в полном объёме
         */
        $result = joosFilter::htmlspecialchars($output);
        $file_content = joosFilter::htmlspecialchars($file_content);
        $result = <<<HTML
  <style>
    body { background-color: #fff; color: #333; }
    body, p, ol, ul, td { font-family: verdana, arial, helvetica, sans-serif; font-size: 13px; line-height: 25px; }
    pre { background-color: #eee; padding: 10px; font-size: 11px; line-height: 18px; }
    a { color: #000; }
    a:visited { color: #666; }
    a:hover { color: #fff; background-color:#000; }
  </style>
<div style="width:99%; position:relative">
<h2 id='Title'>Результат отладки</h2>
<div id="Context" style="display: block;">Место вызова:<pre>{$file_content}</pre></div>
<div id="Context" style="display: block;">Полученные параметры:<pre>{$result}</pre></div>
HTML;
        $result .= "</div>";
        echo $result;
        die;
    }
예제 #5
0
?>
"><?php 
echo $author->user_name;
?>
</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;
?>
예제 #6
0
 */
// запрет прямого доступа
defined('_JOOS_CORE') or exit;
?>
<!DOCTYPE html>
<html>
<head>
    <title><?php 
echo joosConfig::get2('info', 'title');
?>
</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <META name="robots" content="noindex,nofollow" />
    <link rel="stylesheet" href="<?php 
echo JPATH_SITE;
?>
/app/templates/system/media/css/app.css">
</head>
<body>
    <h2><?php 
echo joosConfig::get2('info', 'title');
?>
</h2>
    <h6>В доступе отказано</h6>
    <!-- <?php 
echo joosFilter::htmlspecialchars($message);
?>
 -->
</body>
</html>
예제 #7
0
파일: html.php 프로젝트: joostina/joostina
 /**
  * Вывод расширенных элементов html тега
  *
  * @param  string|array $attrs строка или массив параметров
  * @return string
  */
 private static function attributes($attrs)
 {
     if (empty($attrs)) {
         return '';
     }
     if (is_string($attrs)) {
         return ' ' . $attrs;
     }
     $compiled = '';
     foreach ($attrs as $key => $val) {
         // @todo тут что-то не правильно!!!
         if (is_array($val)) {
             continue;
         }
         $compiled .= ' ' . $key . '="' . joosFilter::htmlspecialchars($val) . '"';
     }
     return $compiled;
 }
예제 #8
0
    ?>
"><?php 
    echo $blog_item->user_name;
    ?>
</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_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;
    ?>
예제 #9
0
 /**
  * Perform a joosHtml::specialchars() with additional URL specific encoding.
  *
  * @param   string   string to convert
  * @param   boolean  encode existing entities
  *
  * @return string
  */
 public static function specialurlencode($str, $double_encode = TRUE)
 {
     return str_replace(' ', '%20', joosFilter::htmlspecialchars($str, $double_encode));
 }
예제 #10
0
파일: route.php 프로젝트: joostina/joostina
 /**
  * Generates a URI for the current route based on the parameters given.
  *
  *     // Using the "default" route: "users/profile/10"
  *     $route->uri(array(
  *         'controller' => 'users',
  *         'action'     => 'profile',
  *         'id'         => '10'
  *     ));
  *
  * @param   array   URI parameters
  *
  * @return string
  * @throws joosException
  * @uses    self::REGEX_Key
  */
 protected function uri(array $params = NULL)
 {
     // Start with the routed URI
     $uri = $this->_uri;
     // если в ссылке нет динамических параметров - сразу её возвратим
     if (strpos($uri, '<') === FALSE and strpos($uri, '(') === FALSE) {
         return $uri;
     }
     while (preg_match('#' . self::REGEX_KEY . '#', $uri, $match)) {
         list($key, $param) = $match;
         if (!isset($params[$param])) {
             // Look for a default
             if (isset($this->_defaults[$param])) {
                 $params[$param] = $this->_defaults[$param];
             } else {
                 // отсутствуют требуемые параметры
                 throw new joosException('Требуемый параметр :param не найден в полученных данных для условия :uri', array(':param' => $param, ':uri' => joosFilter::htmlspecialchars($this->_uri)));
             }
         }
         $uri = str_replace($key, $params[$param], $uri);
     }
     // чистка от лишних и дублирующихся /
     $uri = preg_replace('#//+#', '/', rtrim($uri, '/'));
     return $uri;
 }