コード例 #1
0
 /**
  * Генерация ссылки на страницу
  *
  * @return string|json string
  */
 public function slug_generator()
 {
     $title = joosRequest::post('title', '');
     // формируем из введённого заголовка страницы валидный UTL-адрес
     $slug = joosText::text_to_url($title);
     echo json_encode(array('slug' => $slug));
     return;
 }
コード例 #2
0
 public function index()
 {
     $tables = joosRequest::array_param('codertable', array(), $_POST);
     $ret = array('site' => array(), 'admin' => array());
     foreach ($tables as $table) {
         $model_code = modelAdminCoder::get_model($table, self::$implode_model);
         $ret['site'][] = $model_code['site'];
         $ret['admin'][] = $model_code['admin'];
     }
     $body_site = self::$implode_model ? implode('', $ret['site']) : implode("\n\n\n", $ret);
     $body_admin = self::$implode_model ? implode('', $ret['admin']) : implode("\n\n\n", $ret);
     $tables_count = count($tables);
     return array('success' => true, 'message' => $tables_count ? sprintf('Код для %s %s готов', $tables_count, joosText::declension($tables_count, array('модели', 'моделей', 'моделей'))) : 'Модели не выбраны', 'body_site' => '<pre>' . $body_site . '</pre>', 'body_admin' => '<pre>' . $body_admin . '</pre>');
 }
コード例 #3
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);
 }
コード例 #4
0
ファイル: model.blogs.php プロジェクト: joostina/joostina
 public function before_store()
 {
     // формирование ссылки на категорию блогов
     $new_slug = joosRequest::param('slug', false);
     $this->slug = $new_slug ? $new_slug : joosText::text_to_url($this->title);
     return true;
 }
コード例 #5
0
ファイル: autoadmin.php プロジェクト: joostina/joostina
 public static function get_listing_html_element(joosModel $obj, array $element_param, $key, $value, stdClass $values, $option)
 {
     $class_file = JPATH_BASE . '/app/plugins/autoadmin/table.' . $element_param['html_table_element'] . '.php';
     $class_name = 'pluginAutoadminTable' . self::get_plugin_name($element_param['html_table_element']);
     if (!joosFile::exists($class_file)) {
         throw new joosAutoadminFilePluginNotFoundException(sprintf('Файл плагина joosAutoadmin %s  для вывода элемента %s не найден', $class_file, $class_name));
     }
     require_once $class_file;
     if (!class_exists($class_name)) {
         throw new joosAutoadminClassPlugionNotFoundException(sprintf('Класс для обработки %s средствами joosAutoadmin в файле %s не найден', $class_file, $class_name));
     }
     // ограничение на длину текста
     $text_limit = isset($element_param['html_table_element_param']['text_limit']) ? $element_param['html_table_element_param']['text_limit'] : false;
     if ($text_limit) {
         $value = joosText::character_limiter($value, $text_limit);
     }
     return call_user_func_array($class_name . '::render', array($obj, $element_param, $key, $value, $values, $option));
 }
コード例 #6
0
ファイル: model.comments.php プロジェクト: joostina/joostina
 public function before_store()
 {
     $comment_text = $this->comment_text;
     $comment_text = joosText::text_clean($comment_text);
     $comment_text = joosText::word_limiter($comment_text, 200);
     $this->comment_text = $comment_text;
     $this->user_id = joosCore::user()->id;
     $this->user_ip = joosRequest::user_ip();
     // высчитываем родителя и заполняем дерево
     if ($this->parent_id > 0) {
         $parent = new modelComments();
         $parent->load($this->parent_id);
         $this->level = $parent->level + 1;
         $this->path = $parent->path . ',' . $parent->id;
     } else {
         $this->path = 0;
     }
     $this->state = 1;
     return true;
 }
コード例 #7
0
ファイル: model.users.php プロジェクト: joostina/joostina
 protected function before_store()
 {
     // обновление пароля
     $this->update_password();
     // формируем дополнительно каноничное имя
     $this->user_name_canonikal = joosText::to_canonical($this->user_name);
 }
コード例 #8
0
ファイル: exception.php プロジェクト: joostina/joostina
 /**
  * Возврат информации об ошибки в JSON-сериализованном виде
  *
  * @return string строка в json с кодом ошибки закодированная в JSON
  */
 private function to_json()
 {
     $response = array('code' => $this->getCode() != 0 ? $this->getCode() : 503, 'message' => $this->getMessage());
     return joosText::json_encode($response);
 }
コード例 #9
0
ファイル: datetime.php プロジェクト: joostina/joostina
 /**
  * Получение логического представление строки времени
  *
  * @param  int    $time число секунд для анализа
  * @return string
  */
 public static function time_string($time)
 {
     $time = (int) $time;
     // года
     $years = floor($time / (365.242199 * 24 * 60 * 60));
     if ($years > 1) {
         return sprintf('%s %s', $years, joosText::declension($years, array('год', 'года', 'лет')));
     }
     if ($years == 1) {
         return 'год';
     }
     // месяцы
     $months = floor($time / (365.242199 / 12 * 24 * 60 * 60));
     if ($months > 1) {
         return sprintf('%s %s', $months, joosText::declension($months, array('месяц', 'месяца', 'месяцев')));
     }
     if ($months == 1) {
         return 'месяц';
     }
     // недели
     $weeks = floor($time / (7 * 24 * 60 * 60));
     if ($weeks > 1) {
         return sprintf('%s %s', $weeks, joosText::declension($weeks, array('неделя', 'недели', 'недель')));
     }
     if ($weeks == 1) {
         return 'неделю';
     }
     // дней
     $days = floor($time / (24 * 60 * 60));
     if ($days > 1) {
         return sprintf('%s %s', $days, joosText::declension($days, array('день', 'дня', 'дней')));
     }
     if ($days == 1) {
         return 'день';
     }
     // часов
     $hours = floor($time / (60 * 60));
     if ($hours > 1) {
         return sprintf('%s %s', $hours, joosText::declension($hours, array('час', 'часа', 'часов')));
     }
     if ($hours == 1) {
         return 'час';
     }
     // минут
     $minutes = floor($time / 60);
     if ($minutes > 1) {
         return sprintf('%s %s', $minutes, joosText::declension($minutes, array('минуту', 'минуты', 'минут')));
     }
     if ($minutes == 1) {
         return 'минута';
     }
 }
コード例 #10
0
ファイル: file.php プロジェクト: joostina/joostina
 /**
  * Преобразование имени файла к безопасному для файлвоой системы виду
  * Из строки удаляются все спецсимволы, кирилические символы транслитерируются
  *
  * @tutorial  joosFile::get_safe_name('имя файла номер 1 - ( раз)');
  * @tutorial  joosFile::get_safe_name(' eminem feat dr.dre i need a doctor.mp3 ');
  *
  * @param type $file_name
  *
  * @return type
  */
 public static function make_safe_name($file_name)
 {
     // убираем непроизносимые русские мязкие звуки
     $file_name = str_ireplace(array('ь', 'ъ'), '', $file_name);
     // переводим в транслит
     $file_name = joosText::russian_transliterate($file_name);
     // в нижний регистр
     $file_name = strtolower($file_name);
     // заменям все ненужное нам на "-"
     $file_name = str_replace(array("'", '-'), ' ', $file_name);
     $file_name = preg_replace('/[^\\-a-z0-9\\._]+/u', '-', $file_name);
     return trim($file_name, '-');
 }