public function save_payment() { $system_gid = $this->input->post('system_gid', true); if (empty($system_gid)) { $this->system_messages->add_message('error', l('error_empty_system_gid', 'users_payments')); } if ($system_gid) { $user_id = $this->session->userdata('user_id'); $amount = abs(floatval(str_replace(',', '.', $this->input->post('amount', true)))); if (empty($amount)) { $this->system_messages->add_message('error', l('error_empty_amount', 'users_payments')); } elseif (empty($system_gid)) { $this->system_messages->add_message('error', l('error_empty_system_gid', 'users_payments')); } else { $this->load->model('payments/models/Payment_currency_model'); $base_currency = $this->Payment_currency_model->get_currency_default(true); $this->load->helper('payments'); $additional['name'] = l('header_add_funds', 'users_payments'); $additional['lang'] = 'header_add_funds'; $additional['module'] = 'users_payments'; $payment_data = send_payment('account', $user_id, $amount, $base_currency['gid'], $system_gid, $additional, 'form'); if (!empty($payment_data['errors'])) { $this->system_messages->add_message('error', $payment_data['errors']); } if (!empty($payment_data['info'])) { $this->system_messages->add_message('info', $payment_data['info']); } } } $this->load->helper('seo'); $url = rewrite_link('users', 'account', array('action' => 'update')); redirect($url); }
function mod_example() { global $AVE_DB, $AVE_Template; $tpl_dir = BASE_DIR . '/modules/example/templates/'; // Указываем путь до шаблона $AVE_Template->caching = true; $AVE_Template->cache_lifetime = 86400; // Время жизни кэша (1 день) // $AVE_Template->cache_dir = BASE_DIR . '/cache/example'; // Папка для создания кэша // Если нету в кэше, то выполняем запрос if (!$AVE_Template->is_cached('example.tpl')) { // Проверяем, есть ли папка для кэша, если нет (первый раз) — создаем if (!is_file($AVE_Template->cache_dir)) { $oldumask = umask(0); @mkdir($AVE_Template->cache_dir, 0777); umask($oldumask); } $example = array(); // Запрос трех последних документов (ссылка и название) из рубрики с ID 2 и с сортировкой ID по убыванию $sql = $AVE_DB->Query("\r\n\t\t\tSELECT\r\n\t\t\t\tId,\r\n\t\t\t\tdocument_title,\r\n\t\t\t\tdocument_alias\r\n\t\t\tFROM " . PREFIX . "_documents\r\n\t\t\tWHERE Id != 1\r\n\t\t\tAND Id != '" . PAGE_NOT_FOUND_ID . "'\r\n\t\t\tAND rubric_id = 2\r\n\t\t\tAND document_deleted != 1\r\n\t\t\tAND document_status != 0\r\n\t\t\tORDER BY Id DESC\r\n\t\t"); while ($row = $sql->FetchRow()) { $row->document_alias = rewrite_link('index.php?id=' . $row->Id . '&doc=' . (empty($row->document_alias) ? prepare_url($row->document_title) : $row->document_alias)); array_push($example, $row); } // Закрываем соединение $sql->Close(); // Назначаем переменную example для использования в шаблоне $AVE_Template->assign('example', $example); } // Выводим шаблон example.tpl $AVE_Template->display($tpl_dir . 'example.tpl'); $AVE_Template->caching = false; }
public function get_sitemap_urls() { $this->CI->load->helper('seo'); $auth = $this->CI->session->userdata('auth_type'); $block = array(array('name' => l('favourites', 'favourites'), 'link' => rewrite_link('favourites', 'index'), 'clickable' => $auth === 'user', 'items' => array())); return $block; }
/** * Обработка тега модуля * * @param int $id идентификатор рубрики вопросов и ответов */ function mod_faq($id) { global $AVE_Template; $AVE_Template->caching = 1; // Включаем кеширование $AVE_Template->cache_lifetime = -1; // Неограниченное время жизни кэша // $AVE_Template->cache_dir .= '/faq'; // Папка для кеша модуля $tpl_dir = BASE_DIR . '/modules/faq/templates/'; // Путь к шаблону модуля // Если нету в кеше, то начинаем обрабатывать if (!$AVE_Template->is_cached($tpl_dir . 'show_faq.tpl', $id)) { // Проверяем, есть ли папка для кеша, если нет (первый раз) — создаем if (!is_dir($AVE_Template->cache_dir)) { $oldumask = umask(0); @mkdir($AVE_Template->cache_dir, 0777); umask($oldumask); } require_once BASE_DIR . '/modules/faq/class.faq.php'; Faq::faqShow($id); } echo rewrite_link($AVE_Template->fetch($tpl_dir . 'show_faq.tpl', $id)); $AVE_Template->caching = false; // Отключаем кеширование }
public function index($param = 'all', $index = true) { $param = trim(strip_tags($param)); $order = trim(strip_tags($this->input->get_post('order', true))); $direction = trim(strip_tags($this->input->get_post('direction', true))); $media_sorter = array("order" => $order ? $order : 'date_add', "direction" => $direction ? $direction : 'DESC', "links" => array("date_add" => l('field_date_add', 'media'), "views" => l('field_views', 'media'), "comments_count" => l('field_comments_count', 'media'))); $order_by = array($media_sorter['order'] => $media_sorter['direction']); $is_guest = $this->session->userdata("auth_type") != "user"; $this->load->model('Menu_model'); $this->load->helper('seo'); $this->Menu_model->breadcrumbs_set_active(l('header_gallery', 'media'), rewrite_link('media', '')); $this->Menu_model->breadcrumbs_set_active(l($param, 'media')); $seo_data = array(); if ($index) { $this->router->set_method($param); $seo_data['canonical'] = rewrite_link('media', $param, $seo_data, false, null, true); } $this->pg_seo->set_seo_data($seo_data); $this->template_lite->assign('gallery_param', $param); $this->template_lite->assign('media_sorter', $media_sorter); $this->template_lite->assign('order_by', $order_by); $this->template_lite->assign('albums', $this->Media_model->get_albums_select(0)); $this->template_lite->assign("is_guest", $is_guest); $this->template_lite->view('gallery'); }
/** * Функция обработки тега модуля * * @param int $navigation_id - идентификатор меню навигации */ function mod_navigation($navigation_id) { global $AVE_DB, $AVE_Core; static $navigations = array(); $navigation_id = preg_replace('/\\D/', '', $navigation_id); if (isset($navigations[$navigation_id])) { echo $navigations[$navigation_id]; return; } $nav = get_navigations($navigation_id); if (!$nav) { echo 'Menu ', $navigation_id, ' not found'; return; } if (!defined('UGROUP')) { define('UGROUP', 2); } if (!in_array(UGROUP, $nav->navi_user_group)) { return; } if (empty($_REQUEST['module'])) { $curent_doc_id = isset($_GET['id']) && is_numeric($_GET['id']) ? $_GET['id'] : 1; $row_navi = $AVE_DB->Query("\r\n\t\t\tSELECT CONCAT_WS(',', nav.Id, nav.parent_id, nav2.parent_id)\r\n\t\t\tFROM\r\n\t\t\t\t" . PREFIX . "_navigation_items AS nav\r\n\t\t\tJOIN\r\n\t\t\t\t" . PREFIX . "_documents AS doc\r\n\t\t\tLEFT JOIN\r\n\t\t\t\t" . PREFIX . "_navigation_items AS nav2 ON nav2.Id = nav.parent_id\r\n\t\t\tWHERE nav.navi_item_status = 1\r\n\t\t\tAND nav.navi_id = '" . $navigation_id . "'\r\n\t\t\tAND doc.Id = '" . $curent_doc_id . "'\r\n\t\t\tAND (nav.navi_item_link = 'index.php?id=" . $curent_doc_id . "'" . (!empty($AVE_Core->curentdoc->document_alias) && $AVE_Core->curentdoc->Id == $curent_doc_id ? " OR nav.document_alias = '" . $AVE_Core->curentdoc->document_alias . "'" : '') . " OR nav.Id = doc.document_linked_navi_id)\r\n\t\t")->GetCell(); } else { $row_navi = $AVE_DB->Query("\r\n\t\t\tSELECT CONCAT_WS(',', nav.Id, nav.parent_id, nav2.parent_id)\r\n\t\t\tFROM\r\n\t\t\t\t" . PREFIX . "_navigation_items AS nav\r\n\t\t\tLEFT JOIN\r\n\t\t\t\t" . PREFIX . "_navigation_items AS nav2 ON nav2.Id = nav.parent_id\r\n\t\t\tWHERE nav.navi_item_status = '1'\r\n\t\t\tAND nav.navi_id = '" . $navigation_id . "'\r\n\t\t\tAND nav.navi_item_link LIKE 'index.php?module=" . $_REQUEST['module'] . "%%'\r\n\t\t")->GetCell(); } $where_elter = ''; if ($row_navi !== false) { $way = explode(',', $row_navi); if ($nav->navi_expand != 1) { $where_elter = "AND parent_id IN(0," . $row_navi . ")"; } } else { $way = array(''); if ($nav->navi_expand != 1) { $where_elter = "AND parent_id = 0"; } } $nav_items = array(); $sql = $AVE_DB->Query("\r\n\t\tSELECT *\r\n\t\tFROM " . PREFIX . "_navigation_items\r\n\t\tWHERE navi_item_status = '1'\r\n\t\tAND navi_id = '" . $navigation_id . "'\r\n\t\t" . $where_elter . "\r\n\t\tORDER BY navi_item_position ASC\r\n\t"); while ($row_nav_item = $sql->FetchAssocArray()) { $nav_items[$row_nav_item['parent_id']][] = $row_nav_item; } $ebenen = array(1 => array('aktiv' => str_replace('[tag:mediapath]', ABS_PATH . 'templates/' . THEME_FOLDER . '/', $nav->navi_level1active), 'inaktiv' => str_replace('[tag:mediapath]', ABS_PATH . 'templates/' . THEME_FOLDER . '/', $nav->navi_level1)), 2 => array('aktiv' => str_replace('[tag:mediapath]', ABS_PATH . 'templates/' . THEME_FOLDER . '/', $nav->navi_level2active), 'inaktiv' => str_replace('[tag:mediapath]', ABS_PATH . 'templates/' . THEME_FOLDER . '/', $nav->navi_level2)), 3 => array('aktiv' => str_replace('[tag:mediapath]', ABS_PATH . 'templates/' . THEME_FOLDER . '/', $nav->navi_level3active), 'inaktiv' => str_replace('[tag:mediapath]', ABS_PATH . 'templates/' . THEME_FOLDER . '/', $nav->navi_level3))); $END = str_replace('[tag:mediapath]', ABS_PATH . 'templates/' . THEME_FOLDER . '/', $nav->navi_begin); printNavi($END, $ebenen, $way, $navigation_id, $nav_items, $nav); $END .= str_replace('[tag:mediapath]', ABS_PATH . 'templates/' . THEME_FOLDER . '/', $nav->navi_end); $END = rewrite_link($END); $END = preg_replace("/(^[\r\n]*|[\r\n]+)[\\s\t]*[\r\n]+/", "\n", $END); // $END = str_replace(array("\r\n","\n","\r"),'',$END); $END = str_replace(array("\n", "\r"), '', $END); $search = array($nav->navi_level1begin . $nav->navi_level1end, $nav->navi_level2begin . $nav->navi_level2end, $nav->navi_level3begin . $nav->navi_level3end, '</li>' . $nav->navi_level2begin . '<li', '</li>' . $nav->navi_level3begin . '<li', '</li>' . $nav->navi_level1end . '<li', '</li>' . $nav->navi_level2end . '<li', '</li>' . $nav->navi_level1end . $nav->navi_level2end . '<li', '</li>' . $nav->navi_level1end . $nav->navi_level2end . $nav->navi_level3end, '</li>' . $nav->navi_level1end . $nav->navi_level2end, '</li>' . $nav->navi_level2end . $nav->navi_level3end); $replace = array('', '', '', $nav->navi_level2begin . '<li', $nav->navi_level3begin . '<li', '</li>' . $nav->navi_level1end . '</li><li', '</li>' . $nav->navi_level2end . '</li><li', '</li>' . $nav->navi_level1end . '</li>' . $nav->navi_level2end . '</li><li', '</li>' . $nav->navi_level1end . '</li>' . $nav->navi_level2end . '</li>' . $nav->navi_level3end, '</li>' . $nav->navi_level1end . '</li>' . $nav->navi_level2end, '</li>' . $nav->navi_level2end . '</li>' . $nav->navi_level3end); $END = str_replace($search, $replace, $END); $navigations[$navigation_id] = $END; echo $END; }
/** * Функция обработки тега модуля * */ function mod_moredoc() { global $AVE_Core, $AVE_DB, $AVE_Template; require_once BASE_DIR . '/functions/func.modulglobals.php'; set_modul_globals('moredoc'); $AVE_Template->caching = true; // Включаем кеширование $AVE_Template->cache_lifetime = 60 * 60 * 24; // Время жизни кеша 1 день в секундах // $AVE_Template->cache_dir .= '/moredoc'; // Папка для кеша модуля $tpl_dir = BASE_DIR . '/modules/moredoc/templates/'; // Указываем путь к шаблону модуля // Если нету в кеше, то начинаем обрабатывать if (!$AVE_Template->is_cached($tpl_dir . 'moredoc.tpl', $AVE_Core->curentdoc->Id)) { $limit = 5; // Количество связных документов $flagrubric = 1; // Учитывать или нет рубрику документа (0 - нет, 1 - да) $moredoc = array(); // Проверяем, есть ли папка для кеша, если нет (первый раз) — создаем if (!is_dir($AVE_Template->cache_dir)) { $oldumask = umask(0); @mkdir($AVE_Template->cache_dir, 0777); umask($oldumask); } // Получаем ключевые слова, рубрику, извлекаем первое ключевое слово $row = $AVE_DB->Query("\r\n\t\t\tSELECT\r\n\t\t\t\trubric_id,\r\n\t\t\t\tdocument_meta_keywords\r\n\t\t\tFROM " . PREFIX . "_documents\r\n\t\t\tWHERE Id = '" . $AVE_Core->curentdoc->Id . "'\r\n\t\t\tLIMIT 1\r\n\t\t")->FetchRow(); $keywords = explode(',', $row->document_meta_keywords); $keywords = trim($keywords[0]); if ($keywords != '') { $inrubric = $flagrubric ? "AND rubric_id = '" . $row->rubric_id . "'" : ''; $doctime = get_settings('use_doctime') ? "AND document_published <= " . time() . " AND (document_expire = 0 OR document_expire >= " . time() . ")" : ''; // Ищем документы где встречается такое-же слово $sql = $AVE_DB->Query("\r\n\t\t\t\tSELECT\r\n\t\t\t\t\tId,\r\n\t\t\t\t\tdocument_expire,\r\n\t\t\t\t\tdocument_title,\r\n\t\t\t\t\tdocument_alias,\r\n\t\t\t\t\tdocument_meta_description\r\n\t\t\t\tFROM " . PREFIX . "_documents\r\n\t\t\t\tWHERE document_meta_keywords LIKE '" . $keywords . "%'\r\n\t\t\t\tAND Id != 1\r\n\t\t\t\tAND Id != '" . PAGE_NOT_FOUND_ID . "'\r\n\t\t\t\tAND Id != '" . $AVE_Core->curentdoc->Id . "'\r\n\t\t\t\tAND document_status != '0'\r\n\t\t\t\tAND document_deleted != '1'\r\n\t\t\t\t" . $inrubric . "\r\n\t\t\t\t" . $doctime . "\r\n\t\t\t\tORDER BY document_count_view DESC\r\n\t\t\t\tLIMIT " . $limit); while ($row = $sql->FetchRow()) { if ($doctime != '' && time() + $AVE_Template->cache_lifetime > $row->document_expire) { // Изменяем время жизни кеша так что-бы оно не превышало // время окончания публикации попавших в выборку документов $AVE_Template->cache_lifetime = $row->document_expire - time(); } $row->document_link = rewrite_link('index.php?id=' . $row->Id . '&doc=' . (empty($row->document_alias) ? prepare_url($row->document_title) : $row->document_alias)); array_push($moredoc, $row); } // Закрываем соединение $sql->Close(); } // Передаём переменную moredoc в шаблон $AVE_Template->assign('moredoc', $moredoc); } // Выводим шаблон moredoc.tpl $AVE_Template->display($tpl_dir . 'moredoc.tpl', $AVE_Core->curentdoc->Id); $AVE_Template->caching = false; // Отключаем кеширование }
/** * Template_Lite function plugin * */ function tpl_function_seolink($params, &$tpl) { $tpl->CI->load->helper('seo'); if (!empty($params['data'])) { if (is_array($params['data'])) { $data = $params['data']; } else { $data['id'] = $params['data']; } $data = array_merge($data, $params); } else { $data = $params; } unset($data['module'], $data['method'], $data['data']); return rewrite_link($params['module'], $params['method'], $data); }
/** * Постраничная навигация документа * * @param string $text текст многострочной части документа * @return string */ function document_pagination($text) { global $AVE_Core; // IE8 <div style="page-break-after: always"><span style="display: none"> </span></div> // Chrome <div style="page-break-after: always; "><span style="DISPLAY:none"> </span></div> // FF <div style="page-break-after: always;"><span style="display: none;"> </span></div> $pages = preg_split('#<div style="page-break-after:[; ]*always[; ]*"><span style="display:[ ]*none[;]*"> </span></div>#i', $text); $total_page = @sizeof($pages); if ($total_page > 1) { $text = @$pages[get_current_page('artpage') - 1]; $page_nav = ' <a class="pnav" href="index.php?id=' . $AVE_Core->curentdoc->Id . '&doc=' . (empty($AVE_Core->curentdoc->document_alias) ? prepare_url($AVE_Core->curentdoc->document_title) : $AVE_Core->curentdoc->document_alias) . '&artpage={s}' . '">{t}</a> '; $page_nav = get_pagination($total_page, 'artpage', $page_nav, get_settings('navi_box')); $text .= rewrite_link($page_nav); } return $text; }
/** * Метод, предназначенный для вывода контактной формы в публичной части сайта * * @param string $tpl_dir путь к папке с шаблонами * @param string $lang_file путь к языковому файлу * @param int $contact_form_id идентификатор формы * @param int $spam_protect использовать защитный код 1 * @param int $max_upload максимальный размер прикреплённого файла * @param int $fetch вывод в браузер 1 * @return string контактная форма */ function contactFormShow($tpl_dir, $lang_file, $contact_form_id, $spam_protect = null, $max_upload = null, $fetch = '0') { global $AVE_Core, $AVE_DB, $AVE_Template; $contact_form_id = preg_replace('/\\D/', '', $contact_form_id); $AVE_Template->config_load($lang_file); // Получаем всю информацию о данной форме по ее идентификатору $row = $AVE_DB->Query("\r\n\t\t\tSELECT *\r\n\t\t\tFROM " . PREFIX . "_modul_contacts\r\n\t\t\tWHERE Id = '" . $contact_form_id . "'\r\n\t\t")->FetchRow(); // Определяем группы, которым разрешен доступ к данной контактной форме $allowed_groups = array(); if (isset($row->contact_form_allow_group)) { $allowed_groups = explode(',', $row->contact_form_allow_group); } // Если группа пользователя не входит в разрешенный список групп, // фиксируем ошибку и выводим сообщение. if (!in_array($_SESSION['user_group'], $allowed_groups)) { $AVE_Template->assign('no_access', 1); if (isset($row->contact_form_message_noaccess)) { $AVE_Template->assign('contact_form_message_noaccess', $row->contact_form_message_noaccess); } } else { // Определяем ряд переменных для использования в шаблоне $AVE_Template->assign('contact_form_id', $contact_form_id); $AVE_Template->assign('im', $spam_protect === null ? $row->contact_form_antispam : $spam_protect); $AVE_Template->assign('maxupload', $max_upload === null ? $row->contact_form_max_upload : $max_upload); $AVE_Template->assign('send_copy', $row->contact_form_send_copy); // Формируем список получателей данного сообщения (если их несколько) $recievers = array(); if ($row->contact_form_reciever_multi != '') { $e_recievers = explode(';', $row->contact_form_reciever_multi); foreach ($e_recievers as $reciever) { $e_reciever = explode(',', $reciever); array_push($recievers, htmlspecialchars($e_reciever[0], ENT_QUOTES)); } } $AVE_Template->assign('recievers', $recievers); // Если тема сообщения не указана, тогда используем название темы по умолчанию if ($row->contact_form_subject_show == '0' && $row->contact_form_subject_default != '') { $AVE_Template->assign('default_subject', $row->contact_form_subject_default); } // Выполняем запрос к БД на получение списка всех полей формы $fields = array(); $sql = $AVE_DB->Query("\r\n\t\t\t SELECT *\r\n\t\t\t FROM " . PREFIX . "_modul_contact_fields\r\n\t\t\t WHERE contact_field_status = '1'\r\n\t\t\t AND contact_form_id = '" . $contact_form_id . "'\r\n\t\t\t ORDER BY contact_field_position ASC\r\n\t\t "); while ($row = $sql->FetchRow()) { // Определяем тип поля и формируем регулярное выражение // для проверки введённых символов и их количества switch ($row->contact_field_datatype) { // Любые символы case 'anysymbol': $row->field_pattern = $row->contact_field_max_chars != '' ? '^([\\s\\S]{' . $row->contact_field_max_chars . '})' . ($row->contact_field_required != 1 ? '?$' : '{1}$') : ''; break; // Только целые числа // Только целые числа case 'onlydecimal': $row->field_pattern = $row->contact_field_max_chars != '' ? '^(\\d{' . $row->contact_field_max_chars . '})' . ($row->contact_field_required != 1 ? '?$' : '{1}$') : ''; break; // Только буквы // Только буквы case 'onlychars': $row->field_pattern = $row->contact_field_max_chars != '' ? '^(\\D{' . $row->contact_field_max_chars . '})' . ($row->contact_field_required != 1 ? '?$' : '{1}$') : ''; break; // По умолчанию любые символы // По умолчанию любые символы default: $row->field_pattern = $row->contact_field_max_chars != '' ? '^([\\s\\S]{' . $row->contact_field_max_chars . '})' . ($row->contact_field_required != 1 ? '?$' : '{1}$') : ''; break; } // Если тип поля "Выпадающий список", тогда получем все его элементы if ($row->contact_field_type == 'dropdown' && $row->contact_field_default != '') { $value = explode(',', $row->contact_field_default); $row->contact_field_default = $value; } // В имени поля заменяем пробелы на подчерки, и формируем массив данных полей $field_title_ = str_replace(' ', '_', $row->contact_field_title); $row->value = isset($_REQUEST[$field_title_]) ? $_REQUEST[$field_title_] : ''; array_push($fields, $row); } // Перердаем в шаблон массив с данными полей и формируем ссылку для редиректа после отправки $AVE_Template->assign('fields', $fields); $action = rewrite_link('index.php?id=' . $AVE_Core->curentdoc->Id . '&doc=' . (empty($AVE_Core->curentdoc->document_alias) ? prepare_url($AVE_Core->curentdoc->document_title) : $AVE_Core->curentdoc->document_alias)); $AVE_Template->assign('contact_action', $action); } // Возвращаем сформированную контактную форму if ($fetch == 1) { return $AVE_Template->fetch($tpl_dir . 'form.tpl'); } // Отображаем сформированную контактную форму if (file_exists($tpl_dir . 'form-' . $contact_form_id . '.tpl')) { $AVE_Template->display($tpl_dir . 'form-' . $contact_form_id . '.tpl'); } else { $AVE_Template->display($tpl_dir . 'form.tpl'); } }
if ($row_fields->rubric_field_id == $rss_settings->rss_description_id) { if ($rss_settings->rss_description_lenght == 0) { $teaser = explode('<a name="more"></a>', $row_fields->field_value); $rss_item['description'] = $teaser[0]; } else { if (mb_strlen($row_fields->field_value) > $rss_settings->rss_description_lenght) { $rss_item['description'] = mb_substr($row_fields->field_value, 0, $rss_settings->rss_description_lenght) . '…'; } else { $rss_item['description'] = $row_fields->field_value; } } $rss_item['description'] = parse_hide($rss_item['description']); } } $link_doc = !empty($row_doc->document_alias) ? $row_doc->document_alias : prepare_url($row_doc->document_title); $link = rewrite_link('index.php?id=' . $row_doc->Id . '&doc=' . $link_doc); $rss_item['link'] = $rss_settings->rss_site_url . mb_substr($link, mb_strlen(ABS_PATH)); $rss_item['pubDate'] = $row_doc->document_published ? date('r', $row_doc->document_published) : date('r', time()); array_push($rss_items, $rss_item); } } // Ну а тут собственно шлем заголовок, что у нас документ XML и в путь... выводим данные header("Content-Type: application/xml"); header("Cache-Control: no-cache"); header("Pragma: no-cache"); echo '<?xml version="1.0" encoding="utf8"?>'; ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"> <channel> <title><?php
/** * Метод, предназначенный для записи в БД нового комментария. * * @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; }
/** * ВНЕШНИЕ МЕТОДЫ */ function searchResultGet($tpl_dir, $lang_file) { global $AVE_DB, $AVE_Template; $AVE_Template->config_load($lang_file); define('MODULE_SITE', $AVE_Template->get_config_vars('SEARCH_RESULTS')); $stem_words = array(); $tmp = preg_replace('/[^\\x20-\\xFF]|[><!?.,;=-]/', ' ', $_GET['query']); $this->_search_string = trim(preg_replace('/ +/', ' ', stripslashes($tmp))); if (mb_strlen($this->_search_string) > 2) { // экранирование для LIKE $tmp = str_replace('\\', '\\\\', $this->_search_string); $tmp = addcslashes(addslashes($tmp), '%_'); // $tmp = preg_replace('/ +/', ' ', $tmp); $tmp = preg_split('/\\s+/', $tmp); $where = ''; if (sizeof($tmp)) { $_tmp = preg_grep('/^[^\\+|-].{3,}/', $tmp); array_walk($_tmp, array(&$this, '_create_string_like')); // + $__tmp = preg_grep('/^\\+.{3,}/', $tmp); array_walk($__tmp, array(&$this, '_create_string_like'), '+'); // - $___tmp = preg_grep('/^-.{3,}/', $tmp); array_walk($___tmp, array(&$this, '_create_string_like'), '-'); if (!empty($_tmp)) { $where = 'WHERE (' . implode(isset($_REQUEST['or']) && 1 == $_REQUEST['or'] ? ' OR ' : ' AND ', $_tmp) . ')'; if (!empty($__tmp)) { $where .= ' AND ' . implode(' AND ', array_merge($__tmp, $___tmp)); } } elseif (!empty($__tmp)) { $where = 'WHERE ' . implode(' AND ', array_merge($__tmp, $___tmp)); } } $num = 0; if ($where != '') { $type_search = isset($_REQUEST['ts']) && 1 == $_REQUEST['ts']; $limit = $this->_limit; $start = get_current_page() * $limit - $limit; $query_feld = $AVE_DB->Query("\r\n\t\t\t\t\tSELECT SQL_CALC_FOUND_ROWS\r\n\t\t\t\t\t\tdocument_id,\r\n\t\t\t\t\t\tfield_value\r\n\t\t\t\t\tFROM " . PREFIX . "_document_fields\r\n\t\t\t\t\tLEFT JOIN " . PREFIX . "_rubric_fields AS rub\r\n\t\t\t\t\t\tON rubric_field_id = rub.Id\r\n\t\t\t\t\t" . $where . "\r\n\t\t\t\t\tAND rubric_field_type = '" . ($type_search ? 'kurztext' : 'langtext') . "'\r\n\t\t\t\t\tAND document_in_search = '1'\r\n\t\t\t\t\tLIMIT " . $start . "," . $limit); $num = $AVE_DB->Query("SELECT FOUND_ROWS()")->GetCell(); $sw = addslashes(mb_strtolower($this->_search_string)); $exist = $AVE_DB->Query("\r\n\t\t\t\t\tSELECT 1\r\n\t\t\t\t\tFROM " . PREFIX . "_modul_search\r\n\t\t\t\t\tWHERE search_query = '" . $sw . "'\r\n\t\t\t\t\tLIMIT 1\r\n\t\t\t\t")->NumRows(); if ($exist) { $AVE_DB->Query("\r\n\t\t\t\t\t\tUPDATE " . PREFIX . "_modul_search\r\n\t\t\t\t\t\tSET\r\n\t\t\t\t\t\t\tsearch_found = '" . (int) $num . "',\r\n\t\t\t\t\t\t\tsearch_count = search_count+1\r\n\t\t\t\t\t\tWHERE search_query = '" . $sw . "'\r\n\t\t\t\t\t"); } else { $AVE_DB->Query("\r\n\t\t\t\t\t\tINSERT\r\n\t\t\t\t\t\tINTO " . PREFIX . "_modul_search\r\n\t\t\t\t\t\tSET\r\n\t\t\t\t\t\t\tId = '',\r\n\t\t\t\t\t\t\tsearch_found = '" . (int) $num . "',\r\n\t\t\t\t\t\t\tsearch_query = '" . $sw . "',\r\n\t\t\t\t\t\t\tsearch_count = 1\r\n\t\t\t\t\t"); } if ($num > $limit) { $page_nav = " <a class=\"pnav\" href=\"index.php?module=search&query=" . urlencode($this->_search_string) . ($type_search ? '&ts=1' : '') . (isset($_REQUEST['or']) && 1 == $_REQUEST['or'] ? "&or=1" : "") . "&page={s}\">{t}</a> "; $page_nav = get_pagination(ceil($num / $limit), 'page', $page_nav, trim(get_settings('navi_box'))); $AVE_Template->assign('q_navi', $page_nav); } } if ($num > 0) { $modul_search_results = array(); array_walk($this->_stem_words, create_function('&$val', '$val=preg_quote(stripslashes(stripslashes(str_replace("\\"",""",$val))),"/");')); $regex_snapshot = '/.{0,100}[^\\s]*' . implode('[^\\s]*.{0,100}|.{0,100}[^\\s]*', $this->_stem_words) . '[^\\s]*.{0,100}/is'; $regex_highlight = '/[^\\s]*' . implode('[^\\s]*|[^\\s]*', $this->_stem_words) . '[^\\s]*/is'; $doctime = get_settings('use_doctime') ? "AND document_published <= " . time() . " AND (document_expire = 0 OR document_expire >= " . time() . ")" : ''; while ($row_feld = $query_feld->FetchRow()) { $sql = $AVE_DB->Query("\r\n\t\t\t\t\t\tSELECT\r\n\t\t\t\t\t\t\tId,\r\n\t\t\t\t\t\t\tdocument_title,\r\n\t\t\t\t\t\t\tdocument_alias\r\n\t\t\t\t\t\tFROM " . PREFIX . "_documents\r\n\t\t\t\t\t\tWHERE Id = '" . $row_feld->document_id . "'\r\n\t\t\t\t\t\tAND document_deleted = '0'\r\n\t\t\t\t\t\tAND document_status = '1'\r\n\t\t\t\t\t\t" . $doctime); while ($row = $sql->FetchRow()) { $row->Text = $row_feld->field_value; $row->Text = strip_tags($row->Text, $this->_allowed_tags); $fo = array(); preg_match($regex_snapshot, $row->Text, $fo); $row->Text = $type_search ? '' : ' ... '; while (list($key, $val) = @each($fo)) { $row->Text .= $val . ($type_search ? '' : ' ... '); } if (1 == $this->_highlight && !empty($this->_stem_words)) { $row->Text = @preg_replace($regex_highlight, "<span class=\"mod_search_highlight\">\$0</span>", $row->Text); } $row->document_alias = rewrite_link('index.php?id=' . $row->Id . '&doc=' . (empty($row->document_alias) ? prepare_url($row->document_title) : $row->document_alias)); array_push($modul_search_results, $row); } } $AVE_Template->assign('searchresults', $modul_search_results); } else { $AVE_Template->assign('no_results', 1); } } else { $AVE_Template->assign('no_results', 1); } if (!defined('MODULE_CONTENT')) { $AVE_Template->assign('inc_path', BASE_DIR . '/modules/search/templates'); define('MODULE_CONTENT', $AVE_Template->fetch($tpl_dir . 'results.tpl')); } }
/** * Generate news rss * * @return void */ public function rss() { $rss_settings = $this->News_model->get_rss_settings(); $this->load->library('rssfeed'); $current_lang = $this->pg_language->languages[$this->pg_language->current_lang_id]; $this->rssfeed->set_channel(site_url(), $rss_settings["rss_feed_channel_title"], $rss_settings["rss_feed_channel_description"], $current_lang["code"]); if ($rss_settings["rss_feed_image_url"]) { $this->rssfeed->set_image($rss_settings["rss_feed_image_media"]["thumbs"]["rss"], $rss_settings["rss_feed_image_title"], site_url()); } $attrs["where"]["status"] = "1"; if (!$rss_settings["rss_use_feeds_news"]) { $attrs["where"]["feed_id"] = ""; } $news = $this->News_model->get_news_list(1, $rss_settings["rss_news_max_count"], array('date_add' => "DESC"), $attrs); if (!empty($news)) { $this->load->helper('seo'); foreach ($news as $item) { $url = rewrite_link("news", "view", $item); $this->rssfeed->set_item($url, $item["name"], $item["annotation"], $item["date_add"]); } } $this->rssfeed->send(); return; }
function get_sitemap_urls() { $this->CI->load->helper('seo'); $auth = $this->CI->session->userdata('auth_type'); $block = array(); if ('user' === $auth) { $block[] = array('name' => l('header_winks', 'winks'), 'link' => rewrite_link('winks', 'index'), 'clickable' => true); } return $block; }
public function get_sitemap_urls() { $this->CI->load->helper('seo'); $auth = $this->CI->session->userdata("auth_type"); $block = array(); $users_block = array("name" => l('header_profile', 'users'), "link" => rewrite_link('users', 'profile', array('section-code' => 'view', 'section-name' => l('filter_section_view', 'users'))), "clickable" => $auth == "user", "items" => array(array("name" => l('header_login', 'users'), "link" => rewrite_link('users', 'login_form'), "clickable" => !($auth == "user")), array("name" => l('link_edit_account', 'users'), "link" => rewrite_link('users', 'account'), "clickable" => $auth == "user"), array("name" => l('link_edit_profile', 'users'), "link" => rewrite_link('users', 'profile'), "clickable" => $auth == "user"), array("name" => l('header_account_settings', 'users'), "link" => rewrite_link('users', 'settings'), "clickable" => $auth == "user"), array("name" => l('header_my_visits', 'users'), "link" => rewrite_link('users', 'my_visits'), "clickable" => $auth == "user"), array("name" => l('header_my_guests', 'users'), "link" => rewrite_link('users', 'my_guests'), "clickable" => $auth == "user"), array("name" => l('header_perfect_match_results', 'users'), "link" => rewrite_link('users', 'perfect_match'), "clickable" => $auth == "user"), array("name" => l('header_find_people', 'users'), "link" => rewrite_link('users', 'search'), "clickable" => $auth == "user"))); if ($this->CI->pg_module->is_module_installed('banners')) { $users_block['items'][] = array("name" => l('header_my_banners', 'banners'), "link" => site_url() . 'users/account/banners', "clickable" => $auth == "user"); } $users_block['items'][] = array("name" => l('link_logout', 'users'), "link" => site_url() . "users/logout", "clickable" => $auth == "user"); $block[] = $users_block; return $block; }
/** * Return data for sitemap page * * @return array */ public function get_sitemap_urls() { $this->CI->load->helper('seo'); $lang_id = $this->CI->pg_language->current_lang_id; $pages = $this->get_active_pages_list($lang_id, 0); $block = array(); foreach ($pages as $page) { $sub = array(); if (!empty($page["sub"])) { foreach ($page["sub"] as $sub_page) { $sub[] = array("name" => $sub_page["title"], "link" => rewrite_link('content', 'view', $sub_page), "clickable" => true); } } $block[] = array("name" => $page["title"], "link" => rewrite_link('content', 'view', $page), "clickable" => true, "items" => $sub); } return $block; }
/** * Обработка тега запроса. * Возвращает список документов удовлетворяющих параметрам запроса * оформленный с использованием шаблона * * @param int $id идентификатор запроса * @return string */ function request_parse($id) { global $AVE_Core, $AVE_DB, $request_documents; $return = ''; if (is_array($id)) { $id = $id[1]; } $row_ab = $AVE_DB->Query("\r\n\t\tSELECT *\r\n\t\tFROM " . PREFIX . "_request\r\n\t\tWHERE Id = '" . $id . "'\r\n\t")->FetchRow(); if (is_object($row_ab)) { $ttl = (int) $row_ab->request_cache_lifetime; $limit = $row_ab->request_items_per_page < 1 ? 1 : $row_ab->request_items_per_page; $main_template = $row_ab->request_template_main; $item_template = $row_ab->request_template_item; $request_order_by = $row_ab->request_order_by; $request_asc_desc = $row_ab->request_asc_desc; $request_order = $request_order_by . " " . $request_asc_desc; $request_order_fields = ''; $request_order_tables = ''; if ($row_ab->request_order_by_nat) { $request_order_tables = "LEFT JOIN " . PREFIX . "_document_fields AS s" . $row_ab->request_order_by_nat . "\r\n\t\t\t ON (s" . $row_ab->request_order_by_nat . ".document_id = a.Id and s" . $row_ab->request_order_by_nat . ".rubric_field_id=" . $row_ab->request_order_by_nat . ")"; $request_order_fields = "s" . $row_ab->request_order_by_nat . ".field_value, "; $request_order = "s" . $row_ab->request_order_by_nat . ".field_value " . $row_ab->request_asc_desc; } $doctime = get_settings('use_doctime') ? "AND a.document_published <= UNIX_TIMESTAMP() AND\r\n \t\t \t(a.document_expire = 0 OR a.document_expire >=UNIX_TIMESTAMP())" : ''; $where_cond = empty($_POST['req_' . $id]) && empty($_SESSION['doc_' . $AVE_Core->curentdoc->Id]['req_' . $id]) ? unserialize($row_ab->request_where_cond) : unserialize(request_get_condition_sql_string($row_ab->Id)); $where_cond['from'] = str_replace('%%PREFIX%%', PREFIX, $where_cond['from']); $where_cond['where'] = str_replace('%%PREFIX%%', PREFIX, $where_cond['where']); if ($row_ab->request_show_pagination == 1) { if (!empty($AVE_Core->install_modules['comment']->Status)) { $num = $AVE_DB->Query(eval2var(" ?> \r\n\t\t\t\t\tSELECT COUNT(*)\r\n\t\t\t\t\tFROM \r\n\t\t\t\t\t" . ($where_cond['from'] ? $where_cond['from'] : '') . "\r\n\t\t\t\t\t" . PREFIX . "_documents AS a\r\n\t\t\t\t\tWHERE\r\n\t\t\t\t\t\ta.Id != '1'\r\n\t\t\t\t\tAND a.Id != '" . PAGE_NOT_FOUND_ID . "'\r\n\t\t\t\t\tAND a.Id != '" . get_current_document_id() . "'\r\n\t\t\t\t\tAND a.rubric_id = '" . $row_ab->rubric_id . "'\r\n\t\t\t\t\tAND a.document_deleted != '1'\r\n\t\t\t\t\tAND a.document_status != '0'\r\n\t\t\t\t\t" . $where_cond['where'] . "\r\n\t\t\t\t\t" . $doctime . "\r\n\t\t\t\t<?php "), $ttl, 'rub_' . $row_ab->rubric_id)->GetCell(); } else { $num = $AVE_DB->Query(eval2var(" ?>\r\n\t\t\t\t\tSELECT COUNT(*)\r\n\t\t\t\t\tFROM \r\n\t\t\t\t\t" . ($where_cond['from'] ? $where_cond['from'] : '') . "\r\n\t\t\t\t\t" . PREFIX . "_documents AS a\r\n\t\t\t\t\tWHERE\r\n\t\t\t\t\t\ta.Id != '1'\r\n\t\t\t\t\tAND a.Id != '" . PAGE_NOT_FOUND_ID . "'\r\n\t\t\t\t\tAND a.Id != '" . get_current_document_id() . "'\r\n\t\t\t\t\tAND a.rubric_id = '" . $row_ab->rubric_id . "'\r\n\t\t\t\t\tAND a.document_deleted != '1'\r\n\t\t\t\t\tAND a.document_status != '0'\r\n\t\t\t\t\t" . $where_cond['where'] . "\r\n\t\t\t\t\t" . $doctime . "\r\n\t\t\t\t<?php "), $ttl, 'rub_' . $row_ab->rubric_id)->GetCell(); } $seiten = ceil($num / $limit); if (isset($_REQUEST['apage']) && is_numeric($_REQUEST['apage']) && $_REQUEST['apage'] > $seiten) { $redirect_link = rewrite_link('index.php?id=' . $AVE_Core->curentdoc->Id . '&doc=' . (empty($AVE_Core->curentdoc->document_alias) ? prepare_url($AVE_Core->curentdoc->document_title) : $AVE_Core->curentdoc->document_alias) . (isset($_REQUEST['artpage']) && is_numeric($_REQUEST['artpage']) ? '&artpage=' . $_REQUEST['artpage'] : '') . (isset($_REQUEST['page']) && is_numeric($_REQUEST['page']) ? '&page=' . $_REQUEST['page'] : '')); header('Location:' . $redirect_link); exit; } $start = get_current_page('apage') * $limit - $limit; } else { $start = 0; } if ($row_ab->request_items_per_page != 0) { $filter_limit = "LIMIT " . $start . "," . $limit; } if (!empty($AVE_Core->install_modules['comment']->Status)) { $q = " ?>\r\n\t\t\t\tSELECT\r\n\t\t\t\t\t" . $request_order_fields . "\r\n\t\t\t\t\ta.Id,\r\n\t\t\t\t\ta.document_title,\r\n\t\t\t\t\ta.document_alias,\r\n\t\t\t\t\ta.document_author_id,\r\n\t\t\t\t\ta.document_count_view,\r\n\t\t\t\t\ta.document_published,\r\n\t\t\t\t\tCOUNT(b.document_id) AS nums\r\n\t\t\t\tFROM\r\n\t\t\t\t\t" . ($where_cond['from'] ? $where_cond['from'] : '') . "\r\n\t\t\t\t\t" . PREFIX . "_documents AS a\r\n\t\t\t\tLEFT JOIN\r\n\t\t\t\t\t" . PREFIX . "_modul_comment_info AS b\r\n\t\t\t\t\t\tON b.document_id = a.Id\r\n\t\t\t\t " . ($request_order_tables > '' ? $request_order_tables : '') . "\t\r\n\t\t\t\tWHERE\r\n\t\t\t\t\ta.Id != '1'\r\n\t\t\t\tAND a.Id != '" . PAGE_NOT_FOUND_ID . "'\r\n\t\t\t\tAND a.Id != '" . get_current_document_id() . "'\r\n\t\t\t\tAND a.rubric_id = '" . $row_ab->rubric_id . "'\r\n\t\t\t\tAND a.document_deleted != '1'\r\n\t\t\t\tAND a.document_status != '0'\r\n\t\t\t\t" . $where_cond['where'] . "\r\n\t\t\t\t" . $doctime . "\r\n\t\t\t\tGROUP BY a.Id\r\n\t\t\t\tORDER BY " . $request_order . "\r\n\t\t\t\t" . $filter_limit . " <?php "; } else { $q = " ?>\r\n\t\t\t\tSELECT\r\n\t\t\t\t\t" . $request_order_fields . "\r\n\t\t\t\t\ta.Id,\r\n\t\t\t\t\ta.document_title,\r\n\t\t\t\t\ta.document_alias,\r\n\t\t\t\t\ta.document_author_id,\r\n\t\t\t\t\ta.document_count_view,\r\n\t\t\t\t\ta.document_published\r\n\t\t\t\tFROM\r\n\t\t\t\t\t" . ($where_cond['from'] ? $where_cond['from'] : '') . "\r\n\t\t\t\t\t\r\n\t\t\t\t\t" . PREFIX . "_documents AS a\r\n\t\t\t\t\t" . ($request_order_tables > '' ? $request_order_tables : "") . "\r\n\t\t\t\tWHERE\r\n\t\t\t\t\ta.Id != '1'\r\n\t\t\t\tAND a.Id != '" . PAGE_NOT_FOUND_ID . "'\r\n\t\t\t\tAND a.Id != '" . get_current_document_id() . "'\r\n\t\t\t\tAND a.rubric_id = '" . $row_ab->rubric_id . "'\r\n\t\t\t\tAND a.document_deleted != '1'\r\n\t\t\t\tAND a.document_status != '0'\r\n\t\t\t\t" . $where_cond['where'] . "\r\n\t\t\t\t" . $doctime . "\r\n\t\t\t\tORDER BY " . $request_order . "\r\n\t\t\t\t" . $filter_limit . " <?php "; } $q = eval2var($q); $q = $AVE_DB->Query($q, $ttl, 'rub_' . $row_ab->rubric_id); if ($q->NumRows() > 0) { $main_template = preg_replace('/\\[tag:if_empty](.*?)\\[\\/tag:if_empty]/si', '', $main_template); $main_template = str_replace(array('[tag:if_notempty]', '[/tag:if_notempty]'), '', $main_template); } else { $main_template = preg_replace('/\\[tag:if_notempty](.*?)\\[\\/tag:if_notempty]/si', '', $main_template); $main_template = str_replace(array('[tag:if_empty]', '[/tag:if_empty]'), '', $main_template); } $page_nav = ''; if ($row_ab->request_show_pagination == 1 && $seiten > 1 && $row_ab->request_items_per_page != 0) { $page_nav = ' <a class="pnav" href="index.php?id=' . $AVE_Core->curentdoc->Id . '&doc=' . (empty($AVE_Core->curentdoc->document_alias) ? prepare_url($AVE_Core->curentdoc->document_title) : $AVE_Core->curentdoc->document_alias) . (isset($_REQUEST['artpage']) && is_numeric($_REQUEST['artpage']) ? '&artpage=' . $_REQUEST['artpage'] : '') . '&apage={s}' . (isset($_REQUEST['page']) && is_numeric($_REQUEST['page']) ? '&page=' . $_REQUEST['page'] : '') . '">{t}</a> '; $page_nav = get_pagination($seiten, 'apage', $page_nav, get_settings('navi_box')); $page_nav = rewrite_link($page_nav); } $rows = array(); $request_documents = array(); while ($row = $q->FetchRow()) { array_push($request_documents, $row->Id); array_push($rows, $row); } $items = ''; foreach ($rows as $row) { $cachefile_docid = BASE_DIR . '/cache/sql/doc_' . $row->Id . '/request-' . $id . '.cache'; if (!file_exists($cachefile_docid)) { $item = preg_replace('/\\[tag:rfld:(\\d+)]\\[(more|esc|[0-9-]+)]/e', "request_get_document_field(\"\$1\", {$row->Id}, \"\$2\")", $item_template); //if(!file_exists(dirname($cachefile_docid)))mkdir(dirname($cachefile_docid),0777,true); //file_put_contents($cachefile_docid,$item); } else { $item = file_get_contents($cachefile_docid); } $link = rewrite_link('index.php?id=' . $row->Id . '&doc=' . (empty($row->document_alias) ? prepare_url($row->document_title) : $row->document_alias)); $item = str_replace('[tag:link]', $link, $item); $item = str_replace('[tag:docid]', $row->Id, $item); $item = str_replace('[tag:doctitle]', $row->document_title, $item); $item = str_replace('[tag:docparent]', $row->document_parent, $item); $item = str_replace('[tag:docdate]', pretty_date(strftime(DATE_FORMAT, $row->document_published)), $item); $item = str_replace('[tag:doctime]', pretty_date(strftime(TIME_FORMAT, $row->document_published)), $item); $item = str_replace('[tag:docauthor]', get_username_by_id($row->document_author_id), $item); $item = str_replace('[tag:docviews]', $row->document_count_view, $item); $item = str_replace('[tag:doccomments]', isset($row->nums) ? $row->nums : '', $item); $items .= $item; } $main_template = str_replace('[tag:pages]', $page_nav, $main_template); $main_template = str_replace('[tag:doctotal]', $seiten * $q->NumRows(), $main_template); $main_template = str_replace('[tag:pagetitle]', $AVE_DB->Query("SELECT document_title FROM " . PREFIX . "_documents WHERE Id = '" . $AVE_Core->curentdoc->Id . "' ")->GetCell(), $main_template); $main_template = str_replace('[tag:docid]', $AVE_Core->curentdoc->Id, $main_template); $main_template = str_replace('[tag:docdate]', pretty_date(strftime(DATE_FORMAT, $AVE_Core->curentdoc->document_published)), $main_template); $main_template = str_replace('[tag:doctime]', pretty_date(strftime(TIME_FORMAT, $AVE_Core->curentdoc->document_published)), $main_template); $main_template = str_replace('[tag:docauthor]', get_username_by_id($AVE_Core->curentdoc->document_author_id), $main_template); $main_template = preg_replace('/\\[tag:dropdown:([,0-9]+)\\]/e', "request_get_dropdown(\"\$1\", " . $row_ab->rubric_id . ", " . $row_ab->Id . ");", $main_template); $return = str_replace('[tag:content]', $items, $main_template); $return = str_replace('[tag:path]', ABS_PATH, $return); $return = str_replace('[tag:mediapath]', ABS_PATH . 'templates/' . THEME_FOLDER . '/', $return); $return = $AVE_Core->coreModuleTagParse($return); } return $return; }
public function _parse_link($item) { $item["module"] = $item["controller"] = $item["method"] = $item["link_out"] = $item["link_in"] = ""; $link = str_replace(site_url(), "", $item["link"]); if (substr($link, 0, 1) == "/") { $link = substr($link, 1); } if (preg_match("/^([a-z]{3,5}:\\/\\/)/i", $link)) { $item["link_out"] = $link; return $item; } $params = explode("/", $link); if ($params[0] == "admin") { $params[1] = !empty($params[1]) ? $params[1] : $this->CI->router->default_controller; $item["controller"] = "admin_" . $params[1]; $item["module"] = $params[1]; $item["method"] = !empty($params[2]) ? $params[2] : "index"; $item["params"] = array_slice($params, 3); $is_admin = true; } else { $params[0] = !empty($params[0]) ? $params[0] : $this->CI->router->default_controller; $item["controller"] = $item["module"] = $params[0]; $item["method"] = !empty($params[1]) ? $params[1] : "index"; $item["params"] = array_slice($params, 2); $is_admin = false; } $item["link_in"] = $item["link"]; if (!empty($item["module"]) && !empty($item["method"]) && $this->CI->pg_module->get_module_by_gid($item["module"])) { $params_str = !empty($item["params"]) ? implode("|", $item["params"]) : ""; $this->CI->load->helper("seo"); $item["link"] = rewrite_link($item["module"], $item["method"], $params_str, $is_admin); } else { $item["link"] = site_url() . $item["link"]; } return $item; }
/** * Авторизация пользователя * */ function loginUserLogin() { global $AVE_Template; if (empty($_SESSION['referer'])) { $referer = get_referer_link(); $_SESSION['referer'] = false === strstr($referer, 'module=login') ? $referer : get_home_link(); } if (!empty($_POST['user_login']) && !empty($_POST['user_pass'])) { $result = user_login($_POST['user_login'], $_POST['user_pass'], 1, (int) (isset($_POST['SaveLogin']) && $_POST['SaveLogin'] == 1)); if ($result === true) { header('Location:' . rewrite_link($_SESSION['referer'])); unset($_SESSION['referer']); exit; } elseif ($result === 3) { header('Location:' . ABS_PATH . 'index.php?module=login&action=register&sub=registerfinal'); exit; } else { unset($_SESSION['user_id'], $_SESSION['user_pass']); $AVE_Template->assign('login', false); } } else { $AVE_Template->assign('login', false); } if ($this->_loginSettingsGet('login_status') == 1) { $AVE_Template->assign('active', 1); } $AVE_Template->config_load($this->_lang_file, 'loginprocess'); if (!defined('MODULE_CONTENT')) { define('MODULE_CONTENT', $AVE_Template->fetch($this->_tpl_dir . 'process.tpl')); } }
/** * Выборка докуметов из БД на основании Месяца, Года и Дня * День необязательный параметр * * @param int $newsarchive_id идентификатор архива * @param int $month месяц * @param int $year год * @param int $day день */ function show_by($newsarchive_id, $month, $year, $day = 0) { global $AVE_DB, $AVE_Template; if (defined('MODULE_CONTENT')) { return; } $assign = array(); $tpl_dir = BASE_DIR . '/modules/newsarchive/templates/'; $lang_file = BASE_DIR . '/modules/newsarchive/lang/' . $_SESSION['user_language'] . '.txt'; $AVE_Template->config_load($lang_file, 'admin'); // Определяем, пришел ли в запросе номер дня $db_day = is_numeric($day) && $day != 0 ? "AND DAYOFMONTH(FROM_UNIXTIME(a.document_published)) = '" . $day . "'" : ''; // Выбираем все параметры для запроса с текущим ID $newsarchive = $AVE_DB->Query("\r\n\t\tSELECT *\r\n\t\tFROM " . PREFIX . "_modul_newsarchive\r\n\t\tWHERE id = '" . (int) $newsarchive_id . "'\r\n\t")->FetchRow(); // Формирование условий сортировки выводимых документов $db_sort = 'ORDER BY a.document_published ASC'; if (isset($_REQUEST['sort'])) { switch ($_REQUEST['sort']) { case 'title': $db_sort = 'ORDER BY a.document_title ASC'; break; case 'title_desc': $db_sort = 'ORDER BY a.document_title DESC'; break; case 'date': $db_sort = 'ORDER BY a.document_published ASC'; break; case 'date_desc': $db_sort = 'ORDER BY a.document_published DESC'; break; case 'rubric': $db_sort = 'ORDER BY b.rubric_title ASC'; break; case 'rubric_desc': $db_sort = 'ORDER BY b.rubric_title DESC'; break; default: $db_sort = 'ORDER BY a.document_published ASC'; break; } } $doctime = get_settings('use_doctime') ? "AND document_published <= " . time() . " AND (document_expire = 0 OR document_expire >= " . time() . ")" : ''; // Выбираем из БД документы. которые соответствуют условиям для запроса и модуля $query = $AVE_DB->Query("\r\n\t\tSELECT\r\n\t\t \ta.Id,\r\n\t\t \ta.rubric_id,\r\n\t\t \ta.document_title,\r\n\t\t \ta.document_alias,\r\n\t\t \ta.document_published,\r\n\t\t \tb.rubric_title\r\n\t \tFROM\r\n\t \t\t" . PREFIX . "_documents as a,\r\n\t \t\t" . PREFIX . "_rubrics as b\r\n\t\tWHERE rubric_id IN (" . $newsarchive->newsarchive_rubrics . ")\r\n\t\tAND MONTH(FROM_UNIXTIME(a.document_published)) = '" . (int) $month . "'\r\n\t\tAND YEAR(FROM_UNIXTIME(a.document_published))= '" . (int) $year . "'\r\n\t\t" . $db_day . "\r\n\t\tAND a.rubric_id = b.Id\r\n\t\tAND a.Id != '" . PAGE_NOT_FOUND_ID . "'\r\n \t\tAND document_deleted != '1'\r\n \t\tAND document_status != '0'\r\n \t\t" . $doctime . "\r\n\t\t" . $db_sort . "\r\n\t"); // Заполняем массив докуметов результатами из БД $documents = array(); while ($doc = $query->FetchRow()) { $doc->document_alias = rewrite_link('index.php?id=' . $doc->Id . '&doc=' . (empty($doc->document_alias) ? prepare_url($doc->document_title) : $doc->document_alias)); array_push($documents, $doc); } // Формируем меню навигации по дням $day_in_month = date('t', mktime(0, 0, 0, (int) $month, 1, (int) $year)); $m_arr = array(null, 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'); $assign['newsarchive'] = $newsarchive; $assign['documents'] = $documents; $assign['days'] = range(1, $day_in_month); $assign['month_name'] = $m_arr[(int) $month]; $assign['year'] = (int) $year; $assign['month'] = (int) $month; $assign['day'] = (int) $day; $AVE_Template->assign($assign); define('MODULE_SITE', $AVE_Template->get_config_vars('ARCHIVE_FROM') . ' ' . $m_arr[(int) $month] . ', ' . (int) $year . ' ' . $AVE_Template->get_config_vars('ARCHIVE_YEAR')); define('MODULE_CONTENT', $AVE_Template->fetch($tpl_dir . 'archive_result.tpl')); }
public function ajax_available_user_activate_in_search() { $return = array('available' => 0, 'content' => '', 'display_login' => 0); if ($this->session->userdata('auth_type') != 'user') { $return['display_login'] = 1; } else { $return = $this->Users_model->service_available_user_activate_in_search_action($this->user_id); if ($return["content_buy_block"] == true) { $this->load->model('services/models/Services_users_model'); $return["content"] = $this->Services_users_model->available_service_block($this->user_id, 'user_activate_in_search_template'); $this->load->helper('seo'); $this->session->set_userdata(array('service_redirect' => rewrite_link('users', 'profile'))); } } exit(json_encode($return)); }
/** * Return data for generating site map * * @return array */ public function get_sitemap_urls() { $this->CI->load->helper('seo'); $auth = $this->CI->session->userdata("auth_type"); $block[] = array("name" => l('header_news', 'news'), "link" => rewrite_link('news', 'index'), "clickable" => true); return $block; }
public function format_list($list) { if (empty($list) || !is_array($list)) { return array(); } $users_ids = array(); foreach ($list as $l) { $users_ids[] = $l['id_contact']; } if ($users_ids) { $this->CI->load->helper('seo'); $this->CI->load->model('Users_model'); $users = $this->CI->Users_model->get_users_list_by_key(null, null, null, array(), $users_ids); $users[0] = $this->CI->Users_model->format_default_user(1); foreach ($list as &$l) { $user = !empty($users[$l['id_contact']]) ? $users[$l['id_contact']] : $users[0]; $l['contact_user'] = array('id' => intval($user['id']), 'output_name' => $user['output_name'], 'age' => !empty($user['age']) ? intval($user['age']) : 0, 'location' => !empty($user['location']) ? $user['location'] : '', 'thumbs' => $user['media']['user_logo']['thumbs'], 'link' => rewrite_link('users', 'view', $user)); } } return $list; }
/** * Рекурсивная функция для формирования меню навигации * * @param object $navi_menu меню (шаблоны, параметры) * @param array $navi_items (пункты по родителям) * @param array $navi_active_way ("активный путь") * @param array $navi_item_tpl (шаблоны пунктов) * @param int $parent (исследуемый родитель, изначально 0 - верхний уровень) * @return string $navi - готовый код навигации */ function printNavi($navi_menu, $navi_items, $navi_active_way, $navi_item_tpl, $parent = 0) { // выясняем уровень $navi_item_level = $navi_items[$parent][0]['navi_item_level']; // собираем каждый пункт в данном родителе -> в переменной $item foreach ($navi_items[$parent] as $row) { // Проверяем пункт меню на принадлежность к "активному пути" и выбираем шаблон $item = in_array($row['Id'], $navi_active_way) ? $navi_item_tpl[$navi_item_level]['active'] : $navi_item_tpl[$navi_item_level]['inactive']; ################### ПАРСИМ ТЕГИ ################### // id @($item = str_replace('[tag:linkid]', $row['Id'], $item)); // название @($item = str_replace('[tag:linkname]', $row['title'], $item)); // ссылка if (strpos($row['navi_item_link'], 'module=') === false && start_with('index.php?', $row['navi_item_link'])) { $item = str_replace('[tag:link]', $row['navi_item_link'] . "&doc=" . (!$row['document_alias'] ? prepare_url($row['title']) : $row['document_alias']), $item); $item = str_ireplace('"//"', '"/"', str_ireplace('///', '/', rewrite_link($item))); } else { $item = str_replace('[tag:link]', $row['navi_item_link'], $item); if (start_with('www.', $row['navi_item_link'])) { $item = str_replace('www.', 'http://www.', $item); } } // target $item = str_replace('[tag:target]', empty($row['navi_item_target']) ? '_self' : $row['navi_item_target'], $item); // описание @($item = str_replace('[tag:desc]', stripslashes($row['navi_item_desc']), $item)); // изображение @($item = str_replace('[tag:img]', stripslashes($row['navi_item_Img']), $item)); @($img = explode(".", $row['navi_item_Img'])); @($row['Img_act'] = $img[0] . "_act." . $img[1]); @($item = str_replace('[tag:img_act]', stripslashes($row['Img_act']), $item)); @($item = str_replace('[tag:img_id]', stripslashes($row['navi_item_Img_id']), $item)); ################### /ПАРСИМ ТЕГИ ################## // Определяем тег для вставки следующего уровня switch ($navi_item_level) { case 1: $tag = '[tag:level:2]'; break; case 2: $tag = '[tag:level:3]'; } // Если есть подуровень, то заново запускаем для него функцию и вставляем вместо тега if (!empty($navi_items[$row['Id']])) { $item_sublevel = printNavi($navi_menu, $navi_items, $navi_active_way, $navi_item_tpl, $row['Id']); $item = @str_replace($tag, $item_sublevel, $item); } else { $item = @str_replace($tag, '', $item); } // Подставляем в переменную навигации готовый пункт if (empty($navi)) { $navi = ''; } $navi .= $item; } // Вставляем все пункты уровня в шаблон уровня switch ($navi_item_level) { case 1: $navi = str_replace("[tag:content]", $navi, $navi_menu->navi_level1begin); break; case 2: $navi = str_replace("[tag:content]", $navi, $navi_menu->navi_level2begin); break; case 3: $navi = str_replace("[tag:content]", $navi, $navi_menu->navi_level3begin); break; } // Возвращаем сформированный уровень return $navi; }
/** * Вывод галереи * * @param string $tpl_dir - путь к папке с шаблонами модуля * @param int $gallery_id - идентификатор галереи * @param int $lim - количество изображений на странице * @param int $ext - признак вывода всех изображений галереи */ function galleryShow($tpl_dir, $gallery_id, $lim, $ext = 0) { global $AVE_DB, $AVE_Template, $AVE_Core; $assign = $images = array(); $row_gs = $AVE_DB->Query("\r\n\t\t\tSELECT *\r\n\t\t\tFROM " . PREFIX . "_modul_gallery\r\n\t\t\tWHERE id = '" . $gallery_id . "'\r\n\t\t")->FetchRow(); $limit = $row_gs->gallery_image_on_page > 0 ? $row_gs->gallery_image_on_page : $this->_default_limit_images; $limit = empty($lim) ? $limit : $lim; $limit = $ext != 1 ? $limit : 10000; $start = get_current_page() * $limit - $limit; switch ($row_gs->gallery_orderby) { case 'position': $order_by = "image_position ASC"; break; case 'titleasc': $order_by = "image_title ASC"; break; case 'titledesc': $order_by = "image_title DESC"; break; case 'dateasc': $order_by = "image_date ASC"; break; default: $order_by = "image_date DESC"; break; } $num = $AVE_DB->Query("\r\n\t\t\tSELECT COUNT(*)\r\n\t\t\tFROM " . PREFIX . "_modul_gallery_images\r\n\t\t\tWHERE gallery_id = '" . $gallery_id . "'\r\n\t\t")->GetCell(); $sql = $AVE_DB->Query("\r\n\t\t\tSELECT *\r\n\t\t\tFROM " . PREFIX . "_modul_gallery_images\r\n\t\t\tWHERE gallery_id = '" . $gallery_id . "'\r\n\t\t\tORDER BY " . $order_by . "\r\n\t\t\tLIMIT " . $start . "," . $limit . "\r\n\t\t"); // $num = $AVE_DB->Query("SELECT FOUND_ROWS()")->GetCell(); $folder = rtrim('modules/gallery/uploads/' . $row_gs->gallery_folder, '/') . '/'; while ($row = $sql->FetchAssocArray()) { $row['image_type'] = $this->_galleryFileTypeGet($row['image_file_ext']); $row['image_author'] = get_username_by_id($row['image_author_id']); $row['image_filename'] = rawurlencode($row['image_filename']); if (file_exists(BASE_DIR . '/' . $folder . 'th__' . $row['image_filename'])) { $row['thumbnail'] = ABS_PATH . $folder . 'th__' . $row['image_filename']; } else { $row['thumbnail'] = sprintf("%smodules/gallery/thumb.php?file=%s&type=%s&xwidth=%u&folder=%s", ABS_PATH, $row['image_filename'], $row['image_type'], $row_gs->gallery_thumb_width, $row_gs->gallery_folder); } if ($row_gs->gallery_image_size_show == 1) { $fs = filesize(BASE_DIR . '/' . $folder . $row['image_filename']); $row['image_size'] = round($fs / 1024, 0); } if ($row_gs->gallery_type == 7) { $search = array('[tag:img:id]', '[tag:img:filename]', '[tag:img:thumbnail]', '[tag:img:title]', '[tag:img:description]', '[tag:gal:id]', '[tag:gal:folder]'); $replace = array($row['id'], $row['image_filename'], $row['thumbnail'], htmlspecialchars(empty($row['image_title']) ? $AVE_Template->get_config_vars('NoTitle') : $row['image_title'], ENT_QUOTES), htmlspecialchars(empty($row['image_description']) ? $AVE_Template->get_config_vars('NoDescr') : $row['image_description'], ENT_QUOTES), $row_gs->id, ltrim($row_gs->gallery_folder . '/', '/')); $row['gallery_script'] = str_replace($search, $replace, $row_gs->gallery_script); $row['gallery_image_template'] = str_replace($search, $replace, $row_gs->gallery_image_template); } array_push($images, $row); } // Постраничная навигация if ($num > $limit) { $page_nav = ' <a class="pnav" href="index.php?id=' . $AVE_Core->curentdoc->Id . '&doc=' . (empty($AVE_Core->curentdoc->document_alias) ? prepare_url($AVE_Core->curentdoc->document_title) : $AVE_Core->curentdoc->document_alias) . (isset($_REQUEST['artpage']) && is_numeric($_REQUEST['artpage']) ? '&artpage=' . $_REQUEST['artpage'] : '') . (isset($_REQUEST['apage']) && is_numeric($_REQUEST['apage']) ? '&apage=' . $_REQUEST['apage'] : '') . '&page={s}' . '">{t}</a> '; $page_nav = get_pagination(ceil($num / $limit), 'page', $page_nav, get_settings('navi_box')); $assign['page_nav'] = rewrite_link($page_nav); } $assign['more_images'] = intval(!empty($lim) && $num > $lim); $assign['gallery'] = $row_gs; $assign['images'] = $images; $AVE_Template->assign($assign); $AVE_Template->display($tpl_dir . ($ext == 1 ? 'gallery_popup.tpl' : 'gallery.tpl')); }
public function get_sitemap_urls() { $this->CI->load->helper('seo'); $auth = $this->CI->session->userdata("auth_type"); $block[] = array("name" => l('header_mailbox', 'mailbox'), "link" => rewrite_link('mailbox', 'index'), "clickable" => $auth == "user", "items" => array(array("name" => l('header_mailbox_write', 'mailbox'), "link" => rewrite_link('mailbox', 'write'), "clickable" => $auth == "user"), array("name" => l('header_mailbox_outbox', 'mailbox'), "link" => rewrite_link('mailbox', 'outbox'), "clickable" => $auth == "user"), array("name" => l('header_mailbox_drafts', 'mailbox'), "link" => rewrite_link('mailbox', 'drafts'), "clickable" => $auth == "user"), array("name" => l('header_mailbox_trash', 'mailbox'), "link" => rewrite_link('mailbox', 'trash'), "clickable" => $auth == "user"), array("name" => l('header_mailbox_spam', 'mailbox'), "link" => rewrite_link('mailbox', 'spam'), "clickable" => $auth == "user"))); return $block; }
/** * Метод, предназанченный для сборки всей страницы в единое целое. * * @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; }
/** * Return data for generating sitemap page * * @return array */ public function getSitemapUrls() { $this->CI->load->helper('seo'); //$auth = $this->CI->session->userdata("auth_type"); $block[] = array("name" => l('header_memberships_index', self::MODULE_GID), "link" => rewrite_link(self::MODULE_GID, 'index'), "clickable" => true); return $block; }
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']); } } }