Example #1
0
 /**
  * Создание 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;
 }
Example #2
0
/**
 * Обработка тега модуля
 *
 * @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 . '<?');
    }
}
Example #3
0
/**
 * Обработка тега системного блока
 *
 * @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;
    }
}
Example #4
0
    $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>
Example #5
0
             $_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();
Example #6
0
 /**
  * Управление учетной записью пользователя
  *
  */
 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'));
 }
Example #7
0
 /**
  * Метод, предназанченный для сборки всей страницы в единое целое.
  *
  * @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;
 }
Example #8
0
        } else {
            $avatar = "http://www.gravatar.com/avatar.php?size=50&amp;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();
Example #9
0
 /**
  * Метод, предназначенный для записи в БД нового комментария.
  *
  * @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('&amp;', '&', $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();
Example #11
0
 /**
  * Детальная информация о товаре
  *
  * @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);
 }
Example #12
0
function planetoid_feed()
{
    echo "\t\t" . link_to_feed(get_home_link() . '/feed.php', get_title(), 'rss') . "\n";
}
Example #13
0
    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.';
Example #14
0
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;
}
Example #15
0
 /**
  * Метод, предназанченный для сборки всей страницы в единое целое.
  *
  * @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;
 }
Example #16
0
 /**
  * Метод, предназначенный для просмотра и добавления Заметок к Документу
  *
  * @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'));
     }
 }