Beispiel #1
0
/**
 * Обработка тега системного блока
 *
 * @param int $id идентификатор системного блока
 */
function parse_sysblock($id)
{
    global $AVE_DB, $AVE_Core;
    $gen_time = microtime();
    if (is_array($id)) {
        $id = $id[1];
    }
    if (is_numeric($id)) {
        $eval_sysblock = false;
        if ($id < 0) {
            $id = abs($id);
            $eval_sysblock = true;
        }
        $cache_file = BASE_DIR . '/cache/sql/sysblock-' . $id . '.cache';
        if (!file_exists(dirname($cache_file))) {
            mkdir(dirname($cache_file), 0766, true);
        }
        if (file_exists($cache_file)) {
            $return = file_get_contents($cache_file);
        } else {
            $return = $AVE_DB->Query("\n                SELECT sysblock_text\n                FROM " . PREFIX . "_sysblocks\n                WHERE id = '" . $id . "'\n                LIMIT 1\n            ")->GetCell();
            file_put_contents($cache_file, $return);
        }
        // парсим остальные теги основного шаблона
        $search = array('[tag:mediapath]', '[tag:path]', '[tag:home]', '[tag:docid]', '[tag:breadcrumb]');
        $replace = array(ABS_PATH . 'templates/' . THEME_FOLDER . '/', ABS_PATH, get_home_link(), get_current_document_id(), get_breadcrumb());
        $return = str_replace($search, $replace, $return);
        $return = preg_replace_callback('/\\[tag:request:(\\d+)\\]/', 'request_parse', $return);
        if ($eval_sysblock) {
            $return = eval2var('?' . '>' . $return . '<' . '?');
        }
        $gen_time = microtime() - $gen_time;
        $GLOBALS['block_generate'][] = array('SYSBLOCK_' . $id => $gen_time);
        return $return;
    }
}
Beispiel #2
0
/**
 * Обработка тега запроса.
 * Возвращает список документов удовлетворяющих параметрам запроса
 * оформленный с использованием шаблона
 *
 * @param int $id	идентификатор запроса
 * @return string
 */
function request_parse($id)
{
    global $AVE_Core, $AVE_DB, $request_documents;
    $return = '';
    if (is_array($id)) {
        $id = $id[1];
    }
    $row_ab = $AVE_DB->Query("\r\n\t\tSELECT *\r\n\t\tFROM " . PREFIX . "_request\r\n\t\tWHERE Id = '" . $id . "'\r\n\t")->FetchRow();
    if (is_object($row_ab)) {
        $ttl = (int) $row_ab->request_cache_lifetime;
        $limit = $row_ab->request_items_per_page < 1 ? 1 : $row_ab->request_items_per_page;
        $main_template = $row_ab->request_template_main;
        $item_template = $row_ab->request_template_item;
        $request_order_by = $row_ab->request_order_by;
        $request_asc_desc = $row_ab->request_asc_desc;
        $request_order = $request_order_by . " " . $request_asc_desc;
        $request_order_fields = '';
        $request_order_tables = '';
        if ($row_ab->request_order_by_nat) {
            $request_order_tables = "LEFT JOIN " . PREFIX . "_document_fields AS s" . $row_ab->request_order_by_nat . "\r\n\t\t\t    ON (s" . $row_ab->request_order_by_nat . ".document_id = a.Id and s" . $row_ab->request_order_by_nat . ".rubric_field_id=" . $row_ab->request_order_by_nat . ")";
            $request_order_fields = "s" . $row_ab->request_order_by_nat . ".field_value, ";
            $request_order = "s" . $row_ab->request_order_by_nat . ".field_value " . $row_ab->request_asc_desc;
        }
        $doctime = get_settings('use_doctime') ? "AND a.document_published <= UNIX_TIMESTAMP() AND\r\n \t\t         \t(a.document_expire = 0 OR a.document_expire >=UNIX_TIMESTAMP())" : '';
        $where_cond = empty($_POST['req_' . $id]) && empty($_SESSION['doc_' . $AVE_Core->curentdoc->Id]['req_' . $id]) ? unserialize($row_ab->request_where_cond) : unserialize(request_get_condition_sql_string($row_ab->Id));
        $where_cond['from'] = str_replace('%%PREFIX%%', PREFIX, $where_cond['from']);
        $where_cond['where'] = str_replace('%%PREFIX%%', PREFIX, $where_cond['where']);
        if ($row_ab->request_show_pagination == 1) {
            if (!empty($AVE_Core->install_modules['comment']->Status)) {
                $num = $AVE_DB->Query(eval2var(" ?> \r\n\t\t\t\t\tSELECT COUNT(*)\r\n\t\t\t\t\tFROM \r\n\t\t\t\t\t" . ($where_cond['from'] ? $where_cond['from'] : '') . "\r\n\t\t\t\t\t" . PREFIX . "_documents AS a\r\n\t\t\t\t\tWHERE\r\n\t\t\t\t\t\ta.Id != '1'\r\n\t\t\t\t\tAND a.Id != '" . PAGE_NOT_FOUND_ID . "'\r\n\t\t\t\t\tAND a.Id != '" . get_current_document_id() . "'\r\n\t\t\t\t\tAND a.rubric_id = '" . $row_ab->rubric_id . "'\r\n\t\t\t\t\tAND a.document_deleted != '1'\r\n\t\t\t\t\tAND a.document_status != '0'\r\n\t\t\t\t\t" . $where_cond['where'] . "\r\n\t\t\t\t\t" . $doctime . "\r\n\t\t\t\t<?php "), $ttl, 'rub_' . $row_ab->rubric_id)->GetCell();
            } else {
                $num = $AVE_DB->Query(eval2var(" ?>\r\n\t\t\t\t\tSELECT COUNT(*)\r\n\t\t\t\t\tFROM \r\n\t\t\t\t\t" . ($where_cond['from'] ? $where_cond['from'] : '') . "\r\n\t\t\t\t\t" . PREFIX . "_documents AS a\r\n\t\t\t\t\tWHERE\r\n\t\t\t\t\t\ta.Id != '1'\r\n\t\t\t\t\tAND a.Id != '" . PAGE_NOT_FOUND_ID . "'\r\n\t\t\t\t\tAND a.Id != '" . get_current_document_id() . "'\r\n\t\t\t\t\tAND a.rubric_id = '" . $row_ab->rubric_id . "'\r\n\t\t\t\t\tAND a.document_deleted != '1'\r\n\t\t\t\t\tAND a.document_status != '0'\r\n\t\t\t\t\t" . $where_cond['where'] . "\r\n\t\t\t\t\t" . $doctime . "\r\n\t\t\t\t<?php "), $ttl, 'rub_' . $row_ab->rubric_id)->GetCell();
            }
            $seiten = ceil($num / $limit);
            if (isset($_REQUEST['apage']) && is_numeric($_REQUEST['apage']) && $_REQUEST['apage'] > $seiten) {
                $redirect_link = rewrite_link('index.php?id=' . $AVE_Core->curentdoc->Id . '&amp;doc=' . (empty($AVE_Core->curentdoc->document_alias) ? prepare_url($AVE_Core->curentdoc->document_title) : $AVE_Core->curentdoc->document_alias) . (isset($_REQUEST['artpage']) && is_numeric($_REQUEST['artpage']) ? '&amp;artpage=' . $_REQUEST['artpage'] : '') . (isset($_REQUEST['page']) && is_numeric($_REQUEST['page']) ? '&amp;page=' . $_REQUEST['page'] : ''));
                header('Location:' . $redirect_link);
                exit;
            }
            $start = get_current_page('apage') * $limit - $limit;
        } else {
            $start = 0;
        }
        if ($row_ab->request_items_per_page != 0) {
            $filter_limit = "LIMIT " . $start . "," . $limit;
        }
        if (!empty($AVE_Core->install_modules['comment']->Status)) {
            $q = " ?>\r\n\t\t\t\tSELECT\r\n\t\t\t\t\t" . $request_order_fields . "\r\n\t\t\t\t\ta.Id,\r\n\t\t\t\t\ta.document_title,\r\n\t\t\t\t\ta.document_alias,\r\n\t\t\t\t\ta.document_author_id,\r\n\t\t\t\t\ta.document_count_view,\r\n\t\t\t\t\ta.document_published,\r\n\t\t\t\t\tCOUNT(b.document_id) AS nums\r\n\t\t\t\tFROM\r\n\t\t\t\t\t" . ($where_cond['from'] ? $where_cond['from'] : '') . "\r\n\t\t\t\t\t" . PREFIX . "_documents AS a\r\n\t\t\t\tLEFT JOIN\r\n\t\t\t\t\t" . PREFIX . "_modul_comment_info AS b\r\n\t\t\t\t\t\tON b.document_id = a.Id\r\n\t\t\t\t    " . ($request_order_tables > '' ? $request_order_tables : '') . "\t\r\n\t\t\t\tWHERE\r\n\t\t\t\t\ta.Id != '1'\r\n\t\t\t\tAND a.Id != '" . PAGE_NOT_FOUND_ID . "'\r\n\t\t\t\tAND a.Id != '" . get_current_document_id() . "'\r\n\t\t\t\tAND a.rubric_id = '" . $row_ab->rubric_id . "'\r\n\t\t\t\tAND a.document_deleted != '1'\r\n\t\t\t\tAND a.document_status != '0'\r\n\t\t\t\t" . $where_cond['where'] . "\r\n\t\t\t\t" . $doctime . "\r\n\t\t\t\tGROUP BY a.Id\r\n\t\t\t\tORDER BY " . $request_order . "\r\n\t\t\t\t" . $filter_limit . " <?php ";
        } else {
            $q = " ?>\r\n\t\t\t\tSELECT\r\n\t\t\t\t\t" . $request_order_fields . "\r\n\t\t\t\t\ta.Id,\r\n\t\t\t\t\ta.document_title,\r\n\t\t\t\t\ta.document_alias,\r\n\t\t\t\t\ta.document_author_id,\r\n\t\t\t\t\ta.document_count_view,\r\n\t\t\t\t\ta.document_published\r\n\t\t\t\tFROM\r\n\t\t\t\t\t" . ($where_cond['from'] ? $where_cond['from'] : '') . "\r\n\t\t\t\t\t\r\n\t\t\t\t\t" . PREFIX . "_documents AS a\r\n\t\t\t\t\t" . ($request_order_tables > '' ? $request_order_tables : "") . "\r\n\t\t\t\tWHERE\r\n\t\t\t\t\ta.Id != '1'\r\n\t\t\t\tAND a.Id != '" . PAGE_NOT_FOUND_ID . "'\r\n\t\t\t\tAND a.Id != '" . get_current_document_id() . "'\r\n\t\t\t\tAND a.rubric_id = '" . $row_ab->rubric_id . "'\r\n\t\t\t\tAND a.document_deleted != '1'\r\n\t\t\t\tAND a.document_status != '0'\r\n\t\t\t\t" . $where_cond['where'] . "\r\n\t\t\t\t" . $doctime . "\r\n\t\t\t\tORDER BY " . $request_order . "\r\n\t\t\t\t" . $filter_limit . " <?php ";
        }
        $q = eval2var($q);
        $q = $AVE_DB->Query($q, $ttl, 'rub_' . $row_ab->rubric_id);
        if ($q->NumRows() > 0) {
            $main_template = preg_replace('/\\[tag:if_empty](.*?)\\[\\/tag:if_empty]/si', '', $main_template);
            $main_template = str_replace(array('[tag:if_notempty]', '[/tag:if_notempty]'), '', $main_template);
        } else {
            $main_template = preg_replace('/\\[tag:if_notempty](.*?)\\[\\/tag:if_notempty]/si', '', $main_template);
            $main_template = str_replace(array('[tag:if_empty]', '[/tag:if_empty]'), '', $main_template);
        }
        $page_nav = '';
        if ($row_ab->request_show_pagination == 1 && $seiten > 1 && $row_ab->request_items_per_page != 0) {
            $page_nav = ' <a class="pnav" href="index.php?id=' . $AVE_Core->curentdoc->Id . '&amp;doc=' . (empty($AVE_Core->curentdoc->document_alias) ? prepare_url($AVE_Core->curentdoc->document_title) : $AVE_Core->curentdoc->document_alias) . (isset($_REQUEST['artpage']) && is_numeric($_REQUEST['artpage']) ? '&amp;artpage=' . $_REQUEST['artpage'] : '') . '&amp;apage={s}' . (isset($_REQUEST['page']) && is_numeric($_REQUEST['page']) ? '&amp;page=' . $_REQUEST['page'] : '') . '">{t}</a> ';
            $page_nav = get_pagination($seiten, 'apage', $page_nav, get_settings('navi_box'));
            $page_nav = rewrite_link($page_nav);
        }
        $rows = array();
        $request_documents = array();
        while ($row = $q->FetchRow()) {
            array_push($request_documents, $row->Id);
            array_push($rows, $row);
        }
        $items = '';
        foreach ($rows as $row) {
            $cachefile_docid = BASE_DIR . '/cache/sql/doc_' . $row->Id . '/request-' . $id . '.cache';
            if (!file_exists($cachefile_docid)) {
                $item = preg_replace('/\\[tag:rfld:(\\d+)]\\[(more|esc|[0-9-]+)]/e', "request_get_document_field(\"\$1\", {$row->Id}, \"\$2\")", $item_template);
                //if(!file_exists(dirname($cachefile_docid)))mkdir(dirname($cachefile_docid),0777,true);
                //file_put_contents($cachefile_docid,$item);
            } else {
                $item = file_get_contents($cachefile_docid);
            }
            $link = rewrite_link('index.php?id=' . $row->Id . '&amp;doc=' . (empty($row->document_alias) ? prepare_url($row->document_title) : $row->document_alias));
            $item = str_replace('[tag:link]', $link, $item);
            $item = str_replace('[tag:docid]', $row->Id, $item);
            $item = str_replace('[tag:doctitle]', $row->document_title, $item);
            $item = str_replace('[tag:docparent]', $row->document_parent, $item);
            $item = str_replace('[tag:docdate]', pretty_date(strftime(DATE_FORMAT, $row->document_published)), $item);
            $item = str_replace('[tag:doctime]', pretty_date(strftime(TIME_FORMAT, $row->document_published)), $item);
            $item = str_replace('[tag:docauthor]', get_username_by_id($row->document_author_id), $item);
            $item = str_replace('[tag:docviews]', $row->document_count_view, $item);
            $item = str_replace('[tag:doccomments]', isset($row->nums) ? $row->nums : '', $item);
            $items .= $item;
        }
        $main_template = str_replace('[tag:pages]', $page_nav, $main_template);
        $main_template = str_replace('[tag:doctotal]', $seiten * $q->NumRows(), $main_template);
        $main_template = str_replace('[tag:pagetitle]', $AVE_DB->Query("SELECT document_title FROM " . PREFIX . "_documents WHERE Id = '" . $AVE_Core->curentdoc->Id . "' ")->GetCell(), $main_template);
        $main_template = str_replace('[tag:docid]', $AVE_Core->curentdoc->Id, $main_template);
        $main_template = str_replace('[tag:docdate]', pretty_date(strftime(DATE_FORMAT, $AVE_Core->curentdoc->document_published)), $main_template);
        $main_template = str_replace('[tag:doctime]', pretty_date(strftime(TIME_FORMAT, $AVE_Core->curentdoc->document_published)), $main_template);
        $main_template = str_replace('[tag:docauthor]', get_username_by_id($AVE_Core->curentdoc->document_author_id), $main_template);
        $main_template = preg_replace('/\\[tag:dropdown:([,0-9]+)\\]/e', "request_get_dropdown(\"\$1\", " . $row_ab->rubric_id . ", " . $row_ab->Id . ");", $main_template);
        $return = str_replace('[tag:content]', $items, $main_template);
        $return = str_replace('[tag:path]', ABS_PATH, $return);
        $return = str_replace('[tag:mediapath]', ABS_PATH . 'templates/' . THEME_FOLDER . '/', $return);
        $return = $AVE_Core->coreModuleTagParse($return);
    }
    return $return;
}
/**
 * Обработка тега запроса.
 * Возвращает список документов удовлетворяющих параметрам запроса
 * оформленный с использованием шаблона
 *
 * @param int $id	идентификатор запроса
 * @return string
 */
function request_parse($id, $params = array())
{
    global $AVE_Core, $AVE_DB, $request_documents;
    //Доберусь - надо сделать фишку чтобы если афтар не активен или удален то документы его в реквесте не выводятся
    //по идее это бы надстройкой к рекесту сделать чтобы новости не побить и т.д.
    $gen_time = microtime();
    $return = '';
    if (is_array($id)) {
        $id = $id[1];
    }
    $row_ab = $AVE_DB->Query("\n\t\tSELECT *\n\t\tFROM " . PREFIX . "_request\n\t\tWHERE Id = '" . $id . "'\n\t")->FetchRow();
    if (is_object($row_ab)) {
        $ttl = (int) $row_ab->request_cache_lifetime;
        $limit = isset($params['LIMIT']) && intval($params['LIMIT']) > 0 ? intval($params['LIMIT']) : ($row_ab->request_items_per_page > 0 ? $row_ab->request_items_per_page : 0);
        $main_template = $row_ab->request_template_main;
        $item_template = $row_ab->request_template_item;
        $request_order_by = $row_ab->request_order_by;
        $request_asc_desc = $row_ab->request_asc_desc;
        //строим списки подключаемых полей для сортировки
        $request_order = $request_order_by . " " . $request_asc_desc;
        $request_order_fields = '';
        $request_order_tables = '';
        $request_order1 = '';
        if ($row_ab->request_order_by_nat) {
            $request_order_tables = "LEFT JOIN " . PREFIX . "_document_fields AS s" . $row_ab->request_order_by_nat . "\n\t\t\t    ON (s" . $row_ab->request_order_by_nat . ".document_id = a.Id and s" . $row_ab->request_order_by_nat . ".rubric_field_id=" . $row_ab->request_order_by_nat . ")";
            $request_order_fields = "s" . $row_ab->request_order_by_nat . ".field_value, ";
            $request_order = "s" . $row_ab->request_order_by_nat . ".field_value " . $row_ab->request_asc_desc;
        }
        $x = 0;
        if (!empty($params['SORT']) && is_array($params['SORT'])) {
            foreach ($params['SORT'] as $k => $v) {
                if (intval($k) > 0) {
                    $x++;
                    $request_order_tables .= "LEFT JOIN " . PREFIX . "_document_fields AS s" . $k . "\n\t\t\t\t\t\tON (s" . $k . ".document_id = a.Id and s" . $k . ".rubric_field_id=" . $k . ")";
                    if (strpos($v, 'INT') === false) {
                        $request_order_fields .= "s" . $k . ".field_value, ";
                    } else {
                        $request_order_fields .= "s" . $k . ".field_number_value, ";
                        $v = str_replace('INT', '', $v);
                    }
                    $request_order1 .= $x . ' ' . $v . ', ';
                }
            }
        }
        /* ----------- */
        $request_order = addslashes($request_order1 . $request_order);
        $request_order2 = '';
        /* ----------- */
        //Этот кусок для того чтобы можно было параметрами попросить произвольный статус досумента
        //- например в личном кабинете попросить архивные документы
        $docstatus = "AND a.document_status != '0'";
        $docstatus = "AND a.document_status = '1'";
        if (isset($params['STATUS'])) {
            $docstatus = "AND a.document_status = '" . intval($params['STATUS']) . "'";
        }
        $doctime = get_settings('use_doctime') ? "AND a.document_published <= UNIX_TIMESTAMP() AND\n \t\t         \t(a.document_expire = 0 OR a.document_expire >=UNIX_TIMESTAMP())" : '';
        $where_cond = empty($_POST['req_' . $id]) && empty($_SESSION['doc_' . $AVE_Core->curentdoc->Id]['req_' . $id]) ? unserialize($row_ab->request_where_cond) : unserialize(request_get_condition_sql_string($row_ab->Id));
        $where_cond['from'] = str_replace('%%PREFIX%%', PREFIX, $where_cond['from']);
        @($where_cond['where'] = str_replace('%%PREFIX%%', PREFIX, $where_cond['where']));
        $whFromUser = (isset($params['USER_ID']) && intval($params['USER_ID']) > 0 ? ' AND a.document_author_id=' . intval($params['USER_ID']) : '') . (isset($params['USER_WHERE']) && $params['USER_WHERE'] > '' ? ' AND ' . $params['USER_WHERE'] : '') . (isset($params['PARENT']) && intval($params['PARENT']) > 0 ? ' AND a.document_parent=' . intval($params['PARENT']) : '');
        $other_fields = '';
        $other_tables = '';
        $other_fields .= $request_order_fields;
        $other_tables .= $request_order_tables;
        if (isset($params['VIEWS'])) {
            $other_fields .= "(SELECT sum(v1.`count`) FROM " . PREFIX . "_view_count AS v1 WHERE v1.document_id=a.Id AND v1.day_id>" . strtotime($params['VIEWS'] ? $params['VIEWS'] : '-30 years') . ") AS dayviews,\n\t\t\t\t";
            if ($params['VIEWS_ORDER'] > '') {
                $request_order1 = count(explode(',', $other_fields)) - 1 . ' ' . $params['VIEWS_ORDER'] . ',';
            }
        }
        if (isset($params['VOTE'])) {
            $other_fields .= "(SELECT " . $params['VOTE'] . "(v2.`vote`) FROM " . PREFIX . "_module_vote AS v2 WHERE type_of_doc='document' and v2.document_id=a.Id) AS votes,\n\t\t\t\t";
            if ($params['VOTE_ORDER'] > '') {
                $request_order2 = count(explode(',', $other_fields)) - 1 . ' ' . $params['VOTE_ORDER'];
            }
        }
        if (!empty($AVE_Core->install_modules['comment']->ModuleStatus)) {
            $other_tables .= "\n\t\t\t\t\tLEFT JOIN\n\t\t\t\t\t\t" . PREFIX . "_module_comment_info AS b\n\t\t\t\t\t\t\tON b.document_id = a.Id " . (!empty($params['COMMENT']) ? " and b.comment_published>" . strtotime($params['COMMENT']) : '') . "\n\t\t\t\t\t";
            $other_fields .= "COUNT(b.document_id) AS nums,\n\t\t\t\t";
            if (!empty($params['COMMENT_ORDER'])) {
                $request_order1 = count(explode(',', $other_fields)) - 1 . ' ' . $params['COMMENT_ORDER'] . ',';
            }
        }
        $request_order = addslashes($request_order1 . ($request_order2 > '' ? $request_order1 ? $request_order2 . ',' : $request_order2 : '') . $request_order);
        $num = $AVE_DB->Query(eval2var(" ?>\n\t\t\tSELECT COUNT(*)\n\t\t\tFROM\n\t\t\t" . ($where_cond['from'] ? $where_cond['from'] : '') . "\n\t\t\t" . PREFIX . "_documents AS a\n\t\t\tWHERE\n\t\t\t\ta.Id != '1'\n\t\t\tAND a.Id != '" . PAGE_NOT_FOUND_ID . "'\n\t\t\tAND a.rubric_id = '" . $row_ab->rubric_id . "'\n\t\t\tAND a.document_deleted != '1'\n\t\t\t" . $docstatus . "\n\t\t\t" . $whFromUser . "\n\t\t\t" . $where_cond['where'] . "\n\t\t\t" . ($row_ab->request_lang ? "AND a.document_lang='" . $_SESSION['user_language'] . "'" : "") . "\n\t\t\t" . $doctime . "\n\t\t<?php "), $ttl, 'rub_' . $row_ab->rubric_id)->GetCell();
        if ($row_ab->request_show_pagination == 1) {
            $num_pages = $limit > 0 ? ceil($num / $limit) : 0;
            @($GLOBALS['page_id'][$_REQUEST['id']]['apage'] = @$GLOBALS['page_id'][$_REQUEST['id']]['apage'] > $num_pages ? $GLOBALS['page_id'][$_REQUEST['id']]['apage'] : $num_pages);
            if (isset($_REQUEST['apage']) && is_numeric($_REQUEST['apage']) && $_REQUEST['apage'] > $num_pages) {
                $redirect_link = rewrite_link('index.php?id=' . $AVE_Core->curentdoc->Id . '&amp;doc=' . (empty($AVE_Core->curentdoc->document_alias) ? prepare_url($AVE_Core->curentdoc->document_title) : $AVE_Core->curentdoc->document_alias) . (isset($_REQUEST['artpage']) && is_numeric($_REQUEST['artpage']) ? '&amp;artpage=' . $_REQUEST['artpage'] : '') . (isset($_REQUEST['page']) && is_numeric($_REQUEST['page']) ? '&amp;page=' . $_REQUEST['page'] : ''));
                header('Location:' . $redirect_link);
                exit;
            }
            $start = get_current_page('apage') * $limit - $limit;
        } else {
            $start = 0;
        }
        $q = " ?>\n\t\t\tSELECT\n\t\t\t\t" . $other_fields . "\n\t\t\t\ta.Id,\n\t\t\t\ta.document_parent,\n\t\t\t\ta.document_title,\n\t\t\t\ta.document_alias,\n\t\t\t\ta.document_author_id,\n\t\t\t\ta.document_count_view,\n\t\t\t\ta.document_published,\n\t\t\t\ta.document_meta_keywords\n\t\t\tFROM\n\t\t\t\t" . ($where_cond['from'] ? $where_cond['from'] : '') . "\n\t\t\t\t" . PREFIX . "_documents AS a\n\t\t\t" . ($other_tables > '' ? $other_tables : '') . "\n\t\t\tWHERE\n\t\t\t\ta.Id != '1'\n\t\t\tAND a.Id != '" . PAGE_NOT_FOUND_ID . "'\n\t\t\tAND a.rubric_id = '" . $row_ab->rubric_id . "'\n\t\t\tAND a.document_deleted != '1'\n\t\t\t" . ($row_ab->request_lang ? "AND a.document_lang='" . $_SESSION['user_language'] . "'" : "") . "\n\t\t\t" . $whFromUser . "\n\t\t\t" . $docstatus . "\n\t\t\t" . $where_cond['where'] . "\n\t\t\t" . $doctime . "\n\t\t\tGROUP BY a.Id\n\t\t\tORDER BY " . $request_order . "\n\t\t\t" . ($limit > 0 ? "LIMIT " . $start . "," . $limit : '') . " <?php ";
        $q = eval2var($q);
        $q = $AVE_DB->Query($q, $ttl, 'rub_' . $row_ab->rubric_id);
        if ($q->NumRows() > 0) {
            $main_template = preg_replace('/\\[tag:if_empty](.*?)\\[\\/tag:if_empty]/si', '', $main_template);
            $main_template = str_replace(array('[tag:if_notempty]', '[/tag:if_notempty]'), '', $main_template);
        } else {
            $main_template = preg_replace('/\\[tag:if_notempty](.*?)\\[\\/tag:if_notempty]/si', '', $main_template);
            $main_template = str_replace(array('[tag:if_empty]', '[/tag:if_empty]'), '', $main_template);
        }
        $page_nav = '';
        if ($row_ab->request_show_pagination == 1 && $num_pages > 1) {
            $page_nav = ' <a class="pnav" href="index.php?id=' . $AVE_Core->curentdoc->Id . '&amp;doc=' . (empty($AVE_Core->curentdoc->document_alias) ? prepare_url($AVE_Core->curentdoc->document_title) : $AVE_Core->curentdoc->document_alias) . (isset($_REQUEST['artpage']) && is_numeric($_REQUEST['artpage']) ? '&amp;artpage=' . $_REQUEST['artpage'] : '') . '&amp;apage={s}' . (isset($_REQUEST['page']) && is_numeric($_REQUEST['page']) ? '&amp;page=' . $_REQUEST['page'] : '') . '">{t}</a> ';
            $page_nav = get_pagination($num_pages, 'apage', $page_nav, get_settings('navi_box'));
            //$page_nav = rewrite_link($page_nav);
            // Костыль
            $page_nav = str_ireplace('"//"', '"/"', str_ireplace('///', '/', rewrite_link($page_nav)));
        }
        $rows = array();
        $request_documents = array();
        while ($row = $q->FetchRow()) {
            array_push($request_documents, $row->Id);
            array_push($rows, $row);
        }
        $items = '';
        $x = 0;
        $items_count = count($rows);
        foreach ($rows as $row) {
            $x++;
            $item = showrequestelement($row, $item_template, $x, $x == $items_count ? true : false);
            $items .= $item;
        }
        //		$items = preg_replace_callback('/\[tag:teaser:(\d+)\]/', "showteaser", $items);
        $main_template = preg_replace_callback('/\\[tag:sysblock:([0-9-]+)\\]/', 'parse_sysblock', $main_template);
        $main_template = str_replace('[tag:pages]', $page_nav, $main_template);
        $main_template = preg_replace('/\\[tag:date:([a-zA-Z0-9-]+)\\]/e', "RusDate(date('\$1', " . $AVE_Core->curentdoc->document_published . "))", $main_template);
        $main_template = str_replace('[tag:docid]', $AVE_Core->curentdoc->Id, $main_template);
        $main_template = str_replace('[tag:docdate]', pretty_date(strftime(DATE_FORMAT, $AVE_Core->curentdoc->document_published)), $main_template);
        $main_template = str_replace('[tag:doctime]', pretty_date(strftime(TIME_FORMAT, $AVE_Core->curentdoc->document_published)), $main_template);
        $main_template = str_replace('[tag:docauthor]', get_username_by_id($AVE_Core->curentdoc->document_author_id), $main_template);
        $main_template = str_replace('[tag:doctotal]', $num, $main_template);
        $main_template = str_replace('[tag:pagetitle]', $AVE_Core->curentdoc->document_title, $main_template);
        $main_template = preg_replace('/\\[tag:dropdown:([,0-9]+)\\]/e', "request_get_dropdown(\"\$1\", " . $row_ab->rubric_id . ", " . $row_ab->Id . ");", $main_template);
        $return = str_replace('[tag:content]', $items, $main_template);
        // парсим тизер документа
        //$return = preg_replace_callback('/\[tag:teaser:(\d+)\]/e', "showteaser", $return);
        $return = str_replace('[tag:path]', ABS_PATH, $return);
        $return = str_replace('[tag:mediapath]', ABS_PATH . 'templates/' . THEME_FOLDER . '/', $return);
        $return = $AVE_Core->coreModuleTagParse($return);
    }
    $gen_time = microtime() - $gen_time;
    $GLOBALS['block_generate'][] = array('REQUEST_' . $id => $gen_time);
    return $return;
}
function DisplayMainDocuments()
{
    global $AVE_DB, $AVE_Template;
    $doc_start = array();
    $sql = $AVE_DB->Query("\n\t\tSELECT \n\t\t\tdoc.*,\n\t\t\trub.rubric_admin_teaser_template\n\t\tFROM " . PREFIX . "_documents doc\n\t\tLEFT JOIN " . PREFIX . "_rubrics AS rub ON rub.Id = doc.rubric_id\n\t\tORDER BY doc.document_published DESC LIMIT 0,10");
    while ($row = $sql->fetchrow()) {
        $row->rubric_title = showrubricName($row->rubric_id);
        $row->document_author = get_username_by_id($row->document_author_id);
        // Получаем имя пользователя (Автора)
        $row->cantEdit = 0;
        $row->canDelete = 0;
        $row->canEndDel = 0;
        $row->canOpenClose = 0;
        $row->rubric_admin_teaser_template = @eval2var('?>' . ($row->rubric_admin_teaser_template > '' ? @showrequestelement($row, $row->rubric_admin_teaser_template) : '') . '<?');
        // разрешаем редактирование и удаление
        // если автор имеет право изменять свои документы в рубрике
        // или пользователю разрешено изменять все документы в рубрике
        if ($row->document_author_id == @$_SESSION['user_id'] && isset($_SESSION[$row->rubric_id . '_editown']) && @$_SESSION[$row->rubric_id . '_editown'] == 1 || isset($_SESSION[$row->rubric_id . '_editall']) && $_SESSION[$row->rubric_id . '_editall'] == 1) {
            $row->cantEdit = 1;
            $row->canDelete = 1;
        }
        // запрещаем редактирование главной страницы и страницу ошибки 404 если требуется одобрение Администратора
        if (($row->Id == 1 || $row->Id == PAGE_NOT_FOUND_ID) && isset($_SESSION[$row->rubric_id . '_newnow']) && @$_SESSION[$row->rubric_id . '_newnow'] != 1) {
            $row->cantEdit = 0;
        }
        // разрешаем автору блокировать и разблокировать свои документы если не требуется одобрение Администратора
        if ($row->document_author_id == @$_SESSION['user_id'] && isset($_SESSION[$row->rubric_id . '_newnow']) && @$_SESSION[$row->rubric_id . '_newnow'] == 1) {
            $row->canOpenClose = 1;
        }
        // разрешаем всё, если пользователь принадлежит группе Администраторов или имеет все права на рубрику
        if (UGROUP == 1 || @$_SESSION[$row->rubric_id . '_alles'] == 1) {
            $row->cantEdit = 1;
            $row->canDelete = 1;
            $row->canEndDel = 1;
            $row->canOpenClose = 1;
        }
        // Запрещаем удаление Главной страницы и страницы с 404 ошибкой
        if ($row->Id == 1 || $row->Id == PAGE_NOT_FOUND_ID) {
            $row->canDelete = 0;
            $row->canEndDel = 0;
        }
        array_push($doc_start, $row);
    }
    $AVE_Template->assign('doc_start', $doc_start);
}
Beispiel #5
0
 /**
  * Метод, предназначенный для получения списка документов в Панели управления
  *
  */
 function documentListGet()
 {
     global $AVE_DB, $AVE_Rubric, $AVE_Template;
     $ex_titel = '';
     $nav_titel = '';
     $ex_zeit = '';
     $nav_zeit = '';
     $request = '';
     $ex_rub = '';
     $nav_rub = '';
     $ex_docstatus = '';
     $navi_docstatus = '';
     // Если в запросе пришел параметр на поиск документа по названию
     if (!empty($_REQUEST['QueryTitel'])) {
         $request = $_REQUEST['QueryTitel'];
         $kette = explode(' ', $request);
         // Получаем список слов, разделяя по пробелу (если их несколько)
         // Циклически обрабатываем слова, формируя условия, которые будут применены в запросе к БД
         foreach ($kette as $suche) {
             $und = @explode(' +', $suche);
             foreach ($und as $und_wort) {
                 if (strpos($und_wort, '+') !== false) {
                     $ex_titel .= " AND ((UPPER(doc.document_title) LIKE '%" . mb_strtoupper(substr($und_wort, 1)) . "%')OR(UPPER(doc.document_alias) LIKE '%" . mb_strtoupper(substr($und_wort, 1)) . "%'))";
                 }
             }
             $und_nicht = @explode(' -', $suche);
             foreach ($und_nicht as $und_nicht_wort) {
                 if (strpos($und_nicht_wort, '-') !== false) {
                     $ex_titel .= " AND (UPPER(doc.document_title) NOT LIKE '%" . mb_strtoupper($und_nicht_wort, 1) . "%')";
                 }
             }
             $start = explode(' +', $request);
             if (strpos($start[0], ' -') !== false) {
                 $start = explode(' -', $request);
             }
             $start = $start[0];
         }
         $ex_titel = "AND ((UPPER(doc.document_title) LIKE '%" . mb_strtoupper($start) . "%')OR(UPPER(doc.document_alias) LIKE '%" . mb_strtoupper($start) . "%'))" . $ex_titel;
         $nav_titel = '&QueryTitel=' . urlencode($request);
     }
     // Если в запросе пришел id определенной рубрики
     if (isset($_REQUEST['rubric_id']) && $_REQUEST['rubric_id'] != 'all') {
         // Формируем условия, которые будут применены в запросе к БД
         $ex_rub = " AND doc.rubric_id = '" . $_REQUEST['rubric_id'] . "'";
         // формируем условия, которые будут применены в ссылках
         $nav_rub = '&rubric_id=' . (int) $_REQUEST['rubric_id'];
     }
     // Поиск с учётом условий настроек рубрик
     if (!isset($_REQUEST['rubric_id']) && empty($_REQUEST['QueryTitel'])) {
         // Формируем условия, которые будут применены в запросе к БД
         $ex_rub = " AND rub.rubric_docs_active = '1'";
         // формируем условия для бд
         $ex_db = "LEFT JOIN " . PREFIX . "_rubrics as rub on rub.Id = rubric_id";
     }
     // Поиск с выводом всех результатов из всех рубрик
     if (@$_REQUEST['rubric_id'] == 'all') {
         $nav_rub = '&rubric_id=all';
     }
     // Если в запросе пришел параметр на фильтрацию документов по определенному временному интервалу
     if (@$_REQUEST['document_published'] && @$_REQUEST['document_expire']) {
         // Формируем условия, которые будут применены в запросе к БД
         $ex_zeit = 'AND ((doc.document_published BETWEEN ' . $this->_documentListStart() . ' AND ' . $this->_documentListEnd() . ') OR doc.document_published = 0)';
         // формируем условия, которые будут применены в ссылках
         $nav_zeit = '&TimeSelect=1' . '&document_published=' . $_REQUEST['document_published'] . '&document_expire=' . $_REQUEST['document_expire'];
     }
     // Если в запросе пришел параметр на фильтрацию документов по статусу
     if (!empty($_REQUEST['status'])) {
         // Определяем, какой статус запрашивается и формируем условия, которые будут применены в запросе к БД,
         // а также в ссылках, для дальнейшей навигации
         switch ($_REQUEST['status']) {
             // С любым статусом
             case '':
             case 'All':
                 break;
                 // Только опубликованные
             // Только опубликованные
             case 'Opened':
                 $ex_docstatus = "AND doc.document_status = '1'";
                 $navi_docstatus = '&status=Opened';
                 break;
                 // Только неопубликованные
             // Только неопубликованные
             case 'Closed':
                 $ex_docstatus = "AND doc.document_status = '0'";
                 $navi_docstatus = '&status=Closed';
                 break;
                 // Помеченные на удаление
             // Помеченные на удаление
             case 'Deleted':
                 $ex_docstatus = "AND doc.document_deleted = '1'";
                 $navi_docstatus = '&status=Deleted';
                 break;
         }
     }
     // Определяем группу пользоваеля и id документа, если он присутствует в запросе
     $ex_Geloescht = UGROUP != 1 ? "AND doc.document_deleted != '1'" : '';
     $w_id = !empty($_REQUEST['doc_id']) ? " AND doc.Id = '" . $_REQUEST['doc_id'] . "'" : '';
     // Выполняем запрос к БД на получение количества документов соответствующих вышеопределенным условиям
     $num = $AVE_DB->Query("\n\t\t\tSELECT COUNT(doc.Id)\n\t\t\tFROM " . PREFIX . "_documents as doc\n\t\t\t" . @$ex_db . "\n\t\t\tWHERE 1\n\t\t\t" . $ex_Geloescht . "\n\t\t\t" . $ex_zeit . "\n\t\t\t" . $ex_titel . "\n\t\t\t" . $ex_rub . "\n\t\t\t" . $ex_docstatus . "\n\t\t\t" . $w_id . "\n\t\t")->GetCell();
     // Определяем лимит документов, который будет показан на 1 странице
     $limit = isset($_REQUEST['Datalimit']) && is_numeric($_REQUEST['Datalimit']) && $_REQUEST['Datalimit'] > 0 ? $_REQUEST['Datalimit'] : ($limit = $this->_limit);
     $nav_limit = '&Datalimit=' . $limit;
     // Определяем количество страниц, которые будут сформированы на основании количества полученных документов
     $seiten = ceil($num / $limit);
     $start = get_current_page() * $limit - $limit;
     $db_sort = 'ORDER BY doc.Id DESC';
     $navi_sort = '&sort=id_desc';
     // Если в запросе используется параметр сортировки
     if (!empty($_REQUEST['sort'])) {
         // Определяем, по какому параметру происходит сортировка
         switch ($_REQUEST['sort']) {
             // По id документа, по возрастанию
             case 'id':
                 $db_sort = 'ORDER BY doc.Id ASC';
                 $navi_sort = '&sort=id';
                 break;
                 // По id документа, по убыванию
             // По id документа, по убыванию
             case 'id_desc':
                 $db_sort = 'ORDER BY doc.Id DESC';
                 $navi_sort = '&sort=id_desc';
                 break;
                 // По названию документа, в алфавитном порядке
             // По названию документа, в алфавитном порядке
             case 'title':
                 $db_sort = 'ORDER BY doc.document_title ASC';
                 $navi_sort = '&sort=title';
                 break;
                 // По названию документа, в обратном алфавитном порядке
             // По названию документа, в обратном алфавитном порядке
             case 'title_desc':
                 $db_sort = 'ORDER BY doc.document_title DESC';
                 $navi_sort = '&sort=title_desc';
                 break;
                 // По url-адресу, в алфавитном порядке
             // По url-адресу, в алфавитном порядке
             case 'alias':
                 $db_sort = 'ORDER BY doc.document_alias ASC';
                 $navi_sort = '&sort=alias';
                 break;
                 // По url-адресу, в обратном алфавитном порядке
             // По url-адресу, в обратном алфавитном порядке
             case 'alias_desc':
                 $db_sort = 'ORDER BY doc.document_alias DESC';
                 $navi_sort = '&sort=alias_desc';
                 break;
                 // По id рубрики, по возрастанию
             // По id рубрики, по возрастанию
             case 'rubric':
                 $db_sort = 'ORDER BY doc.rubric_id ASC';
                 $navi_sort = '&sort=rubric';
                 break;
                 // По id рубрики, по убыванию
             // По id рубрики, по убыванию
             case 'rubric_desc':
                 $db_sort = 'ORDER BY doc.rubric_id DESC';
                 $navi_sort = '&sort=rubric_desc';
                 break;
                 // По дате публикации, по возрастанию
             // По дате публикации, по возрастанию
             case 'published':
                 $db_sort = 'ORDER BY doc.document_published ASC';
                 $navi_sort = '&sort=published';
                 break;
                 // По дате публикации, по убыванию
             // По дате публикации, по убыванию
             case 'published_desc':
                 $db_sort = 'ORDER BY doc.document_published DESC';
                 $navi_sort = '&sort=published_desc';
                 break;
                 // По количеству просмотров, по возрастанию
             // По количеству просмотров, по возрастанию
             case 'view':
                 $db_sort = 'ORDER BY doc.document_count_view ASC';
                 $navi_sort = '&sort=view';
                 break;
                 // По количеству просмотров, по убыванию
             // По количеству просмотров, по убыванию
             case 'view_desc':
                 $db_sort = 'ORDER BY doc.document_count_view DESC';
                 $navi_sort = '&sort=view_desc';
                 break;
                 // По количеству печати документа, по возрастанию
             // По количеству печати документа, по возрастанию
             case 'print':
                 $db_sort = 'ORDER BY doc.document_count_print ASC';
                 $navi_sort = '&sort=print';
                 break;
                 // По количеству печати документа, по убыванию
             // По количеству печати документа, по убыванию
             case 'print_desc':
                 $db_sort = 'ORDER BY doc.document_count_print DESC';
                 $navi_sort = '&sort=print_desc';
                 break;
                 // По автору, по алфавитному возрастанию
             // По автору, по алфавитному возрастанию
             case 'author':
                 $db_sort = 'ORDER BY doc.document_author_id ASC';
                 $navi_sort = '&sort=author';
                 break;
                 // По автору, по алфавитному убыванию
             // По автору, по алфавитному убыванию
             case 'author_desc':
                 $db_sort = 'ORDER BY doc.document_author_id DESC';
                 $navi_sort = '&sort=author_desc';
                 break;
                 // По дате последнего редактирования, по возрастанию
             // По дате последнего редактирования, по возрастанию
             case 'changed':
                 $db_sort = 'ORDER BY doc.document_changed ASC';
                 $navi_sort = '&sort=changed';
                 break;
                 // По дате последнего редактирования, по убыванию
             // По дате последнего редактирования, по убыванию
             case 'changed_desc':
                 $db_sort = 'ORDER BY doc.document_changed DESC';
                 $navi_sort = '&sort=changed_desc';
                 break;
                 // По умолчанию, по дате последнего редактирования по убыванию.
                 // Последний отредактированный документ, будет первым в списке.
             // По умолчанию, по дате последнего редактирования по убыванию.
             // Последний отредактированный документ, будет первым в списке.
             default:
                 $db_sort = 'ORDER BY doc.document_changed DESC';
                 $navi_sort = '&sort=changed_desc';
                 break;
         }
     }
     $docs = array();
     // Выполняем запрос к БД на получение уже не количества документов, отвечающих условиям, а уже на
     // получение всех данных, с учетом всех условий, а также типа сортировки и лимита для вывода на
     // одну страницу.
     $sql = "\n\t\t\tSELECT \n\t\t\t\tdoc.*,\n\t\t\t\trub.rubric_admin_teaser_template\n\t\t\tFROM " . PREFIX . "_documents as doc\n\t\t\tLEFT JOIN " . PREFIX . "_rubrics AS rub ON rub.Id = doc.rubric_id\n\n\t\t\tWHERE 1\n\t\t\t" . $ex_rub . "\n\t\t\t" . $ex_Geloescht . "\n\t\t\t" . $ex_zeit . "\n\t\t\t" . $ex_titel . "\n\t\t\t" . $ex_docstatus . "\n\t\t\t" . $w_id . "\n\t\t\t" . $db_sort . "\n\t\t\tLIMIT " . $start . "," . $limit . "\n\t\t";
     $sql = $AVE_DB->Query($sql);
     // Циклически обрабатываем полученные данные с целью приведения некоторых из них к удобочитаемому виду
     while ($row = $sql->FetchRow()) {
         // Определяем количество комментариев, оставленных для данного документа
         $row->ist_remark = $AVE_DB->Query("\n\t\t\t\tSELECT COUNT(*)\n\t\t\t\tFROM " . PREFIX . "_document_remarks\n\t\t\t\tWHERE document_id = '" . $row->Id . "'\n\t\t\t")->GetCell();
         $this->documentPermissionFetch($row->rubric_id);
         // Получаем название рубрики по ее Id
         $row->RubName = $AVE_Rubric->rubricNameByIdGet($row->rubric_id)->rubric_title;
         $row->document_author = get_username_by_id($row->document_author_id);
         // Получаем имя пользователя (Автора)
         $row->cantEdit = 0;
         $row->canDelete = 0;
         $row->canEndDel = 0;
         $row->canOpenClose = 0;
         $row->rubric_admin_teaser_template = @eval2var('?>' . ($row->rubric_admin_teaser_template > '' ? @showrequestelement($row, $row->rubric_admin_teaser_template) : '') . '<?');
         // разрешаем редактирование и удаление
         // если автор имеет право изменять свои документы в рубрике
         // или пользователю разрешено изменять все документы в рубрике
         if ($row->document_author_id == @$_SESSION['user_id'] && isset($_SESSION[$row->rubric_id . '_editown']) && @$_SESSION[$row->rubric_id . '_editown'] == 1 || isset($_SESSION[$row->rubric_id . '_editall']) && $_SESSION[$row->rubric_id . '_editall'] == 1) {
             $row->cantEdit = 1;
             $row->canDelete = 1;
         }
         // запрещаем редактирование главной страницы и страницу ошибки 404 если требуется одобрение Администратора
         if (($row->Id == 1 || $row->Id == PAGE_NOT_FOUND_ID) && isset($_SESSION[$row->rubric_id . '_newnow']) && @$_SESSION[$row->rubric_id . '_newnow'] != 1) {
             $row->cantEdit = 0;
         }
         // разрешаем автору блокировать и разблокировать свои документы если не требуется одобрение Администратора
         if ($row->document_author_id == @$_SESSION['user_id'] && isset($_SESSION[$row->rubric_id . '_newnow']) && @$_SESSION[$row->rubric_id . '_newnow'] == 1) {
             $row->canOpenClose = 1;
         }
         // разрешаем всё, если пользователь принадлежит группе Администраторов или имеет все права на рубрику
         if (UGROUP == 1 || @$_SESSION[$row->rubric_id . '_alles'] == 1) {
             $row->cantEdit = 1;
             $row->canDelete = 1;
             $row->canEndDel = 1;
             $row->canOpenClose = 1;
         }
         // Запрещаем удаление Главной страницы и страницы с 404 ошибкой
         if ($row->Id == 1 || $row->Id == PAGE_NOT_FOUND_ID) {
             $row->canDelete = 0;
             $row->canEndDel = 0;
         }
         array_push($docs, $row);
     }
     // Передаем полученные данные в шаблон для вывода
     $AVE_Template->assign('docs', $docs);
     $link = "index.php?do=docs";
     $link .= isset($_REQUEST['action']) && $_REQUEST['action'] == 'showsimple' ? '&action=showsimple' : '';
     $link .= !empty($_REQUEST['target']) ? '&target=' . urlencode($_REQUEST['target']) : '';
     $link .= !empty($_REQUEST['doc']) ? '&doc=' . urlencode($_REQUEST['doc']) : '';
     $link .= !empty($_REQUEST['document_alias']) ? '&document_alias=' . urlencode($_REQUEST['document_alias']) : '';
     $link .= !empty($_REQUEST['navi_item_target']) ? '&navi_item_target=' . urlencode($_REQUEST['navi_item_target']) : '';
     $link .= $navi_docstatus;
     $link .= $nav_titel;
     $link .= $nav_rub;
     $link .= $nav_zeit;
     $link .= $nav_limit;
     $link .= isset($_REQUEST['selurl']) && $_REQUEST['selurl'] == 1 ? '&selurl=1' : '';
     $link .= isset($_REQUEST['idonly']) && $_REQUEST['idonly'] == 1 ? '&idonly=1' : '';
     $link .= isset($_REQUEST['pop']) && $_REQUEST['pop'] == 1 ? '&pop=1' : '';
     $AVE_Template->assign('link', $link);
     // Если количество отобранных документов превышает лимит на одной странице - формируем постраничную навигацию
     if ($num > $limit) {
         $page_nav = get_pagination($seiten, 'page', ' <li><a href="' . $link . $navi_sort . '&page={s}&cp=' . SESSION . '">{t}</a></li> ');
         $AVE_Template->assign('page_nav', $page_nav);
     }
     $AVE_Template->assign('DEF_DOC_START_YEAR', mktime(0, 0, 0, date("m"), date("d"), date("Y") - 10));
     $AVE_Template->assign('DEF_DOC_END_YEAR', mktime(0, 0, 0, date("m"), date("d"), date("Y") + 10));
 }