Example #1
0
    exit('No direct script access allowed');
}
/**
 * MaxSite CMS
 * (c) http://max-3000.com/
 */
# подготовка данных
$full_posts = mso_get_option('category_full_text', 'templates', '1');
// полные или короткие записи
// параметры для получения страниц
$par = array('limit' => mso_get_option('limit_post', 'templates', '7'), 'cut' => mso_get_option('more', 'templates', 'Читать полностью »'), 'cat_order' => 'category_name', 'cat_order_asc' => 'asc', 'type' => 'blog', 'content' => $full_posts);
// подключаем кастомный вывод, где можно изменить массив параметров $par для своих задач
if ($f = mso_page_foreach('author-mso-get-pages')) {
    require $f;
}
$pages = mso_get_pages($par, $pagination);
// получим все - второй параметр нужен для сформированной пагинации
$title_page = mso_head_meta('title', $pages, '%users_nik%');
// заголовок для записи на основе титла
if ($f = mso_page_foreach('author-head-meta')) {
    require $f;
} else {
    mso_head_meta('title', $pages, '%users_nik%|%title%', ' » ');
    //  meta title страницы
    mso_head_meta('description', $pages, '%users_nik%');
    // meta description страницы
    mso_head_meta('keywords', $pages, '%users_nik%');
    // meta keywords страницы
}
if (!$pages and mso_get_option('page_404_http_not_found', 'templates', 1)) {
    header('HTTP/1.0 404 Not Found');
Example #2
0
 ob_start();
 if ($home_cat_block) {
     // перебираем рубрики
     foreach ($home_cat_block as $cat_id) {
         if ($f = mso_page_foreach('home-cat-block')) {
             require $f;
             // подключаем кастомный вывод
             continue;
             // следующая итерация
         }
         $par['cat_id'] = $cat_id;
         // подключаем кастомный вывод, где можно изменить массив параметров $par для своих задач
         if ($f = mso_page_foreach('home-cat-block-mso-get-pages')) {
             require $f;
         }
         $pages = mso_get_pages($par, $temp);
         if ($pages) {
             $cat_info = mso_get_cat_from_id($cat_id);
             // все данные рубрики
             // название рубрики и ссылка
             echo '<div class="mso-header-home-cat">' . '<a href="' . getinfo('site_url') . 'category/' . $cat_info['category_slug'] . '">' . htmlspecialchars($cat_info['category_name']) . '</a>' . '</div>';
             // выводить описание рубрики
             if (mso_get_option('default_description_home_cat', 'templates', '0') and $cat_info['category_desc']) {
                 echo '<div class="mso-description-cat">' . $cat_info['category_desc'] . '</div>';
             }
             if ($f = mso_page_foreach('home-cat-block-out-pages-do')) {
                 require $f;
             }
             mso_set_val('container_class', 'mso-type-home mso-type-home-cat-block mso-type-home-cat-block-list');
             if (mso_get_option('default_description_home', 'templates', '0')) {
                 mso_set_val('list_line_format', '[title] - [date] [meta_description]');
Example #3
0
function mso_remote_f_getpost($post)
{
    if (!isset($post['remote_page_id']) or !$post['remote_page_id']) {
        return 'ERROR: missing arguments';
    }
    require_once getinfo('common_dir') . 'page.php';
    require_once getinfo('common_dir') . 'inifile.php';
    // функции для работы с ini-файлом
    // удалим хуки для текста - должно отдаваться как в базе
    mso_remove_hook('content');
    mso_remove_hook('content_auto_tag');
    mso_remove_hook('content_balance_tags');
    mso_remove_hook('content_out');
    mso_remove_hook('content_complete');
    $par = array('custom_type' => 'home', 'pagination' => false, 'content' => true, 'work_cut' => false, 'type' => false, 'page_id' => $post['remote_page_id'], 'date_now' => false, 'page_status' => false, 'page_id_autor' => $post['remote_users_id'], 'all_fields' => true);
    // если юзеру разрешено редактировать чужие страницы, то 'page_id_autor' сбрасываем
    // иначе только свои страницы можно загружать
    if (mso_check_user_password($post['remote_users_login'], $post['remote_users_password'], 'admin_page_edit_other')) {
        $par['page_id_autor'] = false;
    }
    $pages = mso_get_pages($par, $pagination);
    // получим странички
    $out = '';
    if ($pages) {
        foreach ($pages as $page) {
            foreach ($page as $p_name => $p_val) {
                if ($p_name == 'page_categories_detail') {
                    continue;
                } elseif ($p_name == 'users_description') {
                    continue;
                } elseif ($p_name == 'users_avatar_url') {
                    continue;
                } elseif ($p_name == 'users_login') {
                    continue;
                } elseif ($p_name == 'page_content') {
                    $p_val = str_replace("\n", '!RMTNR!', $p_val);
                } elseif ($p_name == 'page_categories') {
                    // это массив, где хранятся id рубрик
                    $p_val = implode(" ", $p_val);
                } elseif ($p_name == 'page_tags') {
                    // это массив, где хранятся имена меток
                    $p_val = implode('!RMTNR!', $p_val);
                } elseif ($p_name == 'page_meta') {
                    //  это массивы в массиве
                    $pm = '';
                    foreach ($p_val as $page_meta_key => $page_meta_val) {
                        $pm .= '!RMTMETA!' . $page_meta_key . '=' . implode('!RMTNR!', $page_meta_val);
                    }
                    $p_val = $pm;
                } elseif ($p_name == 'page_date_publish') {
                    //page_date_publish=2009-01-05 22:27:22
                    $out .= NR . 'page_date_publish_year=' . mso_date_convert('Y', $p_val, false);
                    $out .= NR . 'page_date_publish_mon=' . mso_date_convert('m', $p_val, false);
                    $out .= NR . 'page_date_publish_day=' . mso_date_convert('d', $p_val, false);
                    $out .= NR . 'page_date_publish_hour=' . mso_date_convert('H', $p_val, false);
                    $out .= NR . 'page_date_publish_min=' . mso_date_convert('i', $p_val, false);
                    $out .= NR . 'page_date_publish_sec=' . mso_date_convert('s', $p_val, false);
                } elseif (is_array($p_val)) {
                    continue;
                }
                $out .= NR . $p_name . '=' . $p_val;
            }
        }
        # нужно передать и все метаполя, которые в шаблоне и admin_page/meta.ini.
        # Они могут быть пустыми, поэтому их нет в page_meta
        $all = mso_get_ini_file(getinfo('admin_plugins_dir') . 'admin_page/meta.ini');
        if (file_exists(getinfo('template_dir') . 'meta.ini')) {
            $meta_templ = mso_get_ini_file(getinfo('template_dir') . 'meta.ini');
            if ($meta_templ) {
                $all = array_merge($all, $meta_templ);
            }
        }
        $pm = '';
        foreach ($all as $key => $val) {
            $pm .= '!RMTMETA!' . $key . '=' . _mso_implode($val);
        }
        $out .= NR . 'page_meta_template=' . $pm;
    } else {
        return 'ERROR: no page';
    }
    return trim($out);
}
Example #4
0
function mso_next_prev_page($r = array())
{
    $out = array();
    if (!isset($r['page_id']) or !isset($r['page_categories']) or !isset($r['page_date_publish'])) {
        $out['next'] = false;
        $out['prev'] = false;
        return $out;
    }
    // передаем дату отдельно, она используется в function_add_custom_sql
    mso_set_val('_sql_next_prev_pages_page_date_publish', $r['page_date_publish']);
    // $r['use_category'] — если нужно учитывать рубрику
    if (!isset($r['use_category'])) {
        $r['use_category'] = true;
    }
    if ($r['use_category']) {
        // рубрики
        $cat = $r['page_categories'];
        // если несколько рубрик, то ищем те, в которых
        // category_id_parent не равен 0 — это подрубрики
        // если такие есть, то по ним и делаем навигаци
        if (count($r['page_categories']) > 1) {
            $all_cat = mso_cat_array_single();
            // все рубрики
            foreach ($r['page_categories'] as $id) {
                if ($all_cat[$id]['parents'] > 0) {
                    $cat = array($id);
                    break;
                }
            }
        }
        $cat = implode(',', $cat);
    } else {
        $cat = '';
        // рубрика не учитывается
    }
    if (!isset($r['type'])) {
        $r['type'] = 'blog';
    }
    // можно задать тип записей
    // next
    if ($pages = mso_get_pages(array('content' => false, 'cat_id' => $cat, 'order_asc' => 'asc', 'limit' => 1, 'pagination' => false, 'custom_type' => 'home', 'function_add_custom_sql' => '_sql_next_page', 'get_page_categories' => false, 'get_page_meta_tags' => false, 'get_page_count_comments' => false, 'type' => $r['type'], 'exclude_page_id' => $r['page_id']), $temp)) {
        $out['next'] = $pages[0];
    } else {
        $out['next'] = false;
    }
    // prev
    if ($pages = mso_get_pages(array('content' => false, 'cat_id' => $cat, 'order_asc' => 'desc', 'limit' => 1, 'pagination' => false, 'custom_type' => 'home', 'function_add_custom_sql' => '_sql_prev_page', 'get_page_categories' => false, 'get_page_meta_tags' => false, 'get_page_count_comments' => false, 'type' => $r['type'], 'exclude_page_id' => $r['page_id']), $temp)) {
        $out['prev'] = $pages[0];
    } else {
        $out['prev'] = false;
    }
    // $r['reverse'] — меняем местами пункты
    if (isset($r['reverse']) and $r['reverse']) {
        $o = array();
        $o['next'] = $out['prev'];
        $o['prev'] = $out['next'];
        $out = $o;
    }
    return $out;
}
Example #5
0
if (!defined('BASEPATH')) {
    exit('No direct script access allowed');
}
// Использовать в type/ шаблона
// Директория должна быть уже создана, иначе смерть
$dirName = getinfo('template_dir') . 'type/export/';
if (!file_exists($dirName)) {
    die("Directory {$dirName} is not found in root folder");
}
// Плоский массив всех рубрик
$allCategories = mso_cat_array_single('page', 'category_name', 'ASC', '', true, false);
// pr($allCategories);
// Делаем запрос к БД штатными средствами
$par = array('type' => 'blog', 'get_page_count_comments' => false, 'cut' => '', 'custom_type' => 'home', 'no_limit' => true);
$pages = mso_get_pages($par, $pag);
// pr($pages);
// Обходим массив с результатами запроса и пишем файлы
foreach ($pages as $page) {
    // pr($page);
    // Имя создаваемого файла
    $fileName = mso_page_date($page['page_date_publish'], 'Y-m-d', '', '', false) . '-' . $page['page_slug'] . '.md';
    // pr($fileName);
    // Рубрики
    $categories = '';
    foreach ($page['page_categories'] as $catId) {
        $categories .= $allCategories[$catId]['category_slug'] . ', ';
    }
    // Метки
    $tags = '';
    foreach ($page['page_tags'] as $tag) {
Example #6
0
function sitemap($arg = '')
{
    if (mso_segment(2) == 'cat') {
        return sitemap_cat($arg);
    }
    global $MSO;
    // кэш строим по url, потому что у он меняется от пагинации
    $cache_key = 'sitemap' . serialize($MSO->data['uri_segment']);
    $k = mso_get_cache($cache_key);
    if ($k) {
        return $k;
    }
    // да есть в кэше
    $options = mso_get_option('plugin_sitemap', 'plugins', array());
    // получаем опции
    if (!isset($options['limit'])) {
        $options['limit'] = 30;
    } else {
        $options['limit'] = (int) $options['limit'];
    }
    if ($options['limit'] < 2) {
        $options['limit'] = 30;
    }
    $out = '';
    // параметры для получения страниц
    $par = array('limit' => $options['limit'], 'custom_type' => 'home', 'content' => false, 'cat_order' => 'category_id_parent', 'cat_order_asc' => 'asc');
    if ($f = mso_page_foreach('sitemap-mso-get-pages')) {
        require $f;
    }
    $pages = mso_get_pages($par, $pagination);
    // получим все
    if ($pages) {
        $out .= '<div class="page_content"><div class="sitemap">' . NR . mso_hook('sitemap_do');
        $out .= '<div class="sitemap-link"><a href="' . getinfo('siteurl') . 'sitemap/cat">' . tf('Группировка по рубрикам') . '</a>' . NR . '</div>';
        $first = true;
        foreach ($pages as $page) {
            $date = mso_date_convert('m/Y', $page['page_date_publish']);
            if ($first) {
                $out .= '<h3>' . $date . '</h3>' . NR . '<ul>' . NR;
                $first = false;
            } elseif ($date1 != $date) {
                $out .= '</ul>' . NR . '<h3>' . $date . '</h3>' . NR . '<ul>' . NR;
            }
            $slug = mso_slug($page['page_slug']);
            $out .= '<li>' . mso_date_convert('d', $page['page_date_publish']) . ': <a href="' . getinfo('siteurl') . 'page/' . $slug . '" title="' . htmlspecialchars($page['page_title']) . '">' . htmlspecialchars($page['page_title']) . '</a>';
            if ($page['page_categories']) {
                $out .= ' <span>(' . mso_page_cat_link($page['page_categories'], ' &rarr; ', '', '', false) . ')</span>';
            }
            # синонимы ссылок
            /*
            . ' ('
            . '<a href="' . getinfo('siteurl') . $slug . '" title="slug: ' . $slug . '">slug</a>, '
            . '<a href="' . getinfo('siteurl') . 'page/' . $page['page_id'] . '" title="page: ' . $page['page_id'] . '">page: ' . $page['page_id'] . '</a>, '
            . '<a href="' . getinfo('siteurl') . $page['page_id'] . '" title="id: ' . $page['page_id'] . '">id: ' . $page['page_id'] . '</a>)'
            */
            # /синонимы ссылок
            $out .= '</li>' . NR;
            $date1 = $date;
        }
        $out .= '</ul>' . NR . mso_hook('sitemap_posle') . '</div></div>' . NR;
    }
    $pagination['type'] = '';
    ob_start();
    mso_hook('pagination', $pagination);
    $out .= ob_get_contents();
    ob_end_clean();
    mso_add_cache($cache_key, $out);
    // сразу в кэш добавим
    return $out;
}
Example #7
0
function mso_page_other_pages($page_id = 0, $page_categories = array())
{
    if ($bl_title = mso_get_option('page_other_pages', 'templates', tf('Еще записи по теме'))) {
        // алгоритм получения записей
        $algoritm = mso_get_option('page_other_pages_algoritm', 'templates', 'all');
        if ($algoritm == 'lowlewel') {
            $all_cat = mso_cat_array_single();
            // все рубрики
            $bl_page_categories = array();
            // обработаный массив id-level
            foreach ($page_categories as $cat_id) {
                $bl_page_categories[$cat_id] = $all_cat[$cat_id]['level'];
            }
            arsort($bl_page_categories);
            // сортируем в обратном порядке
            $bl_page_categories = array_keys($bl_page_categories);
            // оставляем только ключи (id)
            // если что-то есть, то оставляем только первую рубрику, иначе $page_categories
            if (isset($bl_page_categories[0])) {
                $bl_page_categories = array($bl_page_categories[0]);
            } else {
                $bl_page_categories = $page_categories;
            }
        } else {
            // обычный вывод по всем рубрикам
            $bl_page_categories = $page_categories;
        }
        $bl_pages = mso_get_pages(array('type' => false, 'content' => false, 'pagination' => false, 'custom_type' => 'category', 'categories' => $bl_page_categories, 'exclude_page_id' => array($page_id), 'content' => false, 'limit' => mso_get_option('page_other_pages_limit', 'templates', 7), 'order' => mso_get_option('page_other_pages_order', 'templates', 'page_date_publish'), 'order_asc' => mso_get_option('page_other_pages_order_asc', 'templates', 'random')), $_temp);
        if ($bl_pages) {
            echo '<div class="page_other_pages">' . mso_get_val('page_other_pages_start', '<h3>') . $bl_title . mso_get_val('page_other_pages_end', '</h3>') . '<ul>';
            foreach ($bl_pages as $bl_page) {
                mso_page_title($bl_page['page_slug'], $bl_page['page_title'], '<li>', '</li>', true);
            }
            echo '</ul></div>';
        }
    }
}
Example #8
0
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;
}
Example #9
0
 protected function get_pages($r)
 {
     // дефолтные значения для получения записей
     $default = array('limit' => 1, 'cut' => '»»»', 'pagination' => false, 'cat_id' => 0, 'page_id' => 0, 'page_id_autor' => false, 'type' => 'blog', 'order' => 'page_date_publish', 'order_asc' => 'desc', 'show_cut' => true, 'date_now' => true, 'exclude_page_allow' => true);
     $this->param = array_merge($default, $r);
     // объединяем с дефолтом
     $exclude_page_id = $this->param['exclude_page_allow'] ? mso_get_val('exclude_page_id') : array();
     $this->pages = mso_get_pages(array('limit' => $this->param['limit'], 'cut' => $this->param['cut'], 'pagination' => $this->param['pagination'], 'cat_id' => $this->param['cat_id'], 'page_id' => $this->param['page_id'], 'page_id_autor' => $this->param['page_id_autor'], 'type' => $this->param['type'], 'order' => $this->param['order'], 'order_asc' => $this->param['order_asc'], 'show_cut' => $this->param['show_cut'], 'show_xcut' => $this->param['show_cut'], 'date_now' => $this->param['date_now'], 'custom_type' => 'home', 'exclude_page_id' => $exclude_page_id), $this->pagination);
     $this->go = $this->pages ? true : false;
 }