function get_field_docfromrubcheck($field_value, $type, $field_id = '', $rubric_field_template = '', $tpl_field_empty = 0, &$maxlength = '', $document_fields = 0, $rubric_id = 0, $dropdown = '') { global $AVE_DB, $AVE_Template, $AVE_Core, $AVE_Document; $res = 0; switch ($type) { case 'edit': $sql = "SELECT Id,document_title from " . PREFIX . "_documents WHERE rubric_id='" . $dropdown . "' order by document_title"; $field_value = unserialize($field_value); $res = $AVE_DB->Query($sql); $field = ""; while ($row = $res->FetchRow()) { $field .= "<input name=\"feld[" . $field_id . "][]\" value=\"" . $row->Id . "\" type=\"checkbox\" " . (in_array($row->Id, $field_value) == false ? "" : "checked=checked") . "><label>" . htmlspecialchars($row->document_title, ENT_QUOTES) . "</label></br>"; } $field .= ""; $res = $field; break; case 'doc': $field_value1 = unserialize($field_value); if (is_array($field_value1)) { $res = $AVE_DB->Query("SELECT Id,document_title FROM " . PREFIX . "_documents WHERE Id IN (" . implode(', ', $field_value1) . ")"); $result = array(); while ($mfa = $res->FetchArray()) { $result[$mfa['Id']] = $mfa['document_title']; } $res = ''; if ($tpl_field_empty) { $res .= '<ul>'; } foreach ($field_value1 as $k => $v) { $field_value = htmlspecialchars($v, ENT_QUOTES); $field_value = pretty_chars($field_value); $field_value = clean_php($field_value); if (!$tpl_field_empty) { $field_param = explode('|', $field_value); $field_value = preg_replace('/\\[tag:parametr:(\\d+)\\]/ie', '@$field_param[\\1]', $rubric_field_template); } else { $field_value = "<li>" . $result[$field_value] . "</li>"; } $res .= $field_value; } if ($tpl_field_empty) { $res .= '</ul>'; } } break; case 'req': $res = get_field_default($field_value, $type, $field_id, $rubric_field_template, $tpl_field_empty, $maxlength, $document_fields, $rubric_id); break; case 'name': $res = 'FIELD_DOCFROMRUB_CHECK'; break; } return $res ? $res : $field_value; }
exit; } } break; case 'edit': if (check_permission_acp('template_edit')) { $_REQUEST['sub'] = !isset($_REQUEST['sub']) ? '' : $_REQUEST['sub']; switch ($_REQUEST['sub']) { case '': $row = $AVE_DB->Query("\r\n\t\t\t\t\t\tSELECT *\r\n\t\t\t\t\t\tFROM " . PREFIX . "_templates\r\n\t\t\t\t\t\tWHERE Id = '" . $_REQUEST['Id'] . "'\r\n\t\t\t\t\t")->FetchRow(); $check_code = strtolower($row->template_text); if (is_php_code($check_code) && !check_permission('template_php')) { $AVE_Template->assign('php_forbidden', 1); $AVE_Template->assign('read_only', 'readonly'); } $row->template_text = pretty_chars($row->template_text); $row->template_text = stripslashes($row->template_text); $AVE_Template->assign('row', $row); break; case 'save': $ok = true; $check_code = strtolower($_REQUEST['template_text']); if (is_php_code($check_code) && !check_permission('template_php')) { reportLog($_SESSION['user_name'] . ' - пытался использовать PHP кода в шаблоне (' . stripslashes($_REQUEST['template_title']) . ')', 2, 2); $AVE_Template->assign('php_forbidden', 1); $ok = false; } if (!$ok) { $row->template_text = stripslashes($_REQUEST['template_text']); $AVE_Template->assign('row', $row); } else {
function printQuickfinder(&$nav_items, &$quickfinder = '', $parent = '0') { foreach ($nav_items[$parent] as $row) { if (strpos($row['navi_item_link'], 'module=') === false && start_with('index.php?', $row['navi_item_link'])) { $row['navi_item_link'] .= '&doc=' . (empty($row['document_alias']) ? prepare_url($row['title']) : $row['document_alias']); } if (start_with('www.', $row['navi_item_link'])) { $row['navi_item_link'] = str_replace('www.', 'http://www.', $row['navi_item_link']); } $row['navi_item_link'] = rewrite_link($row['navi_item_link']); if (!start_with('javascript:', $row['navi_item_link'])) { if ($row['navi_item_target'] == '_blank') { $row['navi_item_link'] = "javascript:window.open('" . $row['navi_item_link'] . "', '', '')"; } else { $row['navi_item_link'] = "window.location.href = '" . $row['navi_item_link'] . "'"; } } $quickfinder .= '<option class="level_' . $row['navi_item_level'] . '" value="' . $row['navi_item_link'] . '"' . ($row['active'] == 1 ? ' selected="selected"' : '') . '>' . pretty_chars($row['title']) . '</option>'; if (isset($nav_items[$row['Id']])) { printQuickfinder($nav_items, $quickfinder, $row['Id']); } } }
/** * Метод, предназначенный для записи в БД нового комментария. * * @param string $tpl_dir - путь к шаблонам модуля * * @todo Вывод сообщения о результате добавления комментария, а также * рассмотреть вопрос о добавлении еще одного параметра настройки модуля, который будет определять * необходимость отправки уведомления на e-mail о новом комментарии. Возможно не всем хочется получать * уведомления. * */ function commentPostNew($tpl_dir) { global $AVE_DB, $AVE_Template; // Если запрос пришел не ajax запросом, тогда формируем ссылку для последующего редиректа if (!($ajax = isset($_REQUEST['ajax']) && $_REQUEST['ajax'] == 1)) { $link = rewrite_link(base64_decode($_REQUEST['page'])); } // Если в настройках модуля включено использование защитного кода, тогда if ($this->_commentSettingsGet('comment_use_antispam') == 1) { // Если введенный пользователем защитный код неверен, тогда выполняем обновление кода if (!(isset($_SESSION['captcha_keystring']) && isset($_POST['securecode']) && $_SESSION['captcha_keystring'] == $_POST['securecode'])) { unset($_SESSION['captcha_keystring']); if ($ajax) { echo 'wrong_securecode'; } else { $GLOBALS['tmpl']->assign("wrongSecureCode", 1); header('Location:' . $link . '#end'); } exit; } unset($_SESSION['captcha_keystring']); } // Определяем флаг модерации комментариев $comment_status = $this->_commentSettingsGet('comment_need_approve') == 1 ? 0 : 1; // Если комментарии разрешены, тогда получаем все данные, который пользователь указал в форме if ($this->_commentSettingsGet('comment_active') == 1 && !empty($_POST['comment_text']) && !empty($_POST['comment_author_name']) && in_array(UGROUP, explode(',', $this->_commentSettingsGet('comment_user_groups')))) { $new_comment['parent_id'] = (int) $_POST['parent_id']; $new_comment['document_id'] = (int) $_POST['doc_id']; $new_comment['comment_author_name'] = $_POST['comment_author_name']; $new_comment['comment_author_id'] = empty($_SESSION['user_id']) ? '' : $_SESSION['user_id']; $new_comment['comment_author_email'] = $_POST['comment_author_email']; $new_comment['comment_author_city'] = $_POST['comment_author_city']; $new_comment['comment_author_website'] = $_POST['comment_author_website']; $new_comment['comment_author_ip'] = $_SERVER['REMOTE_ADDR']; $new_comment['comment_published'] = time(); $new_comment['comment_text'] = $_POST['comment_text']; $new_comment['comment_status'] = $comment_status; // Определяем максимальную длину символов для комментария $comment_max_chars = $this->_commentSettingsGet('comment_max_chars'); $comment_max_chars = !empty($comment_max_chars) && $comment_max_chars > 10 ? $comment_max_chars : 200; // Если длина комментария превышает максимально допустимую, обрезаем текст, до максимального значения $new_comment['comment_text'] = mb_substr(stripslashes($new_comment['comment_text']), 0, $comment_max_chars); $new_comment['comment_text'] .= mb_strlen($new_comment['comment_text']) > $comment_max_chars ? '…' : ''; // $new_comment['comment_text'] = htmlspecialchars($new_comment['comment_text'], ENT_QUOTES); $new_comment['comment_text'] = pretty_chars($new_comment['comment_text']); // Выполняем запрос к БД на добавление комментария $AVE_DB->Query("\r\n\t\t\t\tINSERT INTO " . PREFIX . "_modul_comment_info\r\n\t\t\t\t\t(" . implode(',', array_keys($new_comment)) . ")\r\n\t\t\t\tVALUES\r\n\t\t\t\t\t('" . implode("','", $new_comment) . "')\r\n\t\t\t"); $new_comment['Id'] = $AVE_DB->InsertId(); // Получаем e-mail адрес из Общих настроек системы и формируем ссылку на комментарий в Публичной части $mail_from = get_settings('mail_from'); $mail_from_name = get_settings('mail_from_name'); $page = get_home_link() . urldecode(base64_decode($_REQUEST['page'])) . '&subaction=showonly&comment_id=' . $new_comment['Id'] . '#' . $new_comment['Id']; // Формируем текст уведомления для отправки на e-mail $mail_text = $AVE_Template->get_config_vars('COMMENT_MESSAGE_ADMIN'); $mail_text = str_replace('%COMMENT%', stripslashes($new_comment['comment_text']), $mail_text); $mail_text = str_replace('%N%', "\n", $mail_text); $mail_text = str_replace('%PAGE%', $page, $mail_text); $mail_text = str_replace('&', '&', $mail_text); // Отправляем уведомление send_mail($mail_from, $mail_text, $AVE_Template->get_config_vars('COMMENT_SUBJECT_MAIL'), $mail_from, $mail_from_name, 'text'); // Если данные были отправлены ajax-запросом, тогда выполняем автоматический показ комментария // на странице. if ($ajax) { $new_comment['comment_published'] = strftime($AVE_Template->get_config_vars('COMMENT_DATE_TIME_FORMAT'), $new_comment['comment_published']); $subcomments[] = $new_comment; $AVE_Template->assign('subcomments', $subcomments); $AVE_Template->assign('theme', defined('THEME_FOLDER') ? THEME_FOLDER : DEFAULT_THEME_FOLDER); $AVE_Template->display($tpl_dir . $this->_comments_tree_sub_tpl); } } // $JsAfter = ($comment_status == 0) ? $AVE_Template->get_config_vars('COMMENT_AFTER_MODER') : $AVE_Template->get_config_vars('COMMENT_THANKYOU_TEXT'); // $AVE_Template->assign('JsAfter', $JsAfter); // $AVE_Template->display($tpl_dir . $this->_comment_thankyou_tpl); // Если же данные пришли НЕ ajax-запросом, тогда полностью обновляем страницу. if (!$ajax) { header('Location:' . $link . '#end'); } exit; }
/** * Метод, предназанченный для сборки всей страницы в единое целое. * * @param int $id идентификатор документа * @param int $rub_id идентификатор рубрики */ function coreSiteFetch($id, $rub_id = '') { global $AVE_DB; // Если происходит вызов модуля, получаем соответствующие мета-теги и получаем шаблон модуля if (!empty($_REQUEST['module'])) { $out = $this->_coreModuleMetatagsFetch(); $out = $this->_coreDocumentTemplateGet('', '', $this->_coreModuleTemplateGet()); } else { if (!isset($this->curentdoc->Id) && !$this->_coreCurrentDocumentFetch($id, UGROUP)) { // Определяем документ с 404 ошиюкой, в случае, если документ не найден if ($this->_corePageNotFoundFetch(PAGE_NOT_FOUND_ID, UGROUP)) { $_REQUEST['id'] = $_GET['id'] = $id = PAGE_NOT_FOUND_ID; } } // проверяем параметры публикации документа if (!$this->_coreDocumentIsPublished()) { $this->_coreErrorPage404(); } // Определяем права доступа к документам рубрики define('RUB_ID', !empty($rub_id) ? $rub_id : $this->curentdoc->rubric_id); $this->_coreRubricPermissionFetch(RUB_ID); if (!(isset($_SESSION[RUB_ID . '_docread']) && $_SESSION[RUB_ID . '_docread'] == 1 || isset($_SESSION[RUB_ID . '_alles']) && $_SESSION[RUB_ID . '_alles'] == 1)) { // читать запрещено - извлекаем ругательство и отдаём вместо контента $main_content = get_settings('message_forbidden'); } else { if (isset($_REQUEST['print']) && $_REQUEST['print'] == 1) { // увеличиваем счетчик версий для печати $AVE_DB->Query("\n\t\t\t\t\t\tUPDATE " . PREFIX . "_documents\n\t\t\t\t\t\tSET document_count_print = document_count_print+1\n\t\t\t\t\t\tWHERE Id = '" . $id . "'\n\t\t\t\t\t"); } else { if (!isset($_SESSION['doc_view'][$id])) { // увеличиваем счетчик просмотров (1 раз в пределах сессии) $AVE_DB->Query("\n\t\t\t\t\t\t\tUPDATE " . PREFIX . "_documents\n\t\t\t\t\t\t\tSET document_count_view = document_count_view+1\n\t\t\t\t\t\t\tWHERE Id = '" . $id . "'\n\t\t\t\t\t\t"); $_SESSION['doc_view'][$id] = time(); } $curdate = mktime(0, 0, 0, date("m"), date("d"), date("Y")); if (!isset($_SESSION['doc_view_dayly[' . $curdate . '][' . $id . ']'])) { // и подневный счетчик просмотров тоже увеличиваем $curdate = mktime(0, 0, 0, date("m"), date("d"), date("Y")); $AVE_DB->Query("\n UPDATE\n " . PREFIX . "_view_count\n SET\n count = count + 1\n WHERE\n document_id = '" . $id . "' AND\n day_id = '" . $curdate . "'\n "); if (!$AVE_DB->_handle->affected_rows) { $AVE_DB->Query("\n INSERT INTO " . PREFIX . "_view_count (\n document_id,\n day_id,\n count\n )\n VALUES (\n '" . $id . "', '" . $curdate . "', '1'\n )\n "); } $_SESSION['doc_view_dayly[' . $curdate . '][' . $id . ']'] = time(); } } if (CACHE_DOC_TPL && empty($_POST) && !(isset($_SESSION['user_adminmode']) && $_SESSION['user_adminmode'] == 1)) { // кэширование разрешено // извлекаем скомпилированный шаблон документа из кэша $main_content = $AVE_DB->Query("\n\t\t\t\t\t\tSELECT compiled\n\t\t\t\t\t\tFROM " . PREFIX . "_rubric_template_cache\n\t\t\t\t\t\tWHERE hash = '" . $this->_get_cache_hash() . "'\n\t\t\t\t\t\tLIMIT 1\n\t\t\t\t\t")->GetCell(); } else { // кэширование запрещено $main_content = false; } if (empty($main_content)) { // кэш пустой или отключен, извлекаем и компилируем шаблон if (!empty($this->curentdoc->rubric_template)) { $rubTmpl = $this->curentdoc->rubric_template; } else { $rubTmpl = $AVE_DB->Query("\n\t\t\t\t\t\t\tSELECT rubric_template\n\t\t\t\t\t\t\tFROM " . PREFIX . "_rubrics\n\t\t\t\t\t\t\tWHERE Id = '" . RUB_ID . "'\n\t\t\t\t\t\t\tLIMIT 1\n\t\t\t\t\t\t")->GetCell(); } $rubTmpl = trim($rubTmpl); if (empty($rubTmpl)) { // не задан шаблон рубрики $main_content = $this->_rubric_template_empty; } else { // парсим теги полей в шаблоне документа $main_content = preg_replace_callback('/\\[tag:fld:([a-zA-Z0-9-_]+)\\]/', 'document_get_field', $rubTmpl); $main_content = preg_replace_callback('/\\[tag:([r|c|f|t]\\d+x\\d+r*):(.+?)]/', 'callback_make_thumbnail', $main_content); // удаляем ошибочные теги полей $main_content = preg_replace('/\\[tag:fld:\\d*\\]/', '', $main_content); if (CACHE_DOC_TPL && empty($_POST) && !(isset($_SESSION['user_adminmode']) && $_SESSION['user_adminmode'] == 1)) { // кэширование разрешено // сохраняем скомпилированный шаблон в кэш $AVE_DB->Query("\n\t\t\t\t\t\t\t\tINSERT " . PREFIX . "_rubric_template_cache\n\t\t\t\t\t\t\t\tSET\n\t\t\t\t\t\t\t\t\thash = '" . $this->_get_cache_hash() . "',\n\t\t\t\t\t\t\t\t\trub_id = '" . RUB_ID . "',\n\t\t\t\t\t\t\t\t\tgrp_id = '" . UGROUP . "',\n\t\t\t\t\t\t\t\t\tdoc_id = '" . $id . "',\n\t\t\t\t\t\t\t\t\tcompiled = '" . addslashes($main_content) . "'\n\t\t\t\t\t\t\t"); } } } $main_content = preg_replace('/\\[tag:date:([a-zA-Z0-9-]+)\\]/e', "RusDate(date('\$1', " . $this->curentdoc->document_published . "))", $main_content); $main_content = str_replace('[tag:docdate]', pretty_date(strftime(DATE_FORMAT, $this->curentdoc->document_published)), $main_content); $main_content = str_replace('[tag:doctime]', pretty_date(strftime(TIME_FORMAT, $this->curentdoc->document_published)), $main_content); $main_content = str_replace('[tag:docauthorid]', $this->curentdoc->document_author_id, $main_content); $main_content = str_replace('[tag:docauthor]', get_username_by_id($this->curentdoc->document_author_id), $main_content); } $out = str_replace('[tag:maincontent]', $main_content, $this->_coreDocumentTemplateGet(RUB_ID)); } // /вывод документа //Работа с условиями /* $out = preg_replace('/\[tag:if_exp:?(.*)\]/u', '<?php $my_exp000=true; $my_exp0001=\'$my_exp000=\'. str_replace(\'#var#\',\'$\',<<<BLOCK $1; BLOCK ); @eval($my_exp0001); if($my_exp000==true) { ?>', $out); $out = str_replace('[tag:if_exp_else]', '<?php }else{ ?>', $out); $out = str_replace('[tag:/if_exp]', '<?php } ?>', $out); */ // Тут мы вводим в хеадер иньекцию скриптов. if (defined('RUB_ID')) { $rubheader = $AVE_DB->Query("\n\t\t\t\t\t\t\tSELECT rubric_header_template\n\t\t\t\t\t\t\tFROM " . PREFIX . "_rubrics\n\t\t\t\t\t\t\tWHERE Id = '" . RUB_ID . "'\n\t\t\t\t\t\t\tLIMIT 1\n\t\t\t\t\t\t", CACHE_LIFETIME)->GetCell(); $out = str_replace('[tag:rubheader]', $rubheader . '[tag:rubheader]', $out); } $out = preg_replace('/\\[tag:rfld:([a-zA-Z0-9-_]+)]\\[(more|esc|img|[0-9-]+)]/e', "request_get_document_field(\"\$1\", {$id}, \"\$2\")", $out); // Если в запросе пришел параметр print, т.е. страница для печати, парсим контент, который обрамлен // тегами только для печати if (isset($_REQUEST['print']) && $_REQUEST['print'] == 1) { $out = str_replace(array('[tag:if_print]', '[/tag:if_print]'), '', $out); $out = preg_replace('/\\[tag:if_notprint\\](.*?)\\[\\/tag:if_notprint\\]/si', '', $out); } else { // В противном случае наоборот, парсим только тот контент, который предназначен НЕ для печати $out = preg_replace('/\\[tag:if_print\\](.*?)\\[\\/tag:if_print\\]/si', '', $out); $out = str_replace(array('[tag:if_notprint]', '[/tag:if_notprint]'), '', $out); } // получаем из шаблона системный тег, определяющий название темы дизайна $match = ''; preg_match('/\\[tag:theme:(\\w+)]/', $out, $match); define('THEME_FOLDER', empty($match[1]) ? DEFAULT_THEME_FOLDER : $match[1]); $out = preg_replace('/\\[tag:theme:(.*?)]/', '', $out); // парсим теги модулей $out = $this->coreModuleTagParse($out); if (isset($_REQUEST['module']) && !(isset($this->install_modules[$_REQUEST['module']]) && '1' == $this->install_modules[$_REQUEST['module']]->ModuleStatus)) { display_notice($this->_module_error); } // парсим теги системных блоков $out = preg_replace_callback('/\\[tag:sysblock:([0-9-]+)\\]/', 'parse_sysblock', $out); // парсим теги системы внутренних запросов $out = preg_replace_callback('/\\[tag:request:(\\d+)\\]/', 'request_parse', $out); // парсим теги навигации $out = preg_replace_callback('/\\[tag:navigation:(\\d+):?([0-9,]*)\\]/', 'parse_navigation', $out); // парсим теги скрытого текста $out = parse_hide($out); // парсим остальные теги основного шаблона $search = array('[tag:mediapath]', '[tag:path]', '[tag:sitename]', '[tag:document]', '[tag:alias]', '[tag:home]', '[tag:robots]', '[tag:canonical]', '[tag:docid]', '[tag:breadcrumb]'); $replace = array(ABS_PATH . 'templates/' . THEME_FOLDER . '/', ABS_PATH, htmlspecialchars(get_settings('site_name'), ENT_QUOTES), get_redirect_link('print'), @$this->curentdoc->document_alias, get_home_link(), isset($this->curentdoc->document_meta_robots) ? $this->curentdoc->document_meta_robots : '', canonical($_SERVER['REQUEST_URI']), isset($this->curentdoc->Id) ? $this->curentdoc->Id : '', get_breadcrumb()); if (defined('MODULE_CONTENT')) { // парсинг тегов при выводе из модуля $search[] = '[tag:maincontent]'; $replace[] = MODULE_CONTENT; $search[] = '[tag:title]'; $replace[] = htmlspecialchars(defined('MODULE_SITE') ? MODULE_SITE : '', ENT_QUOTES); $search[] = '[tag:description]'; $replace[] = htmlspecialchars(defined('MODULE_DESCRIPTION') ? MODULE_DESCRIPTION : '', ENT_QUOTES); $search[] = '[tag:keywords]'; $replace[] = htmlspecialchars(defined('MODULE_KEYWORDS') ? MODULE_KEYWORDS : '', ENT_QUOTES); } else { $search[] = '[tag:keywords]'; $replace[] = isset($this->curentdoc->document_meta_keywords) ? htmlspecialchars($this->curentdoc->document_meta_keywords, ENT_QUOTES) : ''; $search[] = '[tag:description]'; $replace[] = isset($this->curentdoc->document_meta_description) ? htmlspecialchars($this->curentdoc->document_meta_description, ENT_QUOTES) : ''; $search[] = '[tag:title]'; $replace[] = htmlspecialchars(pretty_chars($this->curentdoc->document_title), ENT_QUOTES); } $search[] = '[tag:maincontent]'; $replace[] = ''; $search[] = '[tag:printlink]'; $replace[] = get_print_link(); $search[] = '[tag:version]'; $replace[] = APP_INFO; $search[] = '[tag:docviews]'; $replace[] = isset($this->curentdoc->document_count_view) ? $this->curentdoc->document_count_view : ''; // парсим тизер документа $out = preg_replace('/\\[tag:teaser:(\\d+)\\]/e', "showteaser(\$1)", $out); if (defined('RUB_ID')) { $out = preg_replace('/\\[tag:docauthoravatar:(\\d+)\\]/e', "getAvatar(" . intval($this->curentdoc->document_author_id) . ",\"\$1\")", $out); } if (defined('RUB_ID')) { $out = preg_replace('/\\[tag:lang:([a-zA-Z0-9-_]+)\\]/', '<?php if($AVE_Core->curentdoc->document_lang=="$1") { ?>', $out); } else { $out = preg_replace('/\\[tag:lang:([a-zA-Z0-9-_]+)\\]/', '<?php if($_SESSION["user_language"]=="$1") { ?>', $out); } $out = str_replace('[tag:/lang]', '<?php } ?>', $out); // парсим остальные теги основного шаблона $out = str_replace($search, $replace, $out); unset($search, $replace); // парсим теги для combine.php $out = preg_replace_callback('/\\[tag:(css|js):([^ :\\/]+):?(\\S+)*\\]/', array($this, '_parse_combine'), $out); // ЧПУ $out = rewrite_link($out); echo $out; }
function displayForm($tpl_dir, $uid, $theme_folder) { global $AVE_DB, $AVE_Template; $sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_modul_userpage WHERE id = '1'"); $row = $sql->FetchRow(); $gruppen = explode(',', $row->group_id); if ($row->can_comment == 1 && in_array(UGROUP, $gruppen)) { $AVE_Template->assign('cancomment', 1); } $AVE_Template->assign('MaxZeichen', $this->_commentwords); $im = ""; $sql_ig = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_modul_forum_ignorelist WHERE BenutzerId = '{$uid}' AND IgnoreId = '" . $_SESSION['user_id'] . "'"); $num_ig = $sql_ig->NumRows(); if ($num_ig == 1) { $AVE_Template->assign('cancomment', 1); } // absenden if (isset($_POST['send']) && $_POST['send'] == 1) { $Text = mb_substr(htmlspecialchars($_POST['Text']), 0, $this->_commentwords); $Text_length = mb_strlen($Text); $Text .= $Text_length > $this->_commentwords ? '...' : ''; $Text = pretty_chars($Text); $error = array(); if (empty($_POST['title'])) { $error[] = $AVE_Template->get_config_vars('NoTitle'); } if (empty($Text)) { $error[] = $AVE_Template->get_config_vars('NoComment'); } if (function_exists("imagettftext") && function_exists("imagepng") && $this->_anti_spam == 1) { if (empty($_POST['cpSecurecode']) || $_POST['cpSecurecode'] != $_SESSION['cpSecurecode']) { $error[] = $AVE_Template->get_config_vars('NoSecure'); } } if (count($error) > 0) { $AVE_Template->assign('errors', $error); $AVE_Template->assign('titel', $_POST['title']); $AVE_Template->assign('text', $_POST['Text']); } else { if (isset($_SESSION['user_id'])) { $author = $_SESSION['user_id']; } else { $author = '0'; } if (in_array(UGROUP, $gruppen) && $Text_length > 3) { $sql = "INSERT INTO " . PREFIX . "_modul_userpage_guestbook (\r\n\t\t\t\t\t\tid,\r\n\t\t\t\t\t\tuid,\r\n\t\t\t\t\t\tctime,\r\n\t\t\t\t\t\tauthor,\r\n\t\t\t\t\t\ttitle,\r\n\t\t\t\t\t\tmessage\r\n\t\t\t\t\t) VALUES (\r\n\t\t\t\t\t\t'',\r\n\t\t\t\t\t\t'" . $uid . "',\r\n\t\t\t\t\t\t'" . time() . "',\r\n\t\t\t\t\t\t'" . $author . "',\r\n\t\t\t\t\t\t'" . $_POST['title'] . "',\r\n\t\t\t\t\t\t'" . $Text . "'\r\n\t\t\t\t\t)"; $AVE_DB->Query($sql); } echo '<script>window.opener.location.reload(); window.close();</script>'; } } if (function_exists("imagettftext") && function_exists("imagepng") && $this->_anti_spam == 1) { $codeid = secureCode(); $im = $codeid; $sql_sc = $AVE_DB->Query("SELECT Code FROM " . PREFIX . "_antispam WHERE Id = '{$codeid}'"); $row_sc = $sql_sc->FetchRow(); $AVE_Template->assign("im", $im); $_SESSION['cpSecurecode'] = $row_sc->Code; $_SESSION['cpSecurecode_id'] = $codeid; $AVE_Template->assign("anti_spam", 1); } $AVE_Template->assign('theme_folder', $theme_folder); $AVE_Template->assign('uid', $uid); $AVE_Template->display($tpl_dir . 'guestbook_form.tpl'); }
function Languages($tpl_dir) { // Aktualisieren bzw. lцschen if (isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'save') { foreach ($_POST['Del'] as $id => $del) { $GLOBALS['AVE_DB']->Query("DELETE FROM " . PREFIX . "_modul_download_sprachen WHERE Id = '{$id}'"); } foreach ($_POST['Name'] as $id => $name) { $GLOBALS['AVE_DB']->Query("UPDATE " . PREFIX . "_modul_download_sprachen SET Name = '" . pretty_chars($_POST['Name'][$id]) . "' WHERE Id = '{$id}'"); } header("Location:index.php?do=modules&action=modedit&mod=download&moduleaction=languages&cp=" . SESSION . "&pop=1"); exit; } // Neu if (isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'new') { foreach ($_POST['Name'] as $New) { $GLOBALS['AVE_DB']->Query("INSERT INTO " . PREFIX . "_modul_download_sprachen(Id,Name) VALUES ('', '" . pretty_chars($New) . "')"); } header("Location:index.php?do=modules&action=modedit&mod=download&moduleaction=languages&cp=" . SESSION . "&pop=1"); exit; } $lang = array(); $sql = $GLOBALS['AVE_DB']->Query("SELECT * FROM " . PREFIX . "_modul_download_sprachen ORDER BY Name ASC"); while ($row = $sql->FetchRow()) { array_push($lang, $row); } $GLOBALS['AVE_Template']->assign('lang', $lang); $GLOBALS['AVE_Template']->assign('content', $GLOBALS['AVE_Template']->fetch($tpl_dir . 'download_languages.tpl')); }
function getDenied($file_id) { define('MODULE_CONTENT', $GLOBALS['AVE_Template']->fetch($GLOBALS['mod']['tpl_dir'] . 'denied.tpl')); $pName = isset($_GET['categ']) && $_GET['categ'] != '' ? pretty_chars(strip_tags($topNav)) : $GLOBALS['mod']['config_vars']['PageName'] . $GLOBALS['mod']['config_vars']['PageSep'] . $GLOBALS['mod']['config_vars']['PageOverview']; define("MODULE_SITE", $pName); }
function get_field_docfromrubcheck($field_value, $type, $field_id = '', $rubric_field_template = '', $tpl_field_empty = 0, &$maxlength = '', $document_fields = 0, $rubric_id = 0, $dropdown = '') { global $AVE_DB, $AVE_Template, $AVE_Core, $AVE_Document; $res = 0; switch ($type) { case 'edit': $array = array(); $items = array(); $sql = "SELECT Id, document_parent, document_title from " . PREFIX . "_documents WHERE rubric_id='" . $dropdown . "' order by document_parent, document_title"; $field_value1 = explode(',', $field_value); $res = $AVE_DB->Query($sql); //$field = "<input id=\"feld_" . $field_id . "\" name=\"feld[" . $field_id . "]\" value=\"".$field_value."\" type=\"hidden\">"; $field = "<input id=\"feld_" . $field_id . "\" name=\"feld[" . $field_id . "]\" value=\"" . $field_value . "\" type=\"hidden\">"; while ($row = $res->FetchRow()) { $row->document_title = $array[$row->document_parent] > '' ? $array[$row->document_parent] . ' > ' . $row->document_title : $row->document_title; $items[$row->document_title] = "<div class=\"fix\"><input class=\"float field_docfromrubcheck\" value='" . $row->Id . "' type='checkbox' " . (in_array($row->Id, $field_value1) == false ? "" : "checked=checked") . " onchange=\"\n\t\t\t\t\t\$('#feld_" . $field_id . "').val('');\n\t\t\t\t\tvar n = \$('.field_docfromrubcheck:checked').each(\n\t\t\t\t\tfunction() {\n\t\t\t\t\t\$('#feld_" . $field_id . "').val(\$('#feld_" . $field_id . "').val() > '' ? \$('#feld_" . $field_id . "').val()+',' + \$(this).val() : \$(this).val())\n\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\t\"><label>" . htmlspecialchars($row->document_title, ENT_QUOTES) . "</label></div>"; $array[$row->Id] = $row->document_title; } ksort($items); $field .= implode(chr(10), $items); $res = $field; break; case 'doc': $field_value1 = explode(',', $field_value); if (is_array($field_value1)) { $res = $AVE_DB->Query("SELECT Id,document_title FROM " . PREFIX . "_documents WHERE Id IN (" . implode(', ', $field_value1) . ")"); $result = array(); while ($mfa = $res->FetchArray()) { $result[$mfa['Id']] = $mfa['document_title']; } $res = ''; if ($tpl_field_empty) { $res .= '<ul>'; } foreach ($field_value1 as $k => $v) { $field_value = htmlspecialchars($v, ENT_QUOTES); $field_value = pretty_chars($field_value); $field_value = clean_php($field_value); if (!$tpl_field_empty) { $field_param = explode('|', $field_value); $field_value = preg_replace('/\\[tag:parametr:(\\d+)\\]/ie', '@$field_param[\\1]', $rubric_field_template); } else { $field_value = "<li>" . $result[$field_value] . "</li>"; } $res .= $field_value; } if ($tpl_field_empty) { $res .= '</ul>'; } } break; case 'req': $res = get_field_default($field_value, $type, $field_id, $rubric_field_template, $tpl_field_empty, $maxlength, $document_fields, $rubric_id); break; case 'name': $res = 'FIELD_DOCFROMRUB_CHECK'; break; } return $res ? $res : $field_value; }
/** * Метод, предназанченный для сборки всей страницы в единое целое. * * @param int $id идентификатор документа * @param int $rub_id идентификатор рубрики */ function coreSiteFetch($id, $rub_id = '') { global $AVE_DB; // Если происходит вызов модуля, получаем соответствующие мета-теги и получаем шаблон модуля if (!empty($_REQUEST['module'])) { $out = $this->_coreModuleMetatagsFetch(); $out = $this->_coreDocumentTemplateGet('', '', $this->_coreModuleTemplateGet()); } else { if (!isset($this->curentdoc->Id) && !$this->_coreCurrentDocumentFetch($id, UGROUP)) { // Определяем документ с 404 ошиюкой, в случае, если документ не найден if ($this->_corePageNotFoundFetch(PAGE_NOT_FOUND_ID, UGROUP)) { $_REQUEST['id'] = $_GET['id'] = $id = PAGE_NOT_FOUND_ID; } } // проверяем параметры публикации документа if (!$this->_coreDocumentIsPublished()) { $this->_coreErrorPage404(); } // Определяем права доступа к документам рубрики define('RUB_ID', !empty($rub_id) ? $rub_id : $this->curentdoc->rubric_id); $this->_coreRubricPermissionFetch(RUB_ID); if (!(isset($_SESSION[RUB_ID . '_docread']) && $_SESSION[RUB_ID . '_docread'] == 1 || isset($_SESSION[RUB_ID . '_alles']) && $_SESSION[RUB_ID . '_alles'] == 1)) { // читать запрещено - извлекаем ругательство и отдаём вместо контента $main_content = get_settings('message_forbidden'); } else { if (isset($_REQUEST['print']) && $_REQUEST['print'] == 1) { // увеличиваем счетчик версий для печати $AVE_DB->Query("\r\n\t\t\t\t\t\tUPDATE " . PREFIX . "_documents\r\n\t\t\t\t\t\tSET document_count_print = document_count_print+1\r\n\t\t\t\t\t\tWHERE Id = '" . $id . "'\r\n\t\t\t\t\t"); } else { if (!isset($_SESSION['doc_view[' . $id . ']'])) { // увеличиваем счетчик просмотров (1 раз в пределах сессии) $AVE_DB->Query("\r\n\t\t\t\t\t\t\tUPDATE " . PREFIX . "_documents\r\n\t\t\t\t\t\t\tSET document_count_view = document_count_view+1\r\n\t\t\t\t\t\t\tWHERE Id = '" . $id . "'\r\n\t\t\t\t\t\t"); $_SESSION['doc_view[' . $id . ']'] = 1; } } if (CACHE_DOC_TPL && empty($_POST) && !(isset($_SESSION['user_adminmode']) && $_SESSION['user_adminmode'] == 1)) { // кэширование разрешено // извлекаем скомпилированный шаблон документа из кэша $main_content = $AVE_DB->Query("\r\n\t\t\t\t\t\tSELECT compiled\r\n\t\t\t\t\t\tFROM " . PREFIX . "_rubric_template_cache\r\n\t\t\t\t\t\tWHERE hash = '" . $this->_get_cache_hash() . "'\r\n\t\t\t\t\t\tLIMIT 1\r\n\t\t\t\t\t")->GetCell(); } else { // кэширование запрещено $main_content = false; } if (empty($main_content)) { // кэш пустой или отключен, извлекаем и компилируем шаблон if (!empty($this->curentdoc->rubric_template)) { $rubTmpl = $this->curentdoc->rubric_template; } else { $rubTmpl = $AVE_DB->Query("\r\n\t\t\t\t\t\t\tSELECT rubric_template\r\n\t\t\t\t\t\t\tFROM " . PREFIX . "_rubrics\r\n\t\t\t\t\t\t\tWHERE Id = '" . RUB_ID . "'\r\n\t\t\t\t\t\t\tLIMIT 1\r\n\t\t\t\t\t\t")->GetCell(); } $rubTmpl = trim($rubTmpl); if (empty($rubTmpl)) { // не задан шаблон рубрики $main_content = $this->_rubric_template_empty; } else { // парсим теги полей в шаблоне документа $main_content = preg_replace_callback('/\\[tag:fld:(\\d+)\\]/', 'document_get_field', $rubTmpl); // удаляем ошибочные теги полей $main_content = preg_replace('/\\[tag:fld:\\d*\\]/', '', $main_content); if (CACHE_DOC_TPL && empty($_POST) && !(isset($_SESSION['user_adminmode']) && $_SESSION['user_adminmode'] == 1)) { // кэширование разрешено // сохраняем скомпилированный шаблон в кэш $AVE_DB->Query("\r\n\t\t\t\t\t\t\t\tINSERT " . PREFIX . "_rubric_template_cache\r\n\t\t\t\t\t\t\t\tSET\r\n\t\t\t\t\t\t\t\t\thash = '" . $this->_get_cache_hash() . "',\r\n\t\t\t\t\t\t\t\t\trub_id = '" . RUB_ID . "',\r\n\t\t\t\t\t\t\t\t\tgrp_id = '" . UGROUP . "',\r\n\t\t\t\t\t\t\t\t\tdoc_id = '" . $id . "',\r\n\t\t\t\t\t\t\t\t\tcompiled = '" . addslashes($main_content) . "'\r\n\t\t\t\t\t\t\t"); } } } $main_content = str_replace('[tag:docdate]', pretty_date(strftime(DATE_FORMAT, $this->curentdoc->document_published)), $main_content); $main_content = str_replace('[tag:doctime]', pretty_date(strftime(TIME_FORMAT, $this->curentdoc->document_published)), $main_content); $main_content = str_replace('[tag:docauthor]', get_username_by_id($this->curentdoc->document_author_id), $main_content); } $out = str_replace('[tag:maincontent]', $main_content, $this->_coreDocumentTemplateGet(RUB_ID)); } // /вывод документа // Если в запросе пришел параметр print, т.е. страница для печати, парсим контент, который обрамлен // тегами только для печати if (isset($_REQUEST['print']) && $_REQUEST['print'] == 1) { $out = str_replace(array('[tag:if_print]', '[/tag:if_print]'), '', $out); $out = preg_replace('/\\[tag:if_notprint\\](.*?)\\[\\/tag:if_notprint\\]/si', '', $out); } else { // В противном случае наоборот, парсим только тот контент, который предназначен НЕ для печати $out = preg_replace('/\\[tag:if_print\\](.*?)\\[\\/tag:if_print\\]/si', '', $out); $out = str_replace(array('[tag:if_notprint]', '[/tag:if_notprint]'), '', $out); } // получаем из шаблона системный тег, определяющий название темы дизайна $match = ''; preg_match('/\\[tag:theme:(\\w+)]/', $out, $match); define('THEME_FOLDER', empty($match[1]) ? DEFAULT_THEME_FOLDER : $match[1]); $out = preg_replace('/\\[tag:theme:(.*?)]/', '', $out); // парсим теги модулей $out = $this->coreModuleTagParse($out); if (isset($_REQUEST['module']) && !(isset($this->install_modules[$_REQUEST['module']]) && '1' == $this->install_modules[$_REQUEST['module']]->Status)) { display_notice($this->_module_error); } // парсим теги системы внутренних запросов $out = preg_replace_callback('/\\[tag:request:(\\d+)\\]/', 'request_parse', $out); // парсим теги скрытого текста $out = parse_hide($out); // парсим остальные теги основного шаблона $search = array('[tag:mediapath]', '[tag:path]', '[tag:sitename]', '[tag:document]', '[tag:home]', '[tag:robots]', '[tag:docid]', '[tag:breadcrumb]'); $replace = array(ABS_PATH . 'templates/' . THEME_FOLDER . '/', ABS_PATH, htmlspecialchars(get_settings('site_name'), ENT_QUOTES), get_redirect_link('print'), get_home_link(), isset($this->curentdoc->document_meta_robots) ? $this->curentdoc->document_meta_robots : '', isset($this->curentdoc->Id) ? $this->curentdoc->Id : '', get_breadcrumb()); if (defined('MODULE_CONTENT')) { // парсинг тегов при выводе из модуля $search[] = '[tag:maincontent]'; $replace[] = MODULE_CONTENT; $search[] = '[tag:title]'; $replace[] = htmlspecialchars(defined('MODULE_SITE') ? MODULE_SITE : '', ENT_QUOTES); $search[] = '[tag:description]'; $replace[] = htmlspecialchars(defined('MODULE_DESCRIPTION') ? MODULE_DESCRIPTION : '', ENT_QUOTES); $search[] = '[tag:keywords]'; $replace[] = htmlspecialchars(defined('MODULE_KEYWORDS') ? MODULE_KEYWORDS : '', ENT_QUOTES); } else { $search[] = '[tag:keywords]'; $replace[] = isset($this->curentdoc->document_meta_keywords) ? htmlspecialchars($this->curentdoc->document_meta_keywords, ENT_QUOTES) : ''; $search[] = '[tag:description]'; $replace[] = isset($this->curentdoc->document_meta_description) ? htmlspecialchars($this->curentdoc->document_meta_description, ENT_QUOTES) : ''; $search[] = '[tag:title]'; $replace[] = htmlspecialchars(pretty_chars($this->curentdoc->document_title), ENT_QUOTES); } $search[] = '[tag:maincontent]'; $replace[] = ''; $search[] = '[tag:printlink]'; $replace[] = get_print_link(); $search[] = '[tag:version]'; $replace[] = APP_INFO; $search[] = '[tag:docviews]'; $replace[] = isset($this->curentdoc->document_count_view) ? $this->curentdoc->document_count_view : ''; $out = str_replace($search, $replace, $out); unset($search, $replace); // /парсим остальные теги основного шаблона // ЧПУ $out = rewrite_link($out); echo $out; }
/** * Рекурсивная функция формирования карты сайта * * @param int $nav_items * @param string $sitemap * @param int $parent */ function printSitemap(&$nav_items, &$sitemap = '', $parent = 0) { $sitemap .= empty($sitemap) ? '<ul class="sitemap">' : '<ul>'; foreach ($nav_items[$parent] as $row) { if (strpos($row['navi_item_link'], 'module=') === false && start_with('index.php?', $row['navi_item_link'])) { $row['navi_item_link'] .= '&doc=' . (empty($row['document_alias']) ? prepare_url($row['title']) : $row['document_alias']); } if (start_with('www.', $row['navi_item_link'])) { $row['navi_item_link'] = str_replace('www.', 'http://www.', $row['navi_item_link']); } $row['navi_item_link'] = rewrite_link($row['navi_item_link']); $sitemap .= '<li><a href="' . $row['navi_item_link'] . '" target="' . $row['navi_item_target'] . '">'; $sitemap .= pretty_chars($row['title']) . '</a>'; if (isset($nav_items[$row['Id']])) { printSitemap($nav_items, $sitemap, $row['Id']); } $sitemap .= '</li>'; } $sitemap .= '</ul>'; }
/** * Метод, предназначенный для сохранения документа в БД * * @param int $rubric_id идентификатор Рубрики * @param int $document_id идентификатор Документа * @param array $data Документ в массиве структура - хитрая * @param bool $update_non_exists_fields Изменять поля на пустые значения у не переданных полей или не надо * вохвражает номер документа если все удачно и false если все плохо */ function documentSave($rubric_id, $document_id, $data, $update_non_exists_fields = false) { global $AVE_DB; //Проверяем входящие данные $rubric_id = (int) $rubric_id; $document_id = (int) $document_id; if (!isset($data)) { return false; } if (!isset($data['feld'])) { return false; } //определяем тип опреации $oper = 'INSERT'; // выполняем стартовый код рубрики $code = $AVE_DB->Query("SELECT rubric_code_start, rubric_code_end FROM " . PREFIX . "_rubrics WHERE Id = '" . $rubric_id . "'")->FetchRow(); eval('?>' . $code->rubric_code_start . '<?'); if ($document_id > 0) { $oper = 'UPDATE'; } // Если пользователь имеет права на добавление документов в указанную рубрику, тогда if ($oper == 'INSERT' && !(isset($_SESSION[$rubric_id . '_newnow']) && $_SESSION[$rubric_id . '_newnow'] == 1 || isset($_SESSION[$rubric_id . '_new']) && $_SESSION[$rubric_id . '_new'] == 1 || isset($_SESSION[$rubric_id . '_alles']) && $_SESSION[$rubric_id . '_alles'] == 1 || defined('UGROUP') && UGROUP == 1)) { return false; } if ($oper == 'UPDATE') { // Выполняем запрос к БД на получение автора документа и id Рубрики $row = $AVE_DB->Query("\n\t\t\t\t\tSELECT\n\t\t\t\t\t\trubric_id,\n\t\t\t\t\t\tdocument_author_id\n\t\t\t\t\tFROM " . PREFIX . "_documents\n\t\t\t\t\tWHERE Id = '" . $document_id . "'\n\t\t\t\t")->FetchRow(); $rubric_id = $row->rubric_id; $row->cantEdit = 0; // Определяем права доступа к документам в данной рубрики $this->documentPermissionFetch($row->rubric_id); // разрешаем редактирование // если автор имеет право изменять свои документы в рубрике // или пользователю разрешено изменять все документы в рубрике if (isset($_SESSION['user_id']) && $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; } // запрещаем редактирование главной страницы и страницы ошибки 404 если требуется одобрение Администратора if (($document_id == 1 || $document_id == PAGE_NOT_FOUND_ID) && @$_SESSION[$row->rubric_id . '_newnow'] != 1) { $row->cantEdit = 0; } // разрешаем редактирование, если пользователь принадлежит группе Администраторов или имеет все права на рубрику if (defined('UGROUP') && UGROUP == 1 || isset($_SESSION[$row->rubric_id . '_alles']) && $_SESSION[$row->rubric_id . '_alles'] == 1) { $row->cantEdit = 1; } //выходим если нельзя редактировать if (!$row->cantEdit == 1) { return false; } // Обрабатываем все данные, пришедшие в запросе $suche = isset($data['document_in_search']) && $data['document_in_search'] == 1 ? '1' : '0'; $document_status = isset($_SESSION[$row->rubric_id . '_newnow']) && $_SESSION[$row->rubric_id . '_newnow'] == 1 || isset($_SESSION[$row->rubric_id . '_alles']) && $_SESSION[$row->rubric_id . '_alles'] == 1 || defined('UGROUP') && UGROUP == 1 ? isset($data['document_status']) ? $data['document_status'] : '0' : '0'; $document_status = $document_id == 1 || $document_id == PAGE_NOT_FOUND_ID ? '1' : $docstatus; // Формируем/проверяем адрес на уникальность if ($document_id != 1) { $data['document_alias'] = $_url = prepare_url(empty($data['document_alias']) ? trim($_POST['prefix'] . '/' . $data['doc_title'], '/') : $data['document_alias']); } else { $data['document_alias'] = "/"; } $cnt = 1; while ($AVE_DB->Query("\n\t\t\t\t\t\tSELECT 1\n\t\t\t\t\t\tFROM " . PREFIX . "_documents\n\t\t\t\t\t\tWHERE Id != '" . $document_id . "'\n\t\t\t\t\t\tAND document_alias = '" . $data['document_alias'] . "'\n\t\t\t\t\t\tLIMIT 1\n\t\t\t\t\t\t")->NumRows() == 1) { $data['document_alias'] = $_url . '-' . $cnt; $cnt++; } } else { $suche = isset($data['document_in_search']) && $data['document_in_search'] == 1 ? 1 : 0; $document_status = !empty($data['document_status']) ? (int) $data['document_status'] : '0'; $document_status = $document_id == 1 || $document_id == PAGE_NOT_FOUND_ID ? '1' : $document_status; $data['document_alias'] = $_url = prepare_url(empty($data['document_alias']) ? trim($data['prefix'] . '/' . $data['doc_title'], '/') : $data['document_alias']); $cnt = 1; while ($AVE_DB->Query("\n\t\t\t\t\t\t\tSELECT 1\n\t\t\t\t\t\t\tFROM " . PREFIX . "_documents\n\t\t\t\t\t\t\tWHERE document_alias = '" . $data['document_alias'] . "'\n\t\t\t\t\t\t\tLIMIT 1\n\t\t\t\t\t\t")->NumRows()) { $data['document_alias'] = $_url . '-' . $cnt; $cnt++; } } $docstart = $document_id == 1 || $document_id == PAGE_NOT_FOUND_ID ? '0' : $this->_documentStart($data['document_published']); $docend = $document_id == 1 || $document_id == PAGE_NOT_FOUND_ID ? '0' : $this->_documentEnd($data['document_expire']); //Получаем структуру документа $fields = array(); if ($oper == 'INSERT') { $sql = $AVE_DB->Query("\n\t\t\t\t\t\t\t\tSELECT *\n\t\t\t\t\t\t\t\tFROM " . PREFIX . "_rubric_fields\n\t\t\t\t\t\t\t\tWHERE rubric_id = '" . $rubric_id . "'\n\t\t\t\t\t\t\t\tORDER BY rubric_field_position ASC\n\t\t\t\t\t\t\t"); } else { $sql = $AVE_DB->Query("\n\t\t\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\t\t\tdoc.Id AS df_id,\n\t\t\t\t\t\t\t\t\trub.*,\n\t\t\t\t\t\t\t\t\trubric_field_default,\n\t\t\t\t\t\t\t\t\tdoc.field_value\n\t\t\t\t\t\t\t\tFROM " . PREFIX . "_rubric_fields AS rub\n\t\t\t\t\t\t\t\tLEFT JOIN " . PREFIX . "_document_fields AS doc ON rubric_field_id = rub.Id\n\t\t\t\t\t\t\t\tWHERE document_id = '" . $document_id . "'\n\t\t\t\t\t\t\t\tORDER BY rubric_field_position ASC\n\t\t\t\t\t\t\t"); } while ($row = $sql->FetchRow()) { $row->Feld = $this->_documentFieldGet($row->rubric_field_type, $oper == 'INSERT' ? $row->rubric_field_default : $row->field_value, $row->Id, $row->rubric_field_default); array_push($fields, $row); } $where = $oper == 'UPDATE' ? 'WHERE Id=' . $document_id : ''; $author = $oper != 'UPDATE' ? 'document_author_id = ' . $_SESSION['user_id'] . ',' : ''; $zag = $oper == 'UPDATE' ? "UPDATE " . PREFIX . "_documents" : "INSERT INTO " . PREFIX . "_documents"; $sql = "\n\t\t\t\t\t\t\t{$zag}\n\t\t\t\t\t\t\tSET\n\t\t\t\t\t\t\t\trubric_id = '" . $rubric_id . "',\n\t\t\t\t\t\t\t\tdocument_parent = '" . (int) $data['document_parent'] . "',\n\t\t\t\t\t\t\t\tdocument_title = '" . addslashes(clean_no_print_char($data['doc_title'])) . "',\n\t\t\t\t\t\t\t\tdocument_breadcrum_title = '" . addslashes(clean_no_print_char($data['doc_breadcrum_title'])) . "',\n\t\t\t\t\t\t\t\tdocument_alias = '" . $data['document_alias'] . "',\n\t\t\t\t\t\t\t\tdocument_published = '" . $docstart . "',\n\t\t\t\t\t\t\t\tdocument_expire = '" . $docend . "',\n\t\t\t\t\t\t\t\tdocument_changed = '" . time() . "',\n\t\t\t\t\t\t\t\t{$author}\n\t\t\t\t\t\t\t\tdocument_in_search = '" . $suche . "',\n\t\t\t\t\t\t\t\tdocument_meta_keywords = '" . addslashes(clean_no_print_char($data['document_meta_keywords'])) . "',\n\t\t\t\t\t\t\t\tdocument_meta_description = '" . addslashes(clean_no_print_char($data['document_meta_description'])) . "',\n\t\t\t\t\t\t\t\tdocument_meta_robots = '" . $data['document_meta_robots'] . "',\n\t\t\t\t\t\t\t\tdocument_status = '" . $data['document_status'] . "',\n\t\t\t\t\t\t\t\tdocument_linked_navi_id = '" . (int) $data['document_linked_navi_id'] . "',\n\t\t\t\t\t\t\t\tdocument_tags \t\t = '" . addslashes(clean_no_print_char($data['document_tags'])) . "',\n\t\t\t\t\t\t\t\tdocument_lang\t\t\t = '" . (empty($data['document_lang']) ? $_SESSION['user_language'] : $data['document_lang']) . "'\n\t\t\t\t\t\t\t{$where}"; $AVE_DB->Query($sql); if ($oper == 'UPDATE') { $this->SaveRevission($document_id); } // Получаем id добавленной записи $iid = $AVE_DB->InsertId(); $document_id = $oper == "INSERT" ? $iid : $document_id; // Сохраняем системное сообщение в журнал reportLog($_SESSION['user_name'] . ' - ' . ($oper == 'INSERT' ? 'добавил' : 'отредактировал') . ' документ (' . $document_id . ')', 2, 2); // Циклически обрабатываем поля документа foreach ($fields as $k => $v) { $fld_id = $v->Id; //если в данных нет поля и мы редактируем документ - изменять ли это поле на пустое значение if ($oper == 'UPDATE' && !isset($data['feld'][$fld_id]) && !$update_non_exists_fields) { continue; } $fld_val = isset($data['feld'][$fld_id]) ? $data['feld'][$fld_id] : $v->rubric_field_default; if (!$AVE_DB->Query("\n\t\t\t\t\t\t\t\tSELECT 1\n\t\t\t\t\t\t\t\tFROM " . PREFIX . "_rubric_fields\n\t\t\t\t\t\t\t\tWHERE Id = '" . $fld_id . "'\n\t\t\t\t\t\t\t\tAND rubric_id = '" . $rubric_id . "'\n\t\t\t\t\t\t\t\tLIMIT 1\n\t\t\t\t\t\t\t")->NumRows()) { continue; } if (is_array($fld_val)) { foreach ($fld_val as $k => $v) { if (!check_permission('document_php')) { if (is_php_code($v)) { $v = ''; } } $v = clean_no_print_char($v); $v = pretty_chars($v); $fld_val[$k] = $v; } } else { // Если запрещено использование php кода, тогда обнуляем данные поля if (!check_permission('document_php')) { if (is_php_code($fld_val)) { $fld_val = ''; } } // Убираем из текста непчатбемые символы $fld_val = clean_no_print_char($fld_val); $fld_val = pretty_chars($fld_val); } // Выполняем запрос к БД на добавление нового поля с его содержимым $where = $oper == 'UPDATE' ? 'WHERE document_id=' . $document_id . ' AND rubric_field_id=' . $fld_id : ''; $zag = $oper == 'UPDATE' ? "UPDATE " . PREFIX . "_document_fields" : "INSERT INTO " . PREFIX . "_document_fields"; $sql = "\n\t\t\t\t\t\t\t{$zag}\n\t\t\t\t\t\t\tSET\n\t\t\t\t\t\t\t\trubric_field_id = '" . $fld_id . "',\n\t\t\t\t\t\t\t\tdocument_id = '" . $document_id . "',\n\t\t\t\t\t\t\t\tfield_value = '" . (is_array($fld_val) ? serialize($fld_val) : $fld_val) . "',\n\t\t\t\t\t\t\t\tfield_number_value = '" . (int) (is_array($fld_val) ? serialize($fld_val) : $fld_val) . "',\n\t\t\t\t\t\t\t\tdocument_in_search = '" . $suche . "'\n\t\t\t\t\t\t\t{$where}\t\n\t\t\t\t\t\t"; $AVE_DB->Query($sql); } // Очищаем кэш шаблона $AVE_DB->Query("\n\t\t\t\t\t\tDELETE\n\t\t\t\t\t\tFROM " . PREFIX . "_rubric_template_cache\n\t\t\t\t\t\tWHERE doc_id = '" . $document_id . "'\n\t\t\t\t\t"); // выполняем финишный код рубрики eval('?>' . $code->rubric_code_end . '<?'); //чистим кеш $AVE_DB->clearcache('rub_' . $rubric_id); $AVE_DB->clearcache('doc_' . $document_id); $this->generateKeywords($document_id); $this->generateTags($document_id); return $document_id; }