/** * Создание RSS - ленты * */ public static function rssNew() { global $AVE_DB; $AVE_DB->Query("\r\n\t\t\tINSERT\r\n\t\t\tINTO " . PREFIX . "_modul_rss\r\n\t\t\tSET\r\n\t\t\t\tid = '',\r\n\t\t\t\trss_site_name = '" . $_POST['new_rss'] . "',\r\n\t\t\t\trss_site_description = '',\r\n\t\t\t\trss_site_url = '" . addslashes(get_home_link()) . "',\r\n\t\t\t\trss_rubric_id = 1,\r\n\t\t\t\trss_title_id = 0,\r\n\t\t\t\trss_description_id = 0,\r\n\t\t\t\trss_item_on_page = 10,\r\n\t\t\t\trss_description_lenght = 200\r\n\t\t"); $iid = $AVE_DB->InsertId(); header('Location:index.php?do=modules&action=modedit&mod=rss&moduleaction=edit&cp=' . SESSION . '&id=' . $iid); exit; }
/** * Обработка тега модуля * * @param int $sysblock_id идентификатор системного блока */ function mod_sysblock($sysblock_id) { global $AVE_DB; if (is_numeric($sysblock_id)) { $cache_file = BASE_DIR . '/cache/module/sysblock-' . $sysblock_id . '.cache'; if (!file_exists(dirname($cache_file))) { mkdir(dirname($cache_file), 0766, true); } if (file_exists($cache_file)) { $return = file_get_contents($cache_file); } else { $return = $AVE_DB->Query("\r\n SELECT sysblock_text\r\n FROM " . PREFIX . "_modul_sysblock\r\n WHERE id = '" . $sysblock_id . "'\r\n LIMIT 1\r\n ")->GetCell(); file_put_contents($cache_file, $return); } // парсим остальные теги основного шаблона $search = array('[tag:mediapath]', '[tag:path]', '[tag:home]', '[tag:docid]', '[tag:breadcrumb]'); $replace = array(ABS_PATH . 'templates/' . THEME_FOLDER . '/', ABS_PATH, get_home_link(), get_current_document_id(), get_breadcrumb()); $return = str_replace($search, $replace, $return); $return = preg_replace_callback('/\\[tag:request:(\\d+)\\]/', 'request_parse', $return); // парсим остальные теги основного шаблона eval('?>' . $return . '<?'); } }
/** * Обработка тега системного блока * * @param int $id идентификатор системного блока */ function parse_sysblock($id) { global $AVE_DB, $AVE_Core; $gen_time = microtime(); if (is_array($id)) { $id = $id[1]; } if (is_numeric($id)) { $eval_sysblock = false; if ($id < 0) { $id = abs($id); $eval_sysblock = true; } $cache_file = BASE_DIR . '/cache/sql/sysblock-' . $id . '.cache'; if (!file_exists(dirname($cache_file))) { mkdir(dirname($cache_file), 0766, true); } if (file_exists($cache_file)) { $return = file_get_contents($cache_file); } else { $return = $AVE_DB->Query("\n SELECT sysblock_text\n FROM " . PREFIX . "_sysblocks\n WHERE id = '" . $id . "'\n LIMIT 1\n ")->GetCell(); file_put_contents($cache_file, $return); } // парсим остальные теги основного шаблона $search = array('[tag:mediapath]', '[tag:path]', '[tag:home]', '[tag:docid]', '[tag:breadcrumb]'); $replace = array(ABS_PATH . 'templates/' . THEME_FOLDER . '/', ABS_PATH, get_home_link(), get_current_document_id(), get_breadcrumb()); $return = str_replace($search, $replace, $return); $return = preg_replace_callback('/\\[tag:request:(\\d+)\\]/', 'request_parse', $return); if ($eval_sysblock) { $return = eval2var('?' . '>' . $return . '<' . '?'); } $gen_time = microtime() - $gen_time; $GLOBALS['block_generate'][] = array('SYSBLOCK_' . $id => $gen_time); return $return; } }
$post_time = $article['post_time']; $post = character_limiter(strip_tags($article['description']), 200); ?> <h3><a href="<?php echo $link; ?> "><?php echo $title; ?> </a></h3> <small><?php echo $author; ?> on <?php echo $post_time; ?> </small> <p><?php echo $post; ?> </p><hr/><?php } echo $navigation; ?> <a href="<?php echo get_home_link(); ?> "><?php echo get_title(); ?> </a><br/>Powered by Planetoid</div></body></html>
$_SESSION['user_adminmode'] = 1; } } else { unset($_SESSION['user_adminmode']); } header('Location:' . get_referer_link()); exit; case 'wys_adm': if (isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'on') { if (check_permission('documents')) { $_SESSION['user_adminmode'] = 1; } } else { unset($_SESSION['user_adminmode']); } header('Location:' . get_home_link()); exit; case 'login': $login->loginUserLogin(); break; case 'logout': $login->loginUserLogout(); break; case 'register': $login->loginNewUserRegister(); break; case 'passwordreminder': $login->loginUserPasswordReminder(); break; case 'passwordchange': $login->loginUserPasswordChange();
/** * Управление учетной записью пользователя * */ function loginUserProfileEdit() { global $AVE_DB, $AVE_Template; if (!isset($_SESSION['user_id']) || !isset($_SESSION['user_pass'])) { header('Location:' . get_home_link()); exit; } $AVE_Template->config_load($this->_lang_file, 'myprofile'); define('MODULE_SITE', $AVE_Template->get_config_vars('LOGIN_CHANGE_DETAILS')); if (isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'update') { $errors = array(); if ($this->_loginFieldIsRequired('login_require_firstname') && empty($_POST['firstname'])) { $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_FN_EMPTY'); } if (preg_match($this->_regex, $_POST['firstname'])) { $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_FIRSTNAME'); } if ($this->_loginFieldIsRequired('login_require_lastname') && empty($_POST['lastname'])) { $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_LN_EMPTY'); } if (preg_match($this->_regex, $_POST['lastname'])) { $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_LASTNAME'); } if (!empty($_POST['street']) && preg_match($this->_regex, $_POST['street'])) { $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_STREET'); } if (!empty($_POST['street_nr']) && preg_match($this->_regex, $_POST['street_nr'])) { $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_HOUSE'); } if (!empty($_POST['zipcode']) && preg_match($this->_regex, $_POST['zipcode'])) { $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_ZIP'); } if (!empty($_POST['city']) && preg_match($this->_regex, $_POST['city'])) { $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_TOWN'); } if (!empty($_POST['phone']) && preg_match($this->_regex, $_POST['phone'])) { $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_PHONE'); } if (!empty($_POST['telefax']) && preg_match($this->_regex, $_POST['telefax'])) { $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_FAX'); } if (!preg_match($this->_regex_email, $_POST['email'])) { $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_EMAIL'); } else { $exist = $AVE_DB->Query("\r\n\t\t\t\t\tSELECT 1\r\n\t\t\t\t\tFROM " . PREFIX . "_users\r\n\t\t\t\t\tWHERE Id != '" . (int) $_SESSION['user_id'] . "'\r\n\t\t\t\t\tAND email = '" . $_POST['email'] . "'\r\n\t\t\t\t")->NumRows(); if ($exist) { $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_INUSE'); } } if (!empty($_POST['birthday']) && !preg_match($this->_regex_geb, $_POST['birthday'])) { $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_BIRTHDAY'); } if (!empty($_POST['birthday'])) { $birthday = preg_split('/[[:punct:]| ]/', $_POST['birthday']); if (empty($birthday[0]) || $birthday[0] > 31) { $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_DATE'); } if (empty($birthday[1]) || $birthday[1] > 12) { $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_MONTH'); } if (empty($birthday[2]) || $birthday[2] > date("Y") || $birthday[2] < date("Y") - 100) { $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_YEAR'); } if (empty($errors)) { $_POST['birthday'] = $birthday[0] . '.' . $birthday[1] . '.' . $birthday[2]; } } if (!empty($errors)) { $AVE_Template->assign('errors', $errors); } else { $AVE_DB->Query("\r\n\t\t\t\t\tUPDATE " . PREFIX . "_users\r\n\t\t\t\t\tSET\r\n\t\t\t\t\t\temail = '" . $_POST['email'] . "',\r\n\t\t\t\t\t\tstreet = '" . $_POST['street'] . "',\r\n\t\t\t\t\t\tstreet_nr = '" . $_POST['street_nr'] . "',\r\n\t\t\t\t\t\tzipcode = '" . $_POST['zipcode'] . "',\r\n\t\t\t\t\t\tcity = '" . $_POST['city'] . "',\r\n\t\t\t\t\t\tphone = '" . $_POST['phone'] . "',\r\n\t\t\t\t\t\ttelefax = '" . $_POST['telefax'] . "',\r\n\t\t\t\t\t\tfirstname = '" . $_POST['firstname'] . "',\r\n\t\t\t\t\t\tlastname = '" . $_POST['lastname'] . "',\r\n\t\t\t\t\t\tcountry = '" . $_POST['country'] . "',\r\n\t\t\t\t\t\tbirthday = '" . $_POST['birthday'] . "',\r\n\t\t\t\t\t\tcompany = '" . $_POST['company'] . "'\r\n\t\t\t\t\tWHERE\r\n\t\t\t\t\t\tId = '" . (int) $_SESSION['user_id'] . "'\r\n\t\t\t\t\tAND\r\n\t\t\t\t\t\tpassword = '******'user_pass']) . "'\r\n\t\t\t\t"); $AVE_Template->assign('password_changed', 1); } } $row = $AVE_DB->Query("\r\n\t\t\tSELECT *\r\n\t\t\tFROM " . PREFIX . "_users\r\n\t\t\tWHERE Id = '" . (int) $_SESSION['user_id'] . "'\r\n\t\t\tLIMIT 1\r\n\t\t")->FetchAssocArray(); $AVE_Template->assign('available_countries', get_country_list(1)); $AVE_Template->assign('row', $row); $this->_loginRequiredFieldFetch(); define('MODULE_CONTENT', $AVE_Template->fetch($this->_tpl_dir . 'myprofile.tpl')); }
/** * Метод, предназанченный для сборки всей страницы в единое целое. * * @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; }
} else { $avatar = "http://www.gravatar.com/avatar.php?size=50&gravatar_id=" . bin2hex(md5(trim($_POST['email']), true)); } sql_query("INSERT INTO feeds VALUES (" . sql_autoid('feeds') . "," . "'" . sql_escape($_POST['url']) . "'," . "'" . sql_escape($_POST['email']) . "'," . "'{$avatar}'," . "0," . "'" . date('Y-m-d') . "');"); sql_query("INSERT INTO users VALUES (" . sql_autoid('users') . "," . "'" . sql_escape($_POST['email']) . "'," . "'" . md5($_POST['pass']) . "'," . "'" . sql_escape($_POST['name']) . "'," . "'feed_owner');"); sleep(1); refresh_cache(); if (!sql_query) { $error = "An error occured. Try again later."; } else { $msg = "Your submission has been saved, you will be notified about when (if) your feed will be approved."; $to_notifiy = get_setting_value('reg_notifiy'); if ($to_notifiy == 'on') { $admin_mail = sql_query("SELECT email FROM users WHERE role_level='admin';"); $admin_mail = $admin_mail['email']; $mail_cont = nl2br("Someone has submited feed on <a href=\"" . get_home_link() . "\">" . get_title() . "</a> with following details:\n\t\t\t\t\t\n\t\t\t\t\tFeed URL: {$_POST['url']}\n\t\t\t\t\tSubmitters email: <a href=\"mailto:{$_POST['email']}\">{$_POST['email']}</a>\n\t\t\t\t\t---\n\t\t\t\t\tPowered by <a href=\"http://planetoid-project.org\">Planetoid</a>" . PLANETOID_VERSION . " - Generated on " . date('r')); mail($admin_mail, "Planetoid adminstration", $mail_cont, "From: Planetoid <*****@*****.**> \r\n" . "Content-Type: text/html; charset=UTF-8\r\n" . "X-Mailer: PHP/" . phpversion()); } } // sql_close(); } else { header("Location: {$_POST['r_to']}"); } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head profile="http://gmpg.org/xfn/11"> <meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8" /> <title><?php echo get_title();
/** * Метод, предназначенный для записи в БД нового комментария. * * @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; }
include '../inc/simplepie/simplepie.inc'; include '../config.php'; include '../planetoid.php'; if ($ajax) { include 'feeds-functions.php'; } $ids = explode(',', $ids); for ($n = 0; $n < count($ids); $n++) { $id = sql_escape($ids[$n]); sql_query("UPDATE feeds SET approved=1 WHERE id='" . sql_escape($id) . "';"); $curr_feed_d = sql_action("SELECT * FROM feeds WHERE id='" . sql_escape($id) . "';"); $mail = $curr_feed_d['email']; $admin_mail = sql_query("SELECT email FROM users WHERE role_level='admin';"); $admin_mail = $admin_mail['email']; if ($mail != $admin_mail) { $mail_cont = nl2br("Your feed on <a href=\"" . get_home_link() . "\">" . get_title() . "</a> has been approved.\n\t\t\t\t\t---\n\t\t\t\t\tPowered by <a href=\"http://project-planetoid.org\">Planetoid</a> " . PLANETOID_VERSION . " - Generated on " . date('r')); mail($mail, "Planetoid administration", $mail_cont, "From: Planetoid <*****@*****.**> \r\n" . "Content-Type: text/html; charset=UTF-8\r\n" . "X-Mailer: PHP/" . phpversion()); } if ($ajax) { $manage = generate_manage_links($id, 1); $manage = $manage['manage']; echo "\$('#table-row-{$id} td:first img').remove();"; echo "\$('#table-row-{$id} td:last').html('{$manage}').parent().Highlight(1000,'#64b31b');"; } } if (!$ajax) { header("Location: {$_GET['r_to']}"); } add_feed($curr_feed_d); refresh_cache(); sql_close();
/** * Детальная информация о товаре * * @param int $product_id идентификатор товара */ function showDetails($product_id) { global $AVE_DB, $AVE_Template; if (!is_numeric($product_id)) { exit; } $link = $this->_shopRewrite(sprintf($this->_link_product_detail, $product_id, (int) $_REQUEST['categ'], (int) $_REQUEST['navop'])); if (Kommentare == 1 && isset($_REQUEST['sendcomment']) && $_REQUEST['sendcomment'] == 1 && (isset($_SESSION['user_id']) || $this->_getShopSetting('KommentareGast'))) { if (!isset($_SESSION['user_id']) && isset($_COOKIE['shoppid_' . $product_id])) { header('Location:' . $link); exit; } $num = 0; if (isset($_SESSION['user_id'])) { $num = $AVE_DB->Query("\r\n\t\t\t\t\tSELECT 1\r\n\t\t\t\t\tFROM " . PREFIX . "_modul_shop_artikel_kommentare\r\n\t\t\t\t\tWHERE Benutzer = '" . $_SESSION['user_id'] . "'\r\n\t\t\t\t\tAND ArtId = '" . $product_id . "'\r\n\t\t\t\t")->NumRows(); } if (!$num) { setcookie('shoppid_' . $product_id, '1', time() + 3600 * 3600); $AVE_DB->Query("\r\n\t\t\t\t\tINSERT INTO " . PREFIX . "_modul_shop_artikel_kommentare\r\n\t\t\t\t\tSET\r\n\t\t\t\t\t\tArtId = '" . $product_id . "',\r\n\t\t\t\t\t\tBenutzer = '" . (isset($_SESSION['user_id']) ? $_SESSION['user_id'] : 0) . "',\r\n\t\t\t\t\t\tDatum = '" . time() . "',\r\n\t\t\t\t\t\ttitle = '" . $_REQUEST['ATitel'] . "',\r\n\t\t\t\t\t\tcomment_text = '" . $_REQUEST['AKommentar'] . "',\r\n\t\t\t\t\t\tWertung = '" . ((int) $_REQUEST['AWertung'] > 5 || (int) $_REQUEST['AWertung'] < 1 ? 3 : (int) $_REQUEST['AWertung']) . "',\r\n\t\t\t\t\t\tPublik = 0\r\n\t\t\t\t"); $SystemMail = get_settings('mail_from'); $SystemMailName = get_settings('mail_from_name'); $URLAdmin = get_home_link() . 'admin/index.php?do=modules&action=modedit&mod=shop&moduleaction=edit_comments&pop=1&Id=' . $product_id; $Text = $GLOBALS['mod']['config_vars']['CommentATextMail']; $Text = str_replace('%N%', "\n", $Text); $Text = str_replace('%URL%', $link, $Text); $Text = str_replace('%URLADMIN%', $URLAdmin, $Text); send_mail($SystemMail, $Text . stripslashes($_REQUEST['AKommentar']), $GLOBALS['mod']['config_vars']['CommentASubject'], $SystemMail, $SystemMailName, 'text'); } header('Location:' . $link); exit; } $row = $AVE_DB->Query("\r\n\t\t\tSELECT *\r\n\t\t\tFROM " . PREFIX . "_modul_shop_artikel\r\n\t\t\tWHERE status = '1'\r\n\t\t\tAND Id = '" . $product_id . "'\r\n\t\t\tAND Erschienen <= '" . time() . "'\r\n\t\t")->FetchRow(); $the_nav = $this->_getNavigationPath((int) $_REQUEST['categ'], '', 1, (int) $_REQUEST['navop']); $AVE_Template->assign('topnav', $the_nav); $AVE_Template->assign('StPrices', $this->_getStPrices($product_id)); $row = $this->_globalProductInfo($row); $MultiImages = array(); $sql_bilder = $AVE_DB->Query("\r\n\t\t\tSELECT *\r\n\t\t\tFROM " . PREFIX . "_modul_shop_artikel_bilder\r\n\t\t\tWHERE ArtId = '" . $row->Id . "'\r\n\t\t"); while ($row_bilder = $sql_bilder->FetchRow()) { $bild_typ = mb_strtolower(mb_substr($row_bilder->Bild, -4)); switch ($bild_typ) { case 'jpeg': case '.jpe': case 'jpg': default: $row_bilder->endung = 'jpg'; break; case '.png': $row_bilder->endung = 'png'; break; case '.gif': $row_bilder->endung = 'gif'; break; } if (file_exists(BASE_DIR . '/modules/shop/uploads/' . $row_bilder->Bild)) { array_push($MultiImages, $row_bilder); } } $row->MultiImages = $MultiImages; $AVE_Template->assign('row', $row); if (is_object($row)) { $AVE_Template->assign('equalProducts', $this->_equalProducts($row->Schlagwoerter)); $AVE_Template->assign('Variants', $this->_getVariants($row->KatId, $row->Id)); if (isset($_SESSION['Product']) && isset($_SESSION['Product'][$row->Id])) { $AVE_Template->assign('InBasket', 1); } } // Sind Rezensionen erlaubt ? if (Kommentare == 1) { $sql_w = $AVE_DB->Query("\r\n\t\t\t\tSELECT\r\n\t\t\t\t\tROUND(AVG(Wertung)) AS Proz,\r\n\t\t\t\t\tCOUNT(*) AS Anz\r\n\t\t\t\tFROM " . PREFIX . "_modul_shop_artikel_kommentare\r\n\t\t\t\tWHERE Publik = 1\r\n\t\t\t\tAND ArtId = '" . $product_id . "'\r\n\t\t\t"); $row_w = $sql_w->FetchRow(); // $sql_a = $AVE_DB->Query(" // SELECT Id // FROM " . PREFIX . "_modul_shop_artikel_kommentare // WHERE Publik = 1 // AND ArtId = '" . $product_id . "' // "); // $num_a = $sql_a->NumRows(); // // $row_w->Anz = $num_a; // @$row_w->Proz = round($row_w->Wertung / $num_a); $AVE_Template->assign('rez', $row_w); $AVE_Template->assign('AllowComments', 1); $AVE_Template->assign('Comments', $this->_fetchArticleComments()); if (isset($_SESSION['user_id']) || $this->_getShopSetting('KommentareGast')) { $AVE_Template->assign('CanComment', 1); } } $tpl_out = $AVE_Template->fetch($GLOBALS['mod']['tpl_dir'] . $this->_shop_product_detail_tpl); $tpl_out = $this->_shopRewrite($tpl_out); define('MODULE_CONTENT', $tpl_out); define('MODULE_SITE', $GLOBALS['mod']['config_vars']['PageName'] . $GLOBALS['mod']['config_vars']['PageSep'] . @$row->ArtName); define('MODULE_DESCRIPTION', $row->ProdDescription); define('MODULE_KEYWORDS', $row->ProdKeywords); }
function planetoid_feed() { echo "\t\t" . link_to_feed(get_home_link() . '/feed.php', get_title(), 'rss') . "\n"; }
exit(0); } if ($_GET['lost_pass'] == 'true') { $lost_pass = true; } else { $lost_pass = false; } if ($_POST['restore_pass'] == 'true') { $current_pass = sql_action("SELECT pass FROM users WHERE email='" . sql_escape($_POST['email']) . "';"); if ($current_pass) { $new_pass = hash('md5', $current_pass['pass']); $new_pass = substr($new_pass, 0, 6); // echo $new_pass; $new_pass = hash('md5', $new_pass); sql_action("UPDATE users SET pass='******' WHERE email='" . sql_escape($_POST['email']) . "'"); $mail_cont = "Your password has been reset, the new password is: '{$new_pass}'." . "<br/>You can login here: " . "<a href=\"" . get_home_link() . "\">" . get_home_link() . "</a>" . "<br/>---</br/>Powered by <a href=\"http://planetoid-project.org\">Planetoid</a>"; mail($_POST['email'], "Planetoid adminstration", $mail_cont, "From: Planetoid <*****@*****.**> \r\n" . "Content-Type: text/html; charset=UTF-8\r\n" . "X-Mailer: PHP/" . phpversion()); $error = "New password has been sent to your email."; } else { $error = 'There is no user with this email, try again.'; } } if (isset($_POST['email']) && isset($_POST['pass']) && strlen($_POST['email']) + strlen($_POST['email']) != 0 && $_POST['action'] == 'login') { $user_props = sql_action("SELECT * FROM users WHERE email='" . sql_escape($_POST['email']) . "' AND pass='******'pass'])) . "';"); if (isset($user_props['id'])) { /* Just a check if SQL query did retrun any result */ $_SESSION['uid'] = $user_props['id']; $_SESSION['ulevel'] = $user_props['role_level']; header('Location: admin/'); } else { $error = 'Wrong email or password.';
function get_referer_link() { static $link = null; if ($link === null) { if (isset($_SERVER['HTTP_REFERER'])) { $link = parse_url($_SERVER['HTTP_REFERER']); $link = trim($link['host']) == $_SERVER['SERVER_NAME']; } $link = $link === true ? $_SERVER['HTTP_REFERER'] : get_home_link(); } return $link; }
/** * Метод, предназанченный для сборки всей страницы в единое целое. * * @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 $reply признак ответа на Заметку */ function documentRemarkNew($document_id = 0, $reply = 0) { global $AVE_DB, $AVE_Template; // Если id документа не число или 0, прерываем выполнение if (!(is_numeric($document_id) && $document_id > 0)) { exit; } // Если в запросе пришел параметр на Сохранение if (isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'save') { // Если пользователь оставил комментарий и у него имеются права и это не ответ, а новая заметка, тогда if (!empty($_REQUEST['remark_text']) && check_permission('remarks') && empty($_REQUEST['reply'])) { // Выполняем запрос к БД на добавление новой заметки для документа $AVE_DB->Query("\n\t\t\t\t\tINSERT " . PREFIX . "_document_remarks\n\t\t\t\t\tSET\n\t\t\t\t\t\tdocument_id = '" . $document_id . "',\n\t\t\t\t\t\tremark_title = '" . clean_no_print_char($_REQUEST['remark_title']) . "',\n\t\t\t\t\t\tremark_text = '" . substr(clean_no_print_char($_REQUEST['remark_text']), 0, $this->_max_remark_length) . "',\n\t\t\t\t\t\tremark_author_id = '" . $_SESSION['user_id'] . "',\n\t\t\t\t\t\tremark_published = '" . time() . "',\n\t\t\t\t\t\tremark_first = '1',\n\t\t\t\t\t\tremark_author_email = '" . $_SESSION['user_email'] . "'\n\t\t\t\t"); } // Выполняем обновление страницы header('Location:index.php?do=docs&action=remark_reply&Id=' . $document_id . '&pop=1&cp=' . SESSION); } // Если это ответ на уже существующую заметку if ($reply == 1) { if (isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'save') { // Если пользователь оставил ответ и имеет на это права if (!empty($_REQUEST['remark_text']) && check_permission('remarks')) { // Выполняем запрос на получение e-mail адреса автора заметки $remark_author_email = $AVE_DB->Query("\n\t\t\t\t\t\tSELECT remark_author_email\n\t\t\t\t\t\tFROM " . PREFIX . "_document_remarks\n\t\t\t\t\t\tWHERE remark_first = '1'\n\t\t\t\t\t\tAND document_id = '" . $document_id . "'\n\t\t\t\t\t")->GetCell(); // Выполняем запрос к БД на добавление заметки в БД $AVE_DB->Query("\n\t\t\t\t\t\tINSERT " . PREFIX . "_document_remarks\n\t\t\t\t\t\tSET\n\t\t\t\t\t\t\tdocument_id = '" . $document_id . "',\n\t\t\t\t\t\t\tremark_title = '" . clean_no_print_char($_REQUEST['remark_title']) . "',\n\t\t\t\t\t\t\tremark_text = '" . substr(clean_no_print_char($_REQUEST['remark_text']), 0, $this->_max_remark_length) . "',\n\t\t\t\t\t\t\tremark_author_id = '" . $_SESSION['user_id'] . "',\n\t\t\t\t\t\t\tremark_published = '" . time() . "',\n\t\t\t\t\t\t\tremark_first = '0',\n\t\t\t\t\t\t\tremark_author_email = '" . $_SESSION['user_email'] . "'\n\t\t\t\t\t"); } // Формируем сообщение и отправляем письмо автору, с информацией о том, что на его заметку есть ответ $system_mail = get_settings('mail_from'); $system_mail_name = get_settings('mail_from_name'); $link = get_home_link() . 'index.php?do=docs&doc_id=' . $document_id; $body_to_admin = $AVE_Template->get_config_vars('DOC_MAIL_BODY_NOTICE'); $body_to_admin = str_replace('%N%', "\n", $body_to_admin); $body_to_admin = str_replace('%TITLE%', stripslashes($_POST['remark_title']), $body_to_admin); $body_to_admin = str_replace('%USER%', get_username_by_id($_SESSION['user_id']), $body_to_admin); $body_to_admin = str_replace('%LINK%', $link, $body_to_admin); send_mail($remark_author_email, $body_to_admin, $AVE_Template->get_config_vars('DOC_MAIL_SUBJECT_NOTICE'), $system_mail, $system_mail_name, 'text'); // Выполняем обновление страницы header('Location:index.php?do=docs&action=remark_reply&Id=' . $document_id . '&pop=1&cp=' . SESSION); } // Получаем общее количество заметок для документа $num = $AVE_DB->Query("\n\t\t\t\tSELECT COUNT(*)\n\t\t\t\tFROM " . PREFIX . "_document_remarks\n\t\t\t\tWHERE document_id = '" . $document_id . "'\n\t\t\t")->GetCell(); // Определяыем лимит заметок на 1 странице и подсчитываем количество страниц $limit = 10; $seiten = ceil($num / $limit); $start = get_current_page() * $limit - $limit; $answers = array(); // Выполняем запрос к БД на получение заметок с учетом количества на 1 странцу $sql = $AVE_DB->Query("\n\t\t\t\tSELECT *\n\t\t\t\tFROM " . PREFIX . "_document_remarks\n\t\t\t\tWHERE document_id = '" . $document_id . "'\n\t\t\t\tORDER BY Id DESC\n\t\t\t\tLIMIT " . $start . "," . $limit); while ($row = $sql->FetchAssocArray()) { $row['remark_author'] = get_username_by_id($row['remark_author_id']); $row['remark_text'] = nl2br($row['remark_text']); $row['remark_avatar'] = getAvatar($row['remark_author_id'], 40); array_push($answers, $row); } $remark_status = $AVE_DB->Query("\n\t\t\t\tSELECT remark_status\n\t\t\t\tFROM " . PREFIX . "_document_remarks\n\t\t\t\tWHERE document_id = '" . $document_id . "'\n\t\t\t\tAND remark_first = '1'\n\t\t\t")->GetCell(); // Если количество заметок превышает допустимое значение, определенное в переменной $limit, тогда // формируем постраничную навигацию if ($num > $limit) { $page_nav = "<li><a href=\"index.php?do=docs&action=remark_reply&Id=" . $document_id . "&page={s}&pop=1&cp=" . SESSION . "\">{t}</a></li>"; $page_nav = get_pagination($seiten, 'page', $page_nav); $AVE_Template->assign('page_nav', $page_nav); } // Передаем данные в шаблон и отображаем страницу со списком заметок $AVE_Template->assign('remark_status', $remark_status); $AVE_Template->assign('answers', $answers); $AVE_Template->assign('reply', 1); $AVE_Template->assign('formaction', 'index.php?do=docs&action=remark_reply&sub=save&Id=' . $document_id . '&reply=1&cp=' . SESSION); $AVE_Template->assign('content', $AVE_Template->fetch('documents/newremark.tpl')); } else { // В противном случае, если заметок еще нет, открываем форму для добавление заметки $AVE_Template->assign('reply', 1); $AVE_Template->assign('new', 1); $AVE_Template->assign('formaction', 'index.php?do=docs&action=remark&sub=save&Id=' . $document_id . '&cp=' . SESSION); $AVE_Template->assign('content', $AVE_Template->fetch('documents/newremark.tpl')); } }