function last_comments_widget_custom($options = array(), $num = 1) { if (!isset($options['count'])) { $options['count'] = 5; } if (!isset($options['words'])) { $options['words'] = 20; } if (!isset($options['maxchars'])) { $options['maxchars'] = 20; } if (!isset($options['header'])) { $options['header'] = ''; } $options['count'] = (int) $options['count']; if ($options['count'] < 1) { $options['count'] = 5; } $options['words'] = (int) $options['words']; if ($options['words'] < 1) { $options['words'] = 20; } $options['maxchars'] = (int) $options['maxchars']; if ($options['maxchars'] < 1) { $options['maxchars'] = 20; } $cache_key = 'last_comments_widget_' . $num . mso_md5(serialize($options)); $k = mso_get_cache($cache_key, true); if ($k) { return $k; } // да есть в кэше require_once getinfo('common_dir') . 'comments.php'; // функции комментариев $comments = mso_get_comments(false, array('limit' => $options['count'], 'order' => 'desc')); $out = ''; if ($comments) { // сгруппируем все комментарии по записям $arr_com_page = array(); $arr_com_page_title = array(); foreach ($comments as $comment) { $arr_com_page[$comment['page_id']][$comment['comments_id']] = $comment; $arr_com_page_title[$comment['page_id']] = $comment['page_title']; } // выводим по странично foreach ($arr_com_page as $key => $comments) { $out .= '<h5>' . $arr_com_page_title[$key] . '</h5>'; $comments = array_reverse($comments); // чтобы комментарии были в привычном порядке сверху вниз $out .= '<ul class="mso-widget-list">'; foreach ($comments as $comment) { extract($comment); if ($comment['comments_users_id']) { $css_style_add = 'last_comment_users ' . ' mso-last-comment-users-' . $comment['comments_users_id']; } elseif ($comment['comments_comusers_id']) { $css_style_add = 'last_comment_comusers ' . ' mso-last-comment-comusers-' . $comment['comments_comusers_id']; } else { $css_style_add = 'last_comment_anonim'; } $out .= '<li class="' . $css_style_add . '"><a href="' . getinfo('siteurl') . 'page/' . mso_slug($page_slug) . '#comment-' . $comments_id . '"><b>'; if ($comments_users_id) { $out .= $users_nik; } elseif ($comments_comusers_id) { if ($comusers_nik) { $out .= $comusers_nik; } else { $out .= t('Комментатор') . ' ' . $comusers_id; } } elseif ($comments_author_name) { $out .= $comments_author_name; } else { $out .= ' ' . t('Аноним'); } $comments_content_1 = strip_tags($comments_content); // удалим тэги $comments_content = mso_str_word($comments_content_1, $options['words']); // ограничение на количество слов // если старый и новый текст после обрезки разные, значит добавим в конце ... if ($comments_content_1 != $comments_content) { $comments_content .= '...'; } // каждое слово нужно проверить на длину и если оно больше maxchars, то добавить пробел в wordwrap $words = explode(' ', $comments_content); foreach ($words as $key => $word) { $words[$key] = mso_wordwrap($word, $options['maxchars'], ' '); } $comments_content = implode(' ', $words); $out .= ' »</b> ' . strip_tags($comments_content) . '</a>'; $out .= '</li>' . NR; } $out .= '</ul>'; } if ($options['header']) { $out = $options['header'] . $out; } } mso_add_cache($cache_key, $out, false, true); // сразу в кэш добавим return trim($out); }
function twitter_go($url = false, $count = 5, $format = '<p><strong>%DATE%</strong><br>%TITLE% <a href="%LINK%">>>></a></p>', $format_date = 'd/m/Y H:i:s', $max_word_description = false, $show_nick = true) { if (!$url) { return false; } # проверим кеш, может уже есть в нем все данные $cache_key = 'rss/' . 'twitter_go' . $url . $count . $format . $format_date . (int) $max_word_description; $k = mso_get_cache($cache_key, true); if ($k) { return $k; } // да есть в кэше if (!defined('MAGPIE_CACHE_AGE')) { define('MAGPIE_CACHE_AGE', 600); } // время кэширования MAGPIE require_once getinfo('common_dir') . 'magpierss/rss_fetch.inc'; $rss = fetch_rss($url); $rss = array_slice($rss->items, 0, $count); $out = ''; foreach ($rss as $item) { $out .= $format; if ($show_nick) { $item['title'] = preg_replace('|(\\S+): (.*)|si', '<strong>\\1:</strong> \\2', $item['title']); } else { $item['title'] = preg_replace('|(\\S+): (.*)|si', '\\2', $item['title']); } // подсветим ссылки $item['title'] = preg_replace('|(http:\\/\\/)(\\S+)|si', '<a rel="nofollow" href="http://\\2" target="_blank">\\2</a>', $item['title']); $out = str_replace('%TITLE%', $item['title'], $out); // [title] = [description] = [summary] if ($max_word_description) { $item['description'] = mso_str_word($item['description'], $max_word_description) . '...'; } $item['description'] = preg_replace('|(\\S+): (.*)|si', '<strong>\\1:</strong> \\2', $item['description']); $item['description'] = preg_replace('|(http:\\/\\/)(\\S+)|si', '<a rel="nofollow" href="http://\\2" target="_blank">\\2</a>', $item['description']); $out = str_replace('%DESCRIPTION%', $item['description'], $out); // [title] = [description] = [summary] $out = str_replace('%DATE%', date($format_date, (int) $item['date_timestamp']), $out); // [pubdate] $out = str_replace('%LINK%', $item['link'], $out); // [link] = [guid] } mso_add_cache($cache_key, $out, 600, true); return $out; }
$i = false; } // slug не число if ($i) { $slug_new = mso_slug($item['title']); } if ($slug != $slug_new) { $out .= '<br><b>' . t('Новый slug:') . '</b> <span style="color: red"> ' . $slug_new . '</span>'; $slug_rename++; } if (isset($item['content'])) { $text = $item['content']; } else { $text = ''; } $out .= '<br><b>' . t('Текст:') . '</b> ' . htmlspecialchars(mso_str_word($text, 80)) . '<...>'; $comments = array(); if (isset($item['comments'])) { $comments = @unserialize($item['comments']); } $comments = count($comments); $out .= '<br><b>' . t('Комментарии:') . '</b> ' . $comments; $out .= '<br><br></li>'; $sql_count = $sql_count + 8 + $comments; $comments_count = $comments_count + $comments; $pages_count++; } } $out .= '</ul>'; echo $out . '<div class="update">' . t('Готово! Проверка выполнена!<br>Предположительно запросов к БД будет:') . ' ' . $sql_count . '<br>' . t('Измененных slug (url):') . ' ' . $slug_rename . '<br>' . t('Всего записей:') . ' ' . $pages_count . '<br>' . t('Всего комментариев:') . ' ' . $comments_count . '</div>'; } else {
function content_words($max_words = 15, $cut = '', $do = '<div class="mso-page-content">', $posle = '</div>') { if ($cut) { $cut = ' ' . $this->page_url(true) . $cut . '</a>'; } return $this->out(NR . $do . mso_str_word(strip_tags($this->get_content()), $max_words) . $cut . $posle); }
function last_pages_widget_custom($arg = array(), $num = 1) { if (!isset($arg['count'])) { $arg['count'] = 7; } if (!isset($arg['page_type'])) { $arg['page_type'] = 'blog'; } if (!isset($arg['sort'])) { $arg['sort'] = 'page_date_publish'; } if (!isset($arg['sort_order'])) { $arg['sort_order'] = 'desc'; } if (!isset($arg['date_format'])) { $arg['date_format'] = 'd/m/Y'; } if (!isset($arg['format'])) { $arg['format'] = '<h4>[TITLE]</h4><p>[DATE] [COMMENTS]</p>[IMG]<p>[TEXT]</p>'; } if (!isset($arg['comments_format'])) { $arg['comments_format'] = ' | ' . t('Комментариев: ') . '[COUNT]'; } if (!isset($arg['include_cat'])) { $arg['include_cat'] = ''; } if (!isset($arg['img_prev_def'])) { $arg['img_prev_def'] = ''; } if (!isset($arg['img_prev_attr'])) { $arg['img_prev_attr'] = 'class="b-left w100"'; } if (!isset($arg['max_words'])) { $arg['max_words'] = 20; } if (!isset($arg['text_do'])) { $arg['text_do'] = ''; } if (!isset($arg['text_posle'])) { $arg['text_posle'] = ''; } if (!isset($arg['header'])) { $arg['header'] = mso_get_val('widget_header_start', '<div class="mso-widget-header"><span>') . t('Последние записи') . mso_get_val('widget_header_end', '</span></div>'); } if (!isset($arg['block_start'])) { $arg['block_start'] = ''; } if (!isset($arg['block_end'])) { $arg['block_end'] = ''; } if ($arg['sort_order'] != 'random') { $cache_key = 'last_pages_widget' . serialize($arg) . $num; if ($k = mso_get_cache($cache_key)) { return $k; } // да есть в кэше } $par = array('limit' => $arg['count'], 'cut' => '', 'cat_order' => 'category_name', 'cat_order_asc' => 'asc', 'pagination' => false, 'cat_id' => $arg['include_cat'], 'order' => $arg['sort'], 'order_asc' => $arg['sort_order'], 'type' => $arg['page_type'], 'custom_type' => 'home'); $pages = mso_get_pages($par, $temp); $out = ''; if ($pages) { foreach ($pages as $page) { // [TITLE] [DATE] [TEXT] [IMG] [COMMENTS] [URL] $title = mso_page_title($page['page_slug'], $page['page_title'], '', '', true, false, 'page'); $url = getinfo('site_url') . 'page/' . $page['page_slug']; $date = mso_page_date($page['page_date_publish'], $arg['date_format'], '', '', false); $img = isset($page['page_meta']['image_for_page'][0]) ? $page['page_meta']['image_for_page'][0] : ''; if (!$img and $arg['img_prev_def']) { $img = $arg['img_prev_def']; } if ($img) { $img = '<a href="' . $url . '"><img src="' . $img . '" alt="' . $page['page_title'] . '" ' . $arg['img_prev_attr'] . '></a>'; } if ($page['page_count_comments']) { $comments = str_replace('[COUNT]', $page['page_count_comments'], $arg['comments_format']); } else { $comments = ''; } $text = mso_str_word(strip_tags($page['page_content']), $arg['max_words']) . ' ...'; $out_page = $arg['format']; $out_page = str_replace('[TITLE]', $title, $out_page); $out_page = str_replace('[DATE]', $date, $out_page); $out_page = str_replace('[COMMENTS]', $comments, $out_page); $out_page = str_replace('[URL]', $url, $out_page); $out_page = str_replace('[TEXT]', $text, $out_page); $out_page = str_replace('[IMG]', $img, $out_page); $out .= $out_page; } $out = $arg['header'] . $arg['block_start'] . $arg['text_do'] . $out . $arg['text_posle'] . $arg['block_end']; } if ($arg['sort_order'] != 'random') { mso_add_cache($cache_key, $out); } // в кэш return $out; }
function rss_get_go($arg) { // здесь нет проверок на корректность $arg, потому что мы её уже выполнили в rss_get_widget_custom if (!$arg['url']) { return false; } # проверим кеш, может уже есть в нем все данные $cache_key = 'rss/' . 'rss_get_' . md5(serialize($arg)); $k = mso_get_cache($cache_key, true); if ($k) { return $k; // да есть в кэше } else { require_once getinfo('plugins_dir') . 'rss_get/lastrss.php'; $rss_pars = new lastRSS(); $rss_pars->convert_cp = $arg['charset']; $rss_pars->itemtags = mso_explode($arg['fields'], false); $rss = $rss_pars->Get($arg['url']); } if (!$rss) { return ''; } if (isset($rss[$arg['fields_items']])) { $rss = $rss[$arg['fields_items']]; $rss = array_slice($rss, 0, $arg['count']); // колво записей } else { return ''; // нет items } // меняем ключи с values и заполняем нулями - это шаблон для полей $fields = array_fill_keys(mso_explode($arg['fields'], false), false); $out = ''; foreach ($rss as $item) { // заполним массив шаблона полей значениями из итема $fields_out = $fields; foreach ($fields as $field => $tmp) { if (isset($item[$field])) { $fields_out[$field] = $item[$field]; continue; } } $out1 = $arg['format']; foreach ($fields_out as $field => $value) { // обратное преобразование в html $value = str_replace('<', '<', $value); $value = str_replace('>', '>', $value); $value = str_replace('&', '&', $value); $value = str_replace('<![CDATA[', '', $value); $value = str_replace(']]>', '', $value); // если стоит максимальное колво слов, то обрежем лишнее if ($arg['max_word_description'] and $field != 'link') { $value = mso_str_word($value, $arg['max_word_description']); } // если поле содержит date, то пробуем его преобразовать в нужный нам формат даты if (strpos($field, 'dc:date') !== false or strpos($field, 'date') !== false or $field == 'published' or $field == 'updated') { if (($d = strtotime($value)) !== -1) { // успешное преобразование $value = date($arg['format_date'], $d); } } if ($field == 'link') { $link_host = parse_url($value); $link_host = $link_host['host']; $out1 = str_replace('[link-host]', $link_host, $out1); } $out1 = str_replace('[' . $field . ']', $value, $out1); } $out .= $out1; } if ($out and $arg['time_cache']) { mso_add_cache($cache_key, $out, $arg['time_cache'] * 60, true); } return $out; }
} $offset = $current_paged * $pag['limit'] - $pag['limit']; } else { $pag = false; } // теперь получаем сами записи $CI->db->from('guestbook'); $CI->db->order_by('guestbook_date', 'desc'); if ($pag and $offset) { $CI->db->limit($pag['limit'], $offset); } else { $CI->db->limit($pag['limit']); } $query = $CI->db->get(); if ($query->num_rows() > 0) { $books = $query->result_array(); foreach ($books as $book) { if ($book['guestbook_approved']) { $approved = ''; } else { $approved = '<a title="' . t('Редактировать') . '" style="color: red" href="' . getinfo('site_admin_url') . 'guestbook/editone/' . $book['guestbook_id'] . '">' . t('Ожидает одобрения!') . '</a><br><br>'; } $CI->table->add_row('<a title="' . t('Редактировать') . '" href="' . getinfo('site_admin_url') . 'guestbook/editone/' . $book['guestbook_id'] . '">' . $book['guestbook_id'] . '</a>', $approved . mso_date_convert('Y-m-d H:i:s', $book['guestbook_date']) . '<br><br>' . $book['guestbook_ip'] . '<br><br>' . $book['guestbook_browser'], htmlspecialchars($book['guestbook_name']), mso_str_word(str_replace("\n", "<br>", htmlspecialchars($book['guestbook_text'])), 30), htmlspecialchars($book['guestbook_title']), htmlspecialchars($book['guestbook_email']), htmlspecialchars($book['guestbook_icq']), htmlspecialchars($book['guestbook_site']), htmlspecialchars($book['guestbook_phone']), htmlspecialchars($book['guestbook_custom1']), htmlspecialchars($book['guestbook_custom2']), htmlspecialchars($book['guestbook_custom3']), htmlspecialchars($book['guestbook_custom4']), htmlspecialchars($book['guestbook_custom5'])); } echo '<br>'; mso_hook('pagination', $pag); echo $CI->table->generate(); // вывод подготовленной таблицы echo '<br>'; mso_hook('pagination', $pag); }
function last_pages_widget_custom($arg = array(), $num = 1) { if (!isset($arg['count'])) { $arg['count'] = 7; } if (!isset($arg['page_type'])) { $arg['page_type'] = 'blog'; } if (!isset($arg['sort'])) { $arg['sort'] = 'page_date_publish'; } if (!isset($arg['sort_order'])) { $arg['sort_order'] = 'desc'; } if (!isset($arg['date_format'])) { $arg['date_format'] = 'd/m/Y'; } if (!isset($arg['format'])) { $arg['format'] = '%TITLE%'; } if (!isset($arg['comments_format'])) { $arg['comments_format'] = t(' - комментариев: ') . '%COUNT%'; } if (!isset($arg['exclude_cat'])) { $arg['exclude_cat'] = ''; } if (!isset($arg['include_cat'])) { $arg['include_cat'] = ''; } if (!isset($arg['img_prev'])) { $arg['img_prev'] = ''; } if (!isset($arg['img_prev_def'])) { $arg['img_prev_def'] = ''; } if (!isset($arg['img_prev_attr'])) { $arg['img_prev_attr'] = 'class="left"'; } if (!isset($arg['max_words'])) { $arg['max_words'] = 20; } if (!isset($arg['text_posle'])) { $arg['text_posle'] = ''; } if (!isset($arg['header'])) { $arg['header'] = mso_get_val('widget_header_start', '<h2 class="box"><span>') . t('Последние записи') . mso_get_val('widget_header_end', '</span></h2>'); } if (!isset($arg['block_start'])) { $arg['block_start'] = '<div class="last-pages"><ul class="is_link">'; } if (!isset($arg['block_end'])) { $arg['block_end'] = '</ul></div>'; } $cache_key = 'last_pages_widget' . serialize($arg) . $num; $k = mso_get_cache($cache_key); if ($k) { $current_url = getinfo('siteurl') . mso_current_url(); // текущий урл $k = str_replace('<a href="' . $current_url . '">', '<a href="' . $current_url . '" class="current_url">', $k); return $k; } $arg['exclude_cat'] = mso_explode($arg['exclude_cat']); // рубрики из строки в массив $arg['include_cat'] = mso_explode($arg['include_cat']); // рубрики из строки в массив $CI =& get_instance(); if (strpos($arg['format'], '%TEXT%') === false and strpos($arg['format'], '%TEXT_CUT%') === false and strpos($arg['format'], '%TEXT_PREV%') === false) { $CI->db->select('page.page_id, page_type_name, page_type_name AS page_content, page_slug, page_title, page_date_publish, page_status, COUNT(comments_id) AS page_count_comments', false); } else { $CI->db->select('page.page_id, page.page_content, page_type_name, page_slug, page_title, page_date_publish, page_status, COUNT(comments_id) AS page_count_comments'); } $CI->db->from('page'); $CI->db->where('page_status', 'publish'); //$CI->db->where('page_date_publish <', date('Y-m-d H:i:s')); $time_zone = getinfo('time_zone'); if ($time_zone < 10 and $time_zone > 0) { $time_zone = '0' . $time_zone; } elseif ($time_zone > -10 and $time_zone < 0) { $time_zone = '0' . $time_zone; $time_zone = str_replace('0-', '-0', $time_zone); } else { $time_zone = '00.00'; } $time_zone = str_replace('.', ':', $time_zone); // $CI->db->where('page_date_publish < ', 'NOW()', false); $CI->db->where('page_date_publish < ', 'DATE_ADD(NOW(), INTERVAL "' . $time_zone . '" HOUR_MINUTE)', false); if ($arg['page_type']) { $CI->db->where('page_type_name', $arg['page_type']); } $CI->db->join('page_type', 'page_type.page_type_id = page.page_type_id'); $CI->db->join('comments', 'comments.comments_page_id = page.page_id AND comments_approved = 1', 'left'); if ($arg['exclude_cat']) { $CI->db->join('cat2obj', 'cat2obj.page_id = page.page_id', 'left'); $CI->db->where_not_in('cat2obj.category_id', $arg['exclude_cat']); } if ($arg['include_cat']) { $CI->db->join('cat2obj', 'cat2obj.page_id = page.page_id', 'left'); $CI->db->where_in('cat2obj.category_id', $arg['include_cat']); } $CI->db->order_by($arg['sort'], $arg['sort_order']); $CI->db->group_by('page.page_id'); $CI->db->group_by('comments_page_id'); $CI->db->limit($arg['count']); $query = $CI->db->get(); if ($query->num_rows() > 0) { $pages = $query->result_array(); require_once getinfo('common_dir') . 'category.php'; require_once getinfo('common_dir') . 'meta.php'; $all_cat = mso_cat_array_single(); // все рубрики $out = ''; foreach ($pages as $key => $page) { // метаполе превьюшки if (strpos($arg['format'], '%IMG_PREV%') !== false) { if ($img_prev = mso_get_meta($arg['img_prev'], 'page', $page['page_id'])) { if (isset($img_prev[0]['meta_value']) and $img_prev[0]['meta_value']) { $img_prev = '<img src="' . $img_prev[0]['meta_value'] . '" alt="" ' . $arg['img_prev_attr'] . '> '; } else { $img_prev = '<img src="' . $arg['img_prev_def'] . '" alt="" ' . $arg['img_prev_attr'] . '> '; } } else { if ($arg['img_prev_def']) { $img_prev = '<img src="' . $arg['img_prev_def'] . '" alt="" ' . $arg['img_prev_attr'] . '> '; } else { $img_prev = ''; } } } else { $img_prev = ''; } $out .= $arg['format']; $out = str_replace('%TITLE%', mso_page_title(mso_slug($page['page_slug']), $page['page_title'], '', '', true, false), $out); $out = str_replace('%URL%', getinfo('site_url') . 'page/' . mso_slug($page['page_slug']), $out); $out = str_replace('%DATE%', mso_page_date($page['page_date_publish'], $arg['date_format'], '', '', false), $out); if ($page['page_count_comments']) { $comments_format = str_replace('%COUNT%', $page['page_count_comments'], $arg['comments_format']); } else { $comments_format = ''; } $out = str_replace('%COMMENTS%', $comments_format, $out); $page_content = $page['page_content']; $page_content = mso_hook('content', $page_content); $page_content = mso_hook('content_auto_tag', $page_content); $page_content = mso_hook('content_balance_tags', $page_content); $page_content = mso_hook('content_out', $page_content); $out = str_replace('%TEXT%', mso_balance_tags(mso_auto_tag(mso_hook('content_complete', $page['page_content']))), $out); if (strpos($arg['format'], '%TEXT_PREV%') !== false) { $page_content = $page['page_content']; $page_content = mso_hook('content', $page_content); $page_content = mso_hook('content_auto_tag', $page_content); $page_content = mso_hook('content_complete', $page_content); $page_content = mso_str_word(strip_tags($page_content), $arg['max_words']) . ' ...'; $out = str_replace('%TEXT_PREV%', $page_content, $out); } # если есть cut, то обрабатываем и его $page_content = str_replace('[xcut', '[cut', $page_content); if (preg_match('/\\[cut(.*?)?\\]/', $page_content, $matches)) { $page_content = explode($matches[0], $page_content, 2); $page_content = $page_content[0]; $page_content = mso_hook('content_complete', $page_content); } $out = str_replace('%TEXT_CUT%', mso_balance_tags(mso_auto_tag($page_content)), $out); $out = str_replace('%IMG_PREV%', $img_prev, $out); if (is_type_slug('page', mso_slug($page['page_slug']))) { $out = str_replace('<li>', '<li class="current_url_page">', $out); } if (isset($arg['include_cat'][0]) and is_page_cat($arg['include_cat'][0])) { $out = str_replace('<li>', '<li class="current_url_cat">', $out); } if (isset($arg['include_cat'][0]) and is_type_slug('category', $all_cat[$arg['include_cat'][0]]['category_slug']) and in_array($page['page_id'], $all_cat[$arg['include_cat'][0]]['pages'])) { $out = str_replace('<li>', '<li class="current_url_allcat">', $out); } } $out = $arg['header'] . $arg['block_start'] . NR . $out . $arg['block_end']; $out = str_replace('</li>', '<div class="clearfix"></div></li>', $out); $out .= $arg['text_posle']; mso_add_cache($cache_key, $out); // сразу в кэш добавим // отметим текущую рубрику. Поскольку у нас к кэше должен быть весь список и не делать кэш для каждого url // то мы просто перед отдачей заменяем текущий url на url с li.current_url $current_url = getinfo('siteurl') . mso_current_url(); // текущий урл $out = str_replace('<a href="' . $current_url . '">', '<a href="' . $current_url . '" class="current_url">', $out); return $out; } }
function guestbook_widget_custom($options = array(), $num = 1) { // кэш $cache_key = 'guestbook_widget_custom' . serialize($options) . $num; $k = mso_get_cache($cache_key); if ($k) { return $k; } // да есть в кэше $out = ''; if (!isset($options['header'])) { $options['header'] = ''; } if (!isset($options['limit'])) { $options['limit'] = 10; } if (!isset($options['max-word'])) { $options['max-word'] = 20; } if (!isset($options['text-do'])) { $options['text-do'] = ''; } if (!isset($options['text-posle'])) { $options['text-posle'] = ''; } if (!isset($options['format-date'])) { $options['format-date'] = 'Y-m-d H:i:s'; } if (!isset($options['format'])) { $options['format'] = '<p><b><a href="[url]">[name]</a></b></p> <p>[text]<br><i>[date]</i></p> <hr>'; } $options_guestbook = mso_get_option('plugin_guestbook', 'plugins', array()); if (!isset($options_guestbook['slug'])) { $options_guestbook['slug'] = 'guestbook'; } $CI =& get_instance(); $CI->db->from('guestbook'); $CI->db->where('guestbook_approved', '1'); $CI->db->order_by('guestbook_date', 'desc'); $CI->db->limit($options['limit']); $query = $CI->db->get(); if ($query->num_rows() > 0) { $books = $query->result_array(); foreach ($books as $book) { // pr($book); $text = str_replace("\n", "<br>", htmlspecialchars($book['guestbook_text'])); if ($options['max-word']) { $text = mso_str_word($text, $options['max-word']); } $out .= str_replace(array('[id]', '[ip]', '[browser]', '[date]', '[name]', '[text]', '[title]', '[email]', '[icq]', '[site]', '[phone]', '[custom1]', '[custom2]', '[custom3]', '[custom4]', '[custom5]', '[url]'), array($book['guestbook_id'], $book['guestbook_ip'], $book['guestbook_browser'], mso_date_convert($options['format-date'], $book['guestbook_date']), htmlspecialchars($book['guestbook_name']), $text, htmlspecialchars($book['guestbook_title']), htmlspecialchars($book['guestbook_email']), htmlspecialchars($book['guestbook_icq']), htmlspecialchars($book['guestbook_site']), htmlspecialchars($book['guestbook_phone']), htmlspecialchars($book['guestbook_custom1']), htmlspecialchars($book['guestbook_custom2']), htmlspecialchars($book['guestbook_custom3']), htmlspecialchars($book['guestbook_custom4']), htmlspecialchars($book['guestbook_custom5']), getinfo('siteurl') . $options_guestbook['slug'] . '#guestbook-' . $book['guestbook_id']), $options['format']); } } if ($out) { $out = $options['header'] . $options['text-do'] . $out . $options['text-posle']; } mso_add_cache($cache_key, $out); // сразу в кэш добавим return $out; }
function content_words($max_words = 15, $cut = '', $do = '<div class="page_content">', $posle = '</div>') { return $this->out($do . mso_str_word(strip_tags($this->val('page_content')), $max_words) . $cut . $posle); }