예제 #1
0
/**
 * Обработка тега запроса.
 * Возвращает список документов удовлетворяющих параметрам запроса
 * оформленный с использованием шаблона
 *
 * @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;
}
예제 #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;
}
예제 #3
0
 /**
  * Метод, предназначенный для редактирования условий Запроса
  *
  * @param int $request_id идентификатор запроса
  */
 function requestConditionEdit($request_id)
 {
     global $AVE_DB, $AVE_Template;
     // Определяем действие пользователя
     switch ($_REQUEST['sub']) {
         // Если действие не определено
         case '':
             $felder = array();
             // Выполняем запрос к БД и получаем список полей у той рубрики, к которой относится данный запрос
             $sql = $AVE_DB->Query("\r\n\t\t\t\t\tSELECT *\r\n\t\t\t\t\tFROM " . PREFIX . "_rubric_fields\r\n\t\t\t\t\tWHERE rubric_id = '" . $_REQUEST['rubric_id'] . "'\r\n\t\t\t\t");
             // Обрабатываем полученные данные и формируем массив
             while ($row = $sql->FetchRow()) {
                 array_push($felder, $row);
             }
             $afkonditionen = array();
             // Выполняем запрос к БД и получаем условия запроса
             $sql = $AVE_DB->Query("\r\n\t\t\t\t\tSELECT *\r\n\t\t\t\t\tFROM " . PREFIX . "_request_conditions\r\n\t\t\t\t\tWHERE request_id = '" . $request_id . "'\r\n\t\t\t\t");
             // Обрабатываем полученные данные и формируем массив
             while ($row = $sql->FetchRow()) {
                 array_push($afkonditionen, $row);
             }
             // Выполняем запрос к БД и получаем название запроса
             $titel = $AVE_DB->Query("\r\n\t\t\t\t\tSELECT request_title\r\n\t\t\t\t\tFROM " . PREFIX . "_request\r\n\t\t\t\t\tWHERE Id = '" . $request_id . "'\r\n\t\t\t\t\tLIMIT 1\r\n\t\t\t\t")->GetCell();
             // Передаем данные в шаблон и отображаем страницу с редактированием условий
             $AVE_Template->assign('request_title', $titel);
             $AVE_Template->assign('fields', $felder);
             $AVE_Template->assign('afkonditionen', $afkonditionen);
             $AVE_Template->assign('content', $AVE_Template->fetch('request/conditions.tpl'));
             break;
             // Если пользователь нажал кнопку Сохранить изменения
         // Если пользователь нажал кнопку Сохранить изменения
         case 'save':
             // Если пользователь добавил новое условие
             if (!empty($_POST['Wert_Neu'])) {
                 // Выполняем запрос к БД на добавление нового условия
                 $AVE_DB->Query("\r\n\t\t\t\t\t\tINSERT " . PREFIX . "_request_conditions\r\n\t\t\t\t\t\tSET\r\n\t\t\t\t\t\t\trequest_id                  = '" . $request_id . "',\r\n\t\t\t\t\t\t\tcondition_compare   = '" . $_POST['Operator_Neu'] . "',\r\n\t\t\t\t\t\t\tcondition_field_id  = '" . $_POST['Feld_Neu'] . "',\r\n\t\t\t\t\t\t\tcondition_value     = '" . $_POST['Wert_Neu'] . "',\r\n\t\t\t\t\t\t\tcondition_join      = '" . $_POST['Oper_Neu'] . "'\r\n\t\t\t\t\t");
                 // Сохраняем системное сообщение в журнал
                 reportLog($_SESSION['user_name'] . ' - добавил условие запроса (' . $request_id . ')', 2, 2);
             }
             // Если существует хотя бы одно условие, тогда
             if (isset($_POST['condition_field_id']) && is_array($_POST['condition_field_id'])) {
                 $condition_edited = false;
                 // Обрабатываем данные полей
                 foreach ($_POST['condition_field_id'] as $condition_id => $val) {
                     if (!empty($_POST['condition_value'][$condition_id])) {
                         // Выполняем запрос к БД на обновление информации об условиях
                         $AVE_DB->Query("\r\n\t\t\t\t\t\t\t\tUPDATE " . PREFIX . "_request_conditions\r\n\t\t\t\t\t\t\t\tSET\r\n\t\t\t\t\t\t\t\t\trequest_id                  = '" . $request_id . "',\r\n\t\t\t\t\t\t\t\t\tcondition_compare   = '" . $_POST['condition_compare'][$condition_id] . "',\r\n\t\t\t\t\t\t\t\t\tcondition_field_id  = '" . $val . "',\r\n\t\t\t\t\t\t\t\t\tcondition_value     = '" . $_POST['condition_value'][$condition_id] . "',\r\n\t\t\t\t\t\t\t\t\tcondition_join      = '" . $_POST['Oper_Neu'] . "'\r\n\t\t\t\t\t\t\t\tWHERE\r\n\t\t\t\t\t\t\t\t\tId = '" . $condition_id . "'\r\n\t\t\t\t\t\t\t");
                         $condition_edited = true;
                     }
                 }
                 // Если изменения были, сохраняем системное сообщение в журнал
                 if ($condition_edited) {
                     reportLog($_SESSION['user_name'] . ' - изменил условия запроса (' . $request_id . ')', 2, 2);
                 }
             }
             // Если некоторые из условий были помечены на удаление
             if (isset($_POST['del']) && is_array($_POST['del'])) {
                 // Обрабатываем все поля помеченные на удаление
                 foreach ($_POST['del'] as $condition_id => $val) {
                     // Выполняем запрос к БД на удаление условий
                     $AVE_DB->Query("\r\n\t\t\t\t\t\t\tDELETE\r\n\t\t\t\t\t\t\tFROM " . PREFIX . "_request_conditions\r\n\t\t\t\t\t\t\tWHERE Id = '" . $condition_id . "'\r\n\t\t\t\t\t\t");
                 }
                 // Сохраняем системное сообщение в журнал
                 reportLog($_SESSION['user_name'] . ' - удалил условия запроса (' . $request_id . ')', 2, 2);
             }
             // Нет смысла каждый раз формировать SQL-запрос с условиями Запроса
             // поэтому формируем SQL-запрос только при изменении условий
             require BASE_DIR . '/functions/func.parserequest.php';
             request_get_condition_sql_string($request_id);
             // Выполняем обновление страницы
             header('Location:index.php?do=request&action=konditionen&rubric_id=' . $_REQUEST['rubric_id'] . '&Id=' . $request_id . '&pop=1&cp=' . SESSION);
             exit;
     }
 }