Exemplo n.º 1
0
 public function smart_substr($text, $length = 200, $searchword = '')
 {
     $wordpos = joosString::strpos(strtolower($text), joosString::strtolower($searchword));
     $halfside = intval($wordpos - $length / 2 - joosString::strlen($searchword));
     if ($wordpos && $halfside > 0) {
         return '...' . joosString::substr($text, $halfside, $length) . '...';
     } else {
         return joosString::substr($text, 0, $length);
     }
 }
Exemplo n.º 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);
 }
Exemplo n.º 3
0
 /**
  * Получение системного сообщения
  * @return string - текст сообщения
  */
 public static function get()
 {
     $_s = session_id();
     if (!joosCore::is_admin() && empty($_s)) {
         session_name(joosSession::session_cookie_name());
         session_start();
     }
     $message = joosRequest::session('joostina.mosmsg', false);
     if ($message != '' && joosString::strlen($message) > 300) {
         // выводим сообщения не длинее 300 символов
         $message = joosString::substr($message, 0, 300);
     }
     /**
             @var $_SESSION array */
     unset($_SESSION['joostina.mosmsg']);
     return $message ? '<div class="b-system_message">' . $message . '</div>' : '';
 }
Exemplo n.º 4
0
 /**
  * Преобразование текстовой строки к каноничному виду
  *
  * @param string $text исходная строка
  *
  * @return string
  */
 public static function to_canonical($text)
 {
     // приводим к единому нижнему регистру
     $text = joosString::strtolower($text);
     // убираем спецсимволы
     $to_del = array('~', '@', '#', '$', '%', '^', '&amp;', '*', '(', ')', '-', '_', '+', '=', '|', '?', ',', '.', '/', ';', ':', '"', "'", '№', ' ', '&nbsp;');
     $text = str_replace($to_del, '', $text);
     // приводим одинаковое начертание к единому тексту
     $a = array('о', 'o', 'l', 'L', '|', '!', 'i', 'х', 's', 'а', 'р', 'с', 'в', 'к', 'е', 'й', 'ё', 'ш', 'з', 'у', 'т', 'д', 'd', 'ф', 'в', 'м', 'н', 'и', 'э', 'ь', 'ъ', 'ю');
     $b = array('0', '0', '1', '1', '1', '1', '1', 'x', '$', '0', 'p', '$', 'b', 'k', 'e', 'и', 'е', 'щ', '$', 'y', 't', 't', 't', 'b', 'b', 'm', 'h', 'e', 'e', '', '', 'u');
     $text = str_replace($a, $b, $text);
     // убираем дуУубли символов
     $return = $o = '';
     $_l = joosString::strlen($text);
     for ($i = 0; $i < $_l; $i++) {
         $c = joosString::substr($text, $i, 1);
         if ($c != $o) {
             $return .= $c;
             $o = $c;
         }
     }
     return $return;
 }
Exemplo n.º 5
0
 /**
  * Проверяет что длина строки переменной входит в указанный диапазон min и max
  *
  * @param  string $value
  * @param  int    $min
  * @param  int    $max
  * @param  bool   $inclusive проверять учитывая равенство величине
  * @return bool   результат проверки соответсвия
  */
 public static function is_length_between($value, $min, $max, $inclusive = true)
 {
     $length = joosString::strlen($value);
     return $inclusive ? $length >= $min && $length <= $max : $length > $min && $length < $max;
 }