예제 #1
0
파일: index.php 프로젝트: Kmartynov/cms
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);
}
예제 #2
0
파일: index.php 프로젝트: rb2/MaxSite-CMS
function twitter_go($url = false, $count = 5, $format = '<p><strong>%DATE%</strong><br>%TITLE% <a href="%LINK%">&gt;&gt;&gt;</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;
}
예제 #3
0
파일: admin.php 프로젝트: Kmartynov/cms
                 $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)) . '&lt;...&gt;';
             $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 {
예제 #4
0
파일: page-out.php 프로젝트: Kmartynov/cms
 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);
 }
예제 #5
0
파일: index.php 프로젝트: Kmartynov/cms
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;
}
예제 #6
0
파일: index.php 프로젝트: Kmartynov/cms
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('&lt;', '<', $value);
            $value = str_replace('&gt;', '>', $value);
            $value = str_replace('&amp;', '&', $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;
}
예제 #7
0
파일: edit.php 프로젝트: Kmartynov/cms
    }
    $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);
}
예제 #8
0
파일: index.php 프로젝트: rb2/MaxSite-CMS
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;
    }
}
예제 #9
0
파일: index.php 프로젝트: Kmartynov/cms
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;
}
예제 #10
0
 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);
 }