/** * Генерация ссылки на страницу * * @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; }
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>'); }
/** * Главная страница компонента, вывод списка объектов * * @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 before_store() { // формирование ссылки на категорию блогов $new_slug = joosRequest::param('slug', false); $this->slug = $new_slug ? $new_slug : joosText::text_to_url($this->title); return true; }
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)); }
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; }
protected function before_store() { // обновление пароля $this->update_password(); // формируем дополнительно каноничное имя $this->user_name_canonikal = joosText::to_canonical($this->user_name); }
/** * Возврат информации об ошибки в 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); }
/** * Получение логического представление строки времени * * @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 'минута'; } }
/** * Преобразование имени файла к безопасному для файлвоой системы виду * Из строки удаляются все спецсимволы, кирилические символы транслитерируются * * @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, '-'); }