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); }
/** * Главная страница компонента, вывод списка объектов * * @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); }
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); } }
/** * Вывод информации о переменной * * @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; }
?> "><?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; ?>
*/ // запрет прямого доступа 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>
/** * Вывод расширенных элементов 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; }
?> "><?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; ?>
/** * 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)); }
/** * 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; }