/** * Обработка тега запроса. * Возвращает список документов удовлетворяющих параметрам запроса * оформленный с использованием шаблона * * @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 . '&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']) ? '&artpage=' . $_REQUEST['artpage'] : '') . (isset($_REQUEST['page']) && is_numeric($_REQUEST['page']) ? '&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 . '&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']) ? '&artpage=' . $_REQUEST['artpage'] : '') . '&apage={s}' . (isset($_REQUEST['page']) && is_numeric($_REQUEST['page']) ? '&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; }
/** * Обработка тега запроса. * Возвращает список документов удовлетворяющих параметрам запроса * оформленный с использованием шаблона * * @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 . '&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']) ? '&artpage=' . $_REQUEST['artpage'] : '') . (isset($_REQUEST['page']) && is_numeric($_REQUEST['page']) ? '&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 . '&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']) ? '&artpage=' . $_REQUEST['artpage'] : '') . '&apage={s}' . (isset($_REQUEST['page']) && is_numeric($_REQUEST['page']) ? '&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 . '&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 $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; } }