Example #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);
     }
 }
Example #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);
 }
Example #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>' : '';
 }
Example #4
0
 public function check()
 {
     $param = explode('?', $_SERVER['REQUEST_URI']);
     parse_str($param[1], $datas);
     if (isset($datas['user_name']) && joosString::trim($datas['user_name']) != '') {
         $user = new modelUsers();
         $user->user_name = $datas['user_name'];
         $ret = $user->find() ? 0 : 1;
         $ret = preg_match(JUSER_NAME_REGEX, $datas['user_name']) ? $ret : false;
         echo $ret ? 'true' : 'false';
         exit;
     }
     if (isset($datas['email']) && joosString::trim($datas['email']) != '') {
         $user = new modelUsers();
         $user->email = $datas['email'];
         echo $user->find() ? 'false' : 'true';
         exit;
     }
 }
Example #5
0
 private static function prepare_extra(joosModel $obj, array $extra_data)
 {
     if (self::$data === NULL) {
         $results = array();
         $hidden_elements = array();
         $wheres_filter = array('true');
         $wheres_search = array();
         foreach ($extra_data as $key => $value) {
             switch ($key) {
                 case 'search':
                     $results[] = joosHtml::label(array('for' => 'search_elements'), 'Поиск');
                     $search_value = joosSession::get_user_state_from_request("search-" . $obj->get_class_name(), 'search', false);
                     $results[] = joosHtml::input(array('name' => 'search_elements', 'id' => 'search_elements'), $search_value);
                     $hidden_elements[] = joosHtml::hidden('search', $search_value);
                     if ($search_value !== false && joosString::trim($search_value) != '') {
                         foreach ($value as $selected_value) {
                             $wheres_search[] = sprintf('%s LIKE ( %s )', joosDatabase::instance()->get_name_quote($selected_value), joosDatabase::instance()->get_quoted("%" . $search_value . "%"));
                         }
                     }
                     break;
                 case 'filter':
                     foreach ($value as $params_key => $params_value) {
                         $field_name = $params_key;
                         $field_title = $value[$field_name]['name'];
                         $results[] = joosHtml::label(array('for' => 'filter_' . $field_name), $field_title);
                         $datas_for_select = array(-1 => 'Всё сразу');
                         $datas_for_select += isset($value[$field_name]['call_from']) && is_callable($value[$field_name]['call_from']) ? call_user_func($value[$field_name]['call_from'], $obj, $params_key) : array();
                         $selected_value = joosSession::get_user_state_from_request('filter-' . '-' . $field_name . '-' . $obj->get_class_name(), $field_name, -1);
                         $selected_value = $selected_value === '0' ? '0' : $selected_value;
                         $results[] = joosHtml::dropdown(array('name' => 'filter_' . $field_name, 'data-obj-name' => $field_name, 'class' => 'filter_elements', 'selected' => $selected_value), $datas_for_select);
                         $hidden_elements[] = joosHtml::hidden($field_name, $selected_value);
                         if ($selected_value && $selected_value != -1 or $selected_value === '0') {
                             $wheres_filter[] = sprintf('%s=%s', joosDatabase::instance()->get_name_quote($field_name), joosDatabase::instance()->get_quoted($selected_value));
                         }
                     }
                     break;
                 case 'extrafilter':
                     $datas_for_select = array(-1 => 'Всё сразу');
                     foreach ($value as $params_key => $params_value) {
                         $field_name = $params_key;
                         $datas_for_select += array($params_key => $value[$field_name]['name']);
                     }
                     $selected_value = joosSession::get_user_state_from_request("extrafilter-" . $obj->get_class_name(), 'filter_extrafilter', -1);
                     $results[] = joosHtml::label(array('for' => 'filter_extrafilter'), 'Фильтр');
                     $results[] = joosHtml::dropdown(array('name' => 'filter_extrafilter_selector', 'class' => 'extrafilter_elements', 'options' => $datas_for_select, 'selected' => $selected_value));
                     $hidden_elements[] = joosHtml::hidden('filter_extrafilter', $selected_value);
                     //self::$data_overload = ( $selected_value && isset($value[$selected_value]['call_from']) && is_callable($value[$selected_value]['call_from']) ) ? call_user_func($value[$selected_value]['call_from'], $obj) : array();
                     self::$data_overload = $selected_value && isset($value[$selected_value]['call_from']) && is_callable($value[$selected_value]['call_from']) ? $value[$selected_value]['call_from'] : array();
                     break;
                 default:
                     break;
             }
         }
         $wheres = array(implode(' AND ', $wheres_filter));
         if (count($wheres_search) > 0) {
             $wheres[] = ' (' . implode(' OR ', $wheres_search) . ' )';
         }
         self::$data = array('for_header' => $results, 'hidden_ellements' => implode("\n", $hidden_elements), 'wheres' => implode(' AND ', $wheres), 'data_overload' => self::$data_overload);
     }
     return self::$data;
 }
Example #6
0
 public function prepend_meta_tag($name, $content)
 {
     $name = joosString::trim(htmlspecialchars($name, ENT_QUOTES, 'UTF-8'));
     $n = count(self::$data['meta']);
     for ($i = 0; $i < $n; $i++) {
         if (self::$data['meta'][$i][0] == $name) {
             $content = joosString::trim(htmlspecialchars($content, ENT_QUOTES, 'UTF-8'));
             self::$data['meta'][$i][1] = $content . self::$data['meta'][$i][1];
             return;
         }
     }
     self::instance()->add_meta_tag($name, $content);
 }
Example #7
0
 /**
  * Вывод нуждной формы слова, в зависимости от пола
  *
  *
  * @tutorial joosText::sexerate( 1, array('умник','умница','умницо') );
  * @tutorial joosText::sexerate( 'm', array('делал','делала','делало') )
  *
  * @param  string $sex   - пол, принимает варианты 1/2, м/ж, m/f. Если вариан  отсутствует - то используется 2й элементы неопределённого пола
  * @param  array  $texts - 3х элементый массив слов для каждого пола 0-мужской, 1-женский, 2
  * @return string
  */
 public static function sexerate($sex, array $texts)
 {
     $sex = joosString::strtolower($sex);
     $sex = strtr($sex, array('м' => 0, 'ж' => 1, 'm' => 0, 'f' => 1, 'муж' => 0, 'жен' => 1, 'male' => 0, 'female' => 1, 'мужчина' => 0, 'женщина' => 1));
     return isset($texts[$sex]) ? $texts[$sex] : $texts[2];
 }
Example #8
0
 /**
  * Проверяет что все символы строки в верхнем регистре
  *
  * @param  string $value
  * @return bool   результат проверки соответсвия
  */
 public static function is_upper($value)
 {
     return $value === joosString::strtoupper($value);
 }