mirror of
https://github.com/avecms/AVE.cms.git
synced 2025-01-21 23:10:07 +00:00
Fixes
This commit is contained in:
parent
e510c55b7c
commit
19416872ff
@ -45,3 +45,4 @@ DB_ACTIONS_DELETE_H = "Удалить файл"
|
||||
DB_ACTIONS_DELETE_T = "Вы уверены, что хотите удалить файл резервной копии базы данных?"
|
||||
|
||||
DB_NO_FILES_MESS = "В настоящий момент, нет файлов резервных копий базы данных"
|
||||
DB_BACKUP_FILE_NAME = "Имя файла:"
|
@ -193,4 +193,7 @@ REQUEST_OTHER = "Прочее"
|
||||
REQUEST_SHOW_SQL = "Показать SQL запрос"
|
||||
REQUEST_DOC_ON_PAGE = "Число элементов запроса на странице"
|
||||
REQUEST_PAGES_CURENT = "Номер страницы пагинации"
|
||||
REQUEST_PAGES_TOTAL = "Общее кол-во страниц пагинации"
|
||||
REQUEST_PAGES_TOTAL = "Общее кол-во страниц пагинации"
|
||||
|
||||
// v 3.24
|
||||
REQUEST_COUNT_ITEMS = "Получать кол-во элементов (если не используется постраничная навигация)"
|
@ -1,186 +1,186 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* AVE.cms
|
||||
*
|
||||
* @package AVE.cms
|
||||
* @version 3.x
|
||||
* @filesource
|
||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
|
||||
*
|
||||
* @license GPL v.2
|
||||
*/
|
||||
/**
|
||||
* AVE.cms
|
||||
*
|
||||
* @package AVE.cms
|
||||
* @version 3.x
|
||||
* @filesource
|
||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
|
||||
*
|
||||
* @license GPL v.2
|
||||
*/
|
||||
|
||||
if (!defined('ACP'))
|
||||
{
|
||||
header('Location:index.php');
|
||||
exit;
|
||||
}
|
||||
if (!defined('ACP'))
|
||||
{
|
||||
header('Location:index.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
global $AVE_Template;
|
||||
global $AVE_Template;
|
||||
|
||||
require(BASE_DIR . '/class/class.docs.php');
|
||||
require(BASE_DIR . '/class/class.settings.php');
|
||||
$AVE_Settings = new AVE_Settings;
|
||||
$AVE_Document = new AVE_Document;
|
||||
require(BASE_DIR . '/class/class.docs.php');
|
||||
require(BASE_DIR . '/class/class.settings.php');
|
||||
$AVE_Settings = new AVE_Settings;
|
||||
$AVE_Document = new AVE_Document;
|
||||
|
||||
$AVE_Template->config_load(BASE_DIR . '/admin/lang/' . $_SESSION['admin_language'] . '/settings.txt','settings');
|
||||
$AVE_Template->config_load(BASE_DIR . '/admin/lang/' . $_SESSION['admin_language'] . '/settings.txt','settings');
|
||||
|
||||
switch($_REQUEST['action'])
|
||||
{
|
||||
case '':
|
||||
switch ($_REQUEST['sub'])
|
||||
{
|
||||
case '':
|
||||
if(check_permission_acp('gen_settings'))
|
||||
switch($_REQUEST['action'])
|
||||
{
|
||||
case '':
|
||||
switch ($_REQUEST['sub'])
|
||||
{
|
||||
$AVE_Settings->settingsShow();
|
||||
break;
|
||||
}
|
||||
|
||||
case 'case':
|
||||
if(check_permission_acp('gen_settings_more'))
|
||||
{
|
||||
$AVE_Settings->settingsCase();
|
||||
break;
|
||||
}
|
||||
|
||||
case 'save':
|
||||
if (isset($_REQUEST['more'])) {
|
||||
if(check_permission_acp('gen_settings_more')) $AVE_Settings->settingsCase();
|
||||
} else {
|
||||
if(check_permission_acp('gen_settings')) $AVE_Settings->settingsSave();
|
||||
}
|
||||
break;
|
||||
|
||||
case 'countries':
|
||||
if(check_permission_acp('gen_settings_countries'))
|
||||
{
|
||||
if (isset($_REQUEST['save']) && $_REQUEST['save'] == 1)
|
||||
case '':
|
||||
if(check_permission_acp('gen_settings'))
|
||||
{
|
||||
$AVE_Settings->settingsCountriesSave();
|
||||
|
||||
header('Location:index.php?do=settings&sub=countries&cp=' . SESSION);
|
||||
exit;
|
||||
}
|
||||
$AVE_Settings->settingsCountriesList();
|
||||
break;
|
||||
}
|
||||
|
||||
case 'language':
|
||||
if(check_permission_acp('gen_settings_languages'))
|
||||
{
|
||||
if(isset($_REQUEST['func'])){
|
||||
switch($_REQUEST['func'])
|
||||
{
|
||||
case 'default':
|
||||
if(isset($_REQUEST['Id'])){
|
||||
$exists=$AVE_DB->Query("SELECT Id FROM ".PREFIX."_settings_lang WHERE Id=".(int)$_REQUEST['Id'])->GetCell();
|
||||
if($exists){
|
||||
$AVE_DB->Query("UPDATE ".PREFIX."_settings_lang SET lang_default=0");
|
||||
$AVE_DB->Query("UPDATE ".PREFIX."_settings_lang SET lang_default=1 WHERE Id=".(int)$_REQUEST['Id']." LIMIT 1");
|
||||
}
|
||||
}
|
||||
header('Location:index.php?do=settings&sub=language&cp=' . SESSION);
|
||||
exit;
|
||||
|
||||
case 'on':
|
||||
if(isset($_REQUEST['Id'])){
|
||||
$AVE_DB->Query("UPDATE ".PREFIX."_settings_lang SET lang_status=1 WHERE Id=".(int)$_REQUEST['Id']);
|
||||
}
|
||||
header('Location:index.php?do=settings&sub=language&cp=' . SESSION);
|
||||
exit;
|
||||
|
||||
case 'off':
|
||||
if(isset($_REQUEST['Id'])){
|
||||
$AVE_DB->Query("UPDATE ".PREFIX."_settings_lang SET lang_status=0 WHERE Id=".(int)$_REQUEST['Id']);
|
||||
}
|
||||
header('Location:index.php?do=settings&sub=language&cp=' . SESSION);
|
||||
exit;
|
||||
|
||||
case 'save':
|
||||
$AVE_Settings->settingsLanguageEditSave();
|
||||
exit;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$AVE_Settings->settingsLanguageList();
|
||||
$AVE_Settings->settingsShow();
|
||||
break;
|
||||
}
|
||||
|
||||
case 'case':
|
||||
if(check_permission_acp('gen_settings_more'))
|
||||
{
|
||||
$AVE_Settings->settingsCase();
|
||||
break;
|
||||
}
|
||||
|
||||
case 'save':
|
||||
if (isset($_REQUEST['more'])) {
|
||||
if(check_permission_acp('gen_settings_more')) $AVE_Settings->settingsCase();
|
||||
} else {
|
||||
if(check_permission_acp('gen_settings')) $AVE_Settings->settingsSave();
|
||||
}
|
||||
break;
|
||||
|
||||
case 'countries':
|
||||
if(check_permission_acp('gen_settings_countries'))
|
||||
{
|
||||
if (isset($_REQUEST['save']) && $_REQUEST['save'] == 1)
|
||||
{
|
||||
$AVE_Settings->settingsCountriesSave();
|
||||
|
||||
header('Location:index.php?do=settings&sub=countries&cp=' . SESSION);
|
||||
exit;
|
||||
}
|
||||
$AVE_Settings->settingsCountriesList();
|
||||
break;
|
||||
}
|
||||
|
||||
case 'language':
|
||||
if(check_permission_acp('gen_settings_languages'))
|
||||
{
|
||||
if(isset($_REQUEST['func'])){
|
||||
switch($_REQUEST['func'])
|
||||
{
|
||||
case 'default':
|
||||
if(isset($_REQUEST['Id'])){
|
||||
$exists=$AVE_DB->Query("SELECT Id FROM ".PREFIX."_settings_lang WHERE Id=".(int)$_REQUEST['Id'])->GetCell();
|
||||
if($exists){
|
||||
$AVE_DB->Query("UPDATE ".PREFIX."_settings_lang SET lang_default=0");
|
||||
$AVE_DB->Query("UPDATE ".PREFIX."_settings_lang SET lang_default=1 WHERE Id=".(int)$_REQUEST['Id']." LIMIT 1");
|
||||
}
|
||||
}
|
||||
header('Location:index.php?do=settings&sub=language&cp=' . SESSION);
|
||||
exit;
|
||||
|
||||
case 'on':
|
||||
if(isset($_REQUEST['Id'])){
|
||||
$AVE_DB->Query("UPDATE ".PREFIX."_settings_lang SET lang_status=1 WHERE Id=".(int)$_REQUEST['Id']);
|
||||
}
|
||||
header('Location:index.php?do=settings&sub=language&cp=' . SESSION);
|
||||
exit;
|
||||
|
||||
case 'off':
|
||||
if(isset($_REQUEST['Id'])){
|
||||
$AVE_DB->Query("UPDATE ".PREFIX."_settings_lang SET lang_status=0 WHERE Id=".(int)$_REQUEST['Id']);
|
||||
}
|
||||
header('Location:index.php?do=settings&sub=language&cp=' . SESSION);
|
||||
exit;
|
||||
|
||||
case 'save':
|
||||
$AVE_Settings->settingsLanguageEditSave();
|
||||
exit;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$AVE_Settings->settingsLanguageList();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
case 'editlang':
|
||||
if (check_permission_acp('gen_settings_languages'))
|
||||
{
|
||||
$AVE_Settings->settingsLanguageEdit();
|
||||
break;
|
||||
}
|
||||
|
||||
case 'clearcache':
|
||||
if (check_permission_acp('cache_clear'))
|
||||
{
|
||||
$AVE_Template->CacheClear();
|
||||
exit;
|
||||
}
|
||||
|
||||
case 'clearthumb':
|
||||
if (check_permission_acp('cache_thumb'))
|
||||
{
|
||||
$AVE_Template->ThumbnailsClear();
|
||||
exit;
|
||||
}
|
||||
|
||||
case 'clearrevision':
|
||||
if (check_permission_acp('document_revisions'))
|
||||
{
|
||||
$AVE_Document->documentsRevisionsClear();
|
||||
exit;
|
||||
}
|
||||
|
||||
case 'clearcounter':
|
||||
if (check_permission_acp('gen_settings'))
|
||||
{
|
||||
$AVE_Document->documentCounterClear();
|
||||
exit;
|
||||
}
|
||||
|
||||
case 'showcache':
|
||||
cacheShow();
|
||||
exit;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'editlang':
|
||||
if(check_permission_acp('gen_settings_languages'))
|
||||
{
|
||||
$AVE_Settings->settingsLanguageEdit();
|
||||
break;
|
||||
}
|
||||
//-- v3.2
|
||||
case 'paginations':
|
||||
$AVE_Settings->settingsPaginationsList();
|
||||
break;
|
||||
|
||||
case 'clearcache':
|
||||
if(check_permission_acp('cache_clear'))
|
||||
{
|
||||
$AVE_Template->CacheClear();
|
||||
exit;
|
||||
}
|
||||
case 'new_paginations':
|
||||
$AVE_Settings->settingsPaginationsNew();
|
||||
break;
|
||||
|
||||
case 'clearthumb':
|
||||
if(check_permission_acp('cache_thumb'))
|
||||
{
|
||||
$AVE_Template->ThumbnailsClear();
|
||||
exit;
|
||||
}
|
||||
case 'edit_paginations':
|
||||
$AVE_Settings->settingsPaginationsEdit();
|
||||
break;
|
||||
|
||||
case 'clearrevision':
|
||||
if(check_permission_acp('document_revisions'))
|
||||
{
|
||||
$AVE_Document->documentsRevisionsClear();
|
||||
exit;
|
||||
}
|
||||
case 'save_paginations':
|
||||
$AVE_Settings->settingsPaginationsSave();
|
||||
break;
|
||||
|
||||
case 'clearcounter':
|
||||
if(check_permission_acp('gen_settings'))
|
||||
{
|
||||
$AVE_Document->documentCounterClear();
|
||||
exit;
|
||||
}
|
||||
case 'del_paginations':
|
||||
$AVE_Settings->settingsPaginationsDel();
|
||||
break;
|
||||
//-- v3.2
|
||||
|
||||
case 'showcache':
|
||||
cacheShow();
|
||||
exit;
|
||||
}
|
||||
break;
|
||||
//-- v3.24
|
||||
case 'robots':
|
||||
$AVE_Settings->editRobots();
|
||||
break;
|
||||
|
||||
//-- v3.2
|
||||
case 'paginations':
|
||||
$AVE_Settings->settingsPaginationsList();
|
||||
break;
|
||||
|
||||
case 'new_paginations':
|
||||
$AVE_Settings->settingsPaginationsNew();
|
||||
break;
|
||||
|
||||
case 'edit_paginations':
|
||||
$AVE_Settings->settingsPaginationsEdit();
|
||||
break;
|
||||
|
||||
case 'save_paginations':
|
||||
$AVE_Settings->settingsPaginationsSave();
|
||||
break;
|
||||
|
||||
case 'del_paginations':
|
||||
$AVE_Settings->settingsPaginationsDel();
|
||||
break;
|
||||
//-- v3.2
|
||||
|
||||
//-- v3.24
|
||||
case 'robots':
|
||||
$AVE_Settings->editRobots();
|
||||
break;
|
||||
|
||||
case 'custom':
|
||||
$AVE_Settings->editCustom();
|
||||
break;
|
||||
//-- v3.24
|
||||
}
|
||||
case 'custom':
|
||||
$AVE_Settings->editCustom();
|
||||
break;
|
||||
//-- v3.24
|
||||
}
|
||||
?>
|
@ -53,6 +53,14 @@
|
||||
<div class="fix mt10"><input type="checkbox" name="server" value="1" class="float" /><label>{#DB_BACKUP_SERVER#}</label></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{#DB_BACKUP_FILE_NAME#}
|
||||
</td>
|
||||
<td colspan="3">
|
||||
<input type="text" name="file_name" value="" />
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="rowElem">
|
||||
|
@ -128,7 +128,7 @@ $(document).ready(function(){ldelim}
|
||||
</td>
|
||||
|
||||
<td align="center" width="20">
|
||||
{if $module.status}
|
||||
{if $module.ModuleStatus}
|
||||
<a title="{#MODULES_REINSTALL#}" href="index.php?do=modules&action=reinstall&module={$module.ModuleSysName}&cp={$sess}" class="topleftDir ConfirmReInstall icon_sprite ico_reinstall"></a>
|
||||
{else}
|
||||
<a title="{#MODULES_DELETE#}" dir="{#MODULES_DELETE#}" name="{#MODULES_DELETE_CONFIRM#}" href="index.php?do=modules&action=delete&module={$module.ModuleSysName}&cp={$sess}" class="topleftDir ConfirmDelete icon_sprite ico_delete"></a>
|
||||
|
@ -288,8 +288,10 @@ function changeRub(select) {ldelim}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{#REQUEST_COUNT_ITEMS#}</td>
|
||||
<td><input class="mousetrap float" name="request_count_items" type="checkbox" id="request_count_items" value="1"{if $row->request_count_items == '1'} checked="checked"{/if} /><label> </label></td>
|
||||
<td>{#REQUEST_USE_QUERY#}</td>
|
||||
<td colspan="3"><input class="mousetrap float" name="request_use_query" type="checkbox" id="request_use_query" value="1"{if $row->request_use_query == '1'} checked="checked"{/if} /><label> </label></td>
|
||||
<td><input class="mousetrap float" name="request_use_query" type="checkbox" id="request_use_query" value="1"{if $row->request_use_query == '1'} checked="checked"{/if} /><label> </label></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
|
@ -50,6 +50,7 @@
|
||||
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="rubric_id" value="{$smarty.request.rubric_id}" />
|
||||
<input type="hidden" name="func" value="{$params.func}" />
|
||||
{if $params.id}
|
||||
<input type="hidden" name="field_id" value="{$params.id}" />
|
||||
|
@ -6,7 +6,7 @@
|
||||
<div class="title">
|
||||
<h5>{#RUBRIK_TEMPLATE_EDIT#}</h5>
|
||||
<div class="num">
|
||||
<a class="basicNum" href="index.php?do=rubs&action=tmpls&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TMPLS_BUTTON#}</a>
|
||||
<a class="basicNum greenNum" href="index.php?do=rubs&action=tmpls&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TMPLS_BUTTON#}</a>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
@ -36,7 +36,7 @@ $(document).ready(function(){ldelim}
|
||||
<div class="title">
|
||||
<h5>{#RUBRIC_TMPLS_HEAD#}</h5>
|
||||
<div class="num">
|
||||
<a class="basicNum" href="index.php?do=rubs&action=template&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIK_EDIT_TEMPLATE#}</a>
|
||||
<a class="basicNum greenNum" href="index.php?do=rubs&action=template&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIK_EDIT_TEMPLATE#}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -90,7 +90,7 @@ $(document).ready(function(){ldelim}
|
||||
<li class="activeTab"><a href="#tab1">{#RUBRIC_TMPLS_HEAD#}</a></li>
|
||||
{if check_permission('rubric_edit')}<li class=""><a href="#tab2">{#RUBRIC_TMPLS_ADD#}</a></li>{/if}
|
||||
<div class="num">
|
||||
<a class="basicNum" href="index.php?do=rubs&action=tmpls_from&rubric_id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TMPLS_FROM#}</a>
|
||||
<a class="basicNum greenNum" href="index.php?do=rubs&action=tmpls_from&rubric_id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TMPLS_FROM#}</a>
|
||||
</div>
|
||||
</ul>
|
||||
<div class="tab_container">
|
||||
|
@ -33,12 +33,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{if $smarty.const.SYSTEM_CACHE_LIFETIME > 0}
|
||||
<ul class="messages first">
|
||||
<li class="highlight red"><strong>{#SETTINGS_CACHE_LIFETIME#}</strong></li>
|
||||
</ul>
|
||||
{/if}
|
||||
|
||||
<div class="widget first">
|
||||
<ul class="inact_tabs">
|
||||
{if check_permission('gen_settings')}<li><a href="index.php?do=settings&cp={$sess}">{#SETTINGS_MAIN_SETTINGS#}</a></li>{/if}
|
||||
|
@ -28,13 +28,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{if $smarty.const.SYSTEM_CACHE_LIFETIME > 0}
|
||||
<ul class="messages first">
|
||||
<li class="highlight red"><strong>{#SETTINGS_CACHE_LIFETIME#}</strong></li>
|
||||
</ul>
|
||||
{/if}
|
||||
|
||||
<form id="settings" name="settings" method="post" action="index.php?do=settings&cp={$sess}&sub=save" class="mainForm">
|
||||
|
||||
<fieldset>
|
||||
|
||||
<div class="widget first">
|
||||
|
@ -28,12 +28,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{if $smarty.const.SYSTEM_CACHE_LIFETIME > 0}
|
||||
<ul class="messages first">
|
||||
<li class="highlight red"><strong>{#SETTINGS_CACHE_LIFETIME#}</strong></li>
|
||||
</ul>
|
||||
{/if}
|
||||
|
||||
<div class="widget first">
|
||||
<ul class="inact_tabs">
|
||||
{if check_permission('gen_settings')}<li><a href="index.php?do=settings&cp={$sess}">{#SETTINGS_MAIN_SETTINGS#}</a></li>{/if}
|
||||
|
@ -108,21 +108,21 @@
|
||||
|
||||
if (is_numeric($template_id))
|
||||
{
|
||||
$cache = 'template_' . $template_id;
|
||||
|
||||
$cache_file = BASE_DIR . '/tmp/cache/templates/' . $cache . '.inc';
|
||||
$cache_file = BASE_DIR . '/templates/' . DEFAULT_THEME_FOLDER . '/include/templates/' . $template_id . '/template.inc';
|
||||
|
||||
// Если включен DEV MODE, то отключаем кеширование
|
||||
if (defined('DEV_MODE') AND DEV_MODE)
|
||||
$cache_file = null;
|
||||
|
||||
if (! file_exists(dirname($cache_file)))
|
||||
mkdir(dirname($cache_file), 0766, true);
|
||||
if (! is_dir(dirname($cache_file)))
|
||||
@mkdir(dirname($cache_file), 0766, true);
|
||||
|
||||
if (file_exists($cache_file))
|
||||
// Если файл есть и он не пустой используем его
|
||||
if (file_exists($cache_file) && filesize($cache_file))
|
||||
{
|
||||
$return = file_get_contents($cache_file);
|
||||
}
|
||||
// Иначе лезем в БД и достаем шаблон
|
||||
else
|
||||
{
|
||||
$return = $AVE_DB->Query("
|
||||
@ -137,6 +137,7 @@
|
||||
|
||||
$return = stripslashes($return);
|
||||
|
||||
// Сохраняем в файл
|
||||
if ($cache_file)
|
||||
file_put_contents($cache_file, $return);
|
||||
}
|
||||
@ -434,22 +435,6 @@
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Метод, предназначенный для формирования хэша страницы
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function _get_cache_hash()
|
||||
{
|
||||
$hash = 'g-' . UGROUP;
|
||||
$hash .= 'r-' . RUB_ID;
|
||||
$hash .= 'u-' . get_redirect_link();
|
||||
$hash .= 't-' . $this->curentdoc->rubric_tmpl_id;
|
||||
|
||||
return md5($hash);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Метод, предназначенный для проверки существования документа в БД
|
||||
*
|
||||
@ -747,12 +732,6 @@
|
||||
$main_content
|
||||
);
|
||||
|
||||
// Удаляем ошибочные теги полей документа в шаблоне рубрики
|
||||
$main_content = preg_replace('/\[tag:watermark:\w*\]/', '', $main_content);
|
||||
$main_content = preg_replace('/\[tag:fld:\d*\]/', '', $main_content);
|
||||
$main_content = preg_replace('/\[tag:doc:\w*\]/', '', $main_content);
|
||||
$main_content = preg_replace('/\[tag:langfile:\w*\]/', '', $main_content);
|
||||
|
||||
// парсим теги в шаблоне рубрики
|
||||
$main_content = preg_replace_callback(
|
||||
'/\[tag:date:([a-zA-Z0-9-. \/]+)\]/',
|
||||
@ -769,47 +748,132 @@
|
||||
if (preg_match('[tag:docauthor]', $main_content))
|
||||
$main_content = str_replace('[tag:docauthor]', get_username_by_id($this->curentdoc->document_author_id), $main_content);
|
||||
|
||||
if (CACHE_DOC_TPL && empty($_POST))
|
||||
{
|
||||
$cache_id = (int)$this->curentdoc->Id;
|
||||
$cache_id = 'compiled/' . (floor($cache_id / 1000)) . '/' . $cache_id;
|
||||
// Удаляем ошибочные теги полей документа в шаблоне рубрики
|
||||
$main_content = preg_replace('/\[tag:watermark:\w*\]/', '', $main_content);
|
||||
$main_content = preg_replace('/\[tag:fld:\w*\]/', '', $main_content);
|
||||
$main_content = preg_replace('/\[tag:doc:\w*\]/', '', $main_content);
|
||||
$main_content = preg_replace('/\[tag:langfile:\w*\]/', '', $main_content);
|
||||
|
||||
$cache_file = $this->_get_cache_hash();
|
||||
|
||||
$cache_dir = BASE_DIR . '/tmp/cache/sql/' . (trim($cache_id) > ''
|
||||
? trim($cache_id) . '/'
|
||||
: substr($cache_file, 0, 2) . '/' . substr($cache_file, 2, 2) . '/' . substr($cache_file, 4, 2) . '/');
|
||||
|
||||
// кэширование разрешено
|
||||
// сохраняем скомпилированный шаблон в кэш
|
||||
if (CACHE_DOC_FILE)
|
||||
{
|
||||
if (! is_dir($cache_dir))
|
||||
mkdir($cache_dir, 0766, true);
|
||||
|
||||
file_put_contents($cache_dir . $cache_file, $main_content);
|
||||
}
|
||||
|
||||
// кэширование разрешено
|
||||
// сохраняем скомпилированный шаблон в кэш
|
||||
$AVE_DB->Query("
|
||||
INSERT INTO
|
||||
" . PREFIX . "_rubric_template_cache
|
||||
SET
|
||||
hash = '" . $cache_file . "',
|
||||
rub_id = '" . RUB_ID . "',
|
||||
rub_tmpl_id = '" . $this->curentdoc->rubric_tmpl_id . "',
|
||||
grp_id = '" . UGROUP . "',
|
||||
doc_id = '" . $id . "',
|
||||
compiled = '" . addslashes($main_content) . "'
|
||||
");
|
||||
|
||||
unset ($cache_id, $cache_file, $cache_dir);
|
||||
}
|
||||
//-- Кеширование скомпилированного документа
|
||||
$this->setCompileDocument($main_content);
|
||||
|
||||
return $main_content;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Метод, предназначенный для формирования хэша страницы
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function _get_cache_hash()
|
||||
{
|
||||
$hash = 'g-' . UGROUP; // Группа пользователей
|
||||
$hash .= 'r-' . RUB_ID; // ID Рубрики
|
||||
$hash .= 't-' . $this->curentdoc->rubric_tmpl_id; // Шаблон рубрики
|
||||
//$hash .= 'u-' . get_redirect_link(); // ToDo
|
||||
|
||||
return md5($hash);
|
||||
}
|
||||
|
||||
|
||||
function _get_cache_id()
|
||||
{
|
||||
$cache = array();
|
||||
|
||||
$cache['id'] = (int)$this->curentdoc->Id;
|
||||
|
||||
if (! $cache['id'])
|
||||
return false;
|
||||
|
||||
$cache['id'] = (int)$cache['id'];
|
||||
$cache['id'] = 'documents/compiled/' . (floor($cache['id'] / 1000)) . '/' . $cache['id'];
|
||||
|
||||
$cache['file'] = $this->_get_cache_hash() . '.compiled';
|
||||
|
||||
if (! $cache['file'])
|
||||
return false;
|
||||
|
||||
$cache['dir'] = BASE_DIR . '/tmp/cache/sql/' . (trim($cache['id']) > ''
|
||||
? trim($cache['id']) . '/'
|
||||
: substr($cache['file'], 0, 2) . '/' . substr($cache['file'], 2, 2) . '/' . substr($cache['file'], 4, 2) . '/');
|
||||
|
||||
return $cache;
|
||||
}
|
||||
|
||||
|
||||
function setCompileDocument ($main_content)
|
||||
{
|
||||
$cache = $this->_get_cache_id();
|
||||
|
||||
if (! $cache)
|
||||
return false;
|
||||
|
||||
//-- Удаляем файл, если существует
|
||||
if (file_exists($cache['dir'] . $cache['file']))
|
||||
unlink($cache['dir'] . $cache['file']);
|
||||
|
||||
// Если включен DEV MODE, то отключаем кеширование запросов
|
||||
if (defined('DEV_MODE') AND DEV_MODE)
|
||||
return false;
|
||||
|
||||
//-- Кэширование разрешено
|
||||
if (defined('CACHE_DOC_TPL') && CACHE_DOC_TPL)
|
||||
{
|
||||
//-- Если нет папки, создаем
|
||||
if (! is_dir($cache['dir']))
|
||||
@mkdir($cache['dir'], 0766, true);
|
||||
|
||||
//-- Сохраняем скомпилированный шаблон в кэш
|
||||
file_put_contents($cache['dir'] . $cache['file'], $main_content);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
function getCompileDocument ()
|
||||
{
|
||||
$cache = $this->_get_cache_id();
|
||||
|
||||
if (! $cache)
|
||||
return false;
|
||||
|
||||
$content = false;
|
||||
|
||||
//-- Если нет папки, создаем
|
||||
if (! is_dir($cache['dir']))
|
||||
@mkdir($cache['dir'], 0766, true);
|
||||
|
||||
//-- Получаем сразу поля
|
||||
get_document_fields((int)$this->curentdoc->Id);
|
||||
|
||||
// Наличие файла
|
||||
if (file_exists($cache['dir'] . $cache['file']))
|
||||
{
|
||||
// Получаем время создания файла
|
||||
$file_time = filemtime($cache['dir'] . $cache['file']);
|
||||
|
||||
// Получаем время для проверки
|
||||
$cache_time = $this->curentdoc->rubric_changed;
|
||||
|
||||
if (! $cache_time || $cache_time > $file_time)
|
||||
{
|
||||
unlink ($cache['dir'] . $cache['file']);
|
||||
}
|
||||
else if (defined('CACHE_DOC_TPL') && CACHE_DOC_TPL)
|
||||
// Извлекаем скомпилированный шаблон документа из кэша
|
||||
$content = file_get_contents($cache['dir'] . $cache['file']);
|
||||
}
|
||||
else
|
||||
{
|
||||
$content = false;
|
||||
}
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Метод, предназначенный для обработки системных тегов модулей. Здесь подключаются только те файлы модулей,
|
||||
* системные теги которых обнаружены в шаблоне при парсинге. Также формирует массив всех установленных модулей
|
||||
@ -1119,44 +1183,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
if (CACHE_DOC_TPL && empty ($_POST))
|
||||
{
|
||||
// Кэширование разрешено
|
||||
// Извлекаем скомпилированный шаблон документа из кэша
|
||||
// Если там пусто, пробуем достать из бд
|
||||
|
||||
$cache_id = (int)$this->curentdoc->Id;
|
||||
$cache_id = 'compiled/' . (floor($cache_id / 1000)) . '/' . $cache_id;
|
||||
|
||||
$cache_file = $this->_get_cache_hash();
|
||||
|
||||
$cache_dir = BASE_DIR . '/tmp/cache/sql/' . (trim($cache_id) > ''
|
||||
? trim($cache_id) . '/'
|
||||
: substr($cache_file, 0, 2) . '/' . substr($cache_file, 2, 2) . '/' . substr($cache_file, 4, 2) . '/');
|
||||
|
||||
if (CACHE_DOC_FILE && file_exists($cache_dir . $cache_file))
|
||||
{
|
||||
$main_content = file_get_contents($cache_dir . $cache_file);
|
||||
}
|
||||
else
|
||||
{
|
||||
$main_content = $AVE_DB->Query("
|
||||
SELECT
|
||||
compiled
|
||||
FROM
|
||||
" . PREFIX . "_rubric_template_cache
|
||||
WHERE
|
||||
hash = '" . $cache_file . "'
|
||||
LIMIT 1
|
||||
")->GetCell();
|
||||
}
|
||||
|
||||
unset($cache_dir, $cache_file, $cache_id);
|
||||
}
|
||||
// Извлекаем скомпилированный шаблон документа из кэша
|
||||
if (defined('CACHE_DOC_TPL') && CACHE_DOC_TPL) // && empty ($_POST)
|
||||
$main_content = $this->getCompileDocument();
|
||||
else
|
||||
{ // Кэширование запрещено
|
||||
// Кэширование запрещено
|
||||
$main_content = false;
|
||||
}
|
||||
|
||||
// Собираем контент
|
||||
// Если в кеше нет контента, то
|
||||
@ -1203,15 +1235,11 @@
|
||||
|
||||
// Собираем шаблон рубрики
|
||||
if (empty($rubTmpl))
|
||||
{
|
||||
// Если не задан шаблон рубрики, выводим сообщение
|
||||
$main_content = $this->_rubric_template_empty;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Обрабатываем основные поля рубрики
|
||||
$main_content = $this->_main_content($main_content, $id, $rubTmpl);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1253,7 +1281,7 @@
|
||||
|
||||
// Парсим поля запроса
|
||||
$out = preg_replace_callback(
|
||||
'/\[tag:rfld:([a-zA-Z0-9-_]+)]\[(more|esc|img|[0-9-]+)]/',
|
||||
'/\[tag:rfld:([a-zA-Z0-9-_]+)]\[(more|esc|img|strip|[0-9-]+)]/',
|
||||
create_function(
|
||||
'$m',
|
||||
'return request_get_document_field($m[1], ' . $id . ', $m[2], ' . (defined('RUB_ID') ? RUB_ID : 0) . ');'
|
||||
@ -1262,7 +1290,7 @@
|
||||
);
|
||||
|
||||
// Удаляем ошибочные теги полей документа в шаблоне рубрики
|
||||
$out = preg_replace('/\[tag:rfld:\d*\]/', '', $out);
|
||||
$out = preg_replace('/\[tag:rfld:\w*\]/', '', $out);
|
||||
|
||||
// Если в GET запросе пришел параметр print, т.е. страница для печати,
|
||||
// парсим контент, который обрамлен тегами только для печати
|
||||
@ -1544,7 +1572,7 @@
|
||||
{
|
||||
global $AVE_DB;
|
||||
|
||||
// Если нужны параметры GET, можно отключить
|
||||
//-- Если нужны параметры GET, можно отключить
|
||||
$get_url = (strpos($get_url, ABS_PATH . '?') === 0
|
||||
? ''
|
||||
: $get_url);
|
||||
@ -1555,15 +1583,18 @@
|
||||
$get_url = rawurldecode($get_url);
|
||||
$get_url = mb_substr($get_url, strlen(ABS_PATH));
|
||||
|
||||
// Сохранение старого урла для првоерки использования суффикса
|
||||
$test_url = $get_url;
|
||||
//-- Сохранение старого урла для првоерки использования суффикса
|
||||
$check_url = $get_url;
|
||||
|
||||
if (mb_substr($get_url, - strlen(URL_SUFF)) == URL_SUFF)
|
||||
{
|
||||
$get_url = mb_substr($get_url, 0, - strlen(URL_SUFF));
|
||||
}
|
||||
|
||||
// Разбиваем строку параметров на отдельные части
|
||||
//-- Ложный URL
|
||||
$fake_url = false;
|
||||
|
||||
//-- Разбиваем строку параметров на отдельные части
|
||||
$get_url = explode('/', $get_url);
|
||||
|
||||
if (isset ($get_url['index']))
|
||||
@ -1577,7 +1608,7 @@
|
||||
unset ($get_url['print']);
|
||||
}
|
||||
|
||||
// Определяем, используется ли у нас разделение документа по страницам
|
||||
//-- Определяем, используется ли у нас разделение документа по страницам
|
||||
$pages = preg_grep('/^(a|art)?page-\d+$/i', $get_url);
|
||||
|
||||
if (! empty ($pages))
|
||||
@ -1594,18 +1625,62 @@
|
||||
$pages
|
||||
);
|
||||
}
|
||||
// В противном случае формируем окончательную ссылку для документа
|
||||
//-- В противном случае формируем окончательную ссылку для документа
|
||||
else
|
||||
{
|
||||
$get_url = implode('/', $get_url);
|
||||
}
|
||||
|
||||
//-- Страница тегов
|
||||
preg_match('/^tags(|(\/.*))+$/is', $get_url, $match);
|
||||
|
||||
//-- Если есть совпадение с tag
|
||||
if ($match)
|
||||
{
|
||||
//-- Смотрим условие
|
||||
if (isset($match[2]))
|
||||
{
|
||||
//-- Отрезаем лишнее
|
||||
$matches = trim($match[2], '/');
|
||||
|
||||
//-- Разбиваем
|
||||
$matches = explode('/', $matches);
|
||||
|
||||
//-- Берем первое значение
|
||||
$matches = urldecode(array_shift($matches));
|
||||
|
||||
//-- Если значение не равно пусто
|
||||
if ($matches != '')
|
||||
{
|
||||
//-- Передаем в _GET условие tag
|
||||
$_GET['tag'] = $_REQUEST['tag'] = $matches;
|
||||
|
||||
//-- Парсим query strings
|
||||
parse_str($_SERVER['QUERY_STRING'], $query_string);
|
||||
|
||||
//-- Назначаем условие
|
||||
$query_string['tag'] = $matches;
|
||||
|
||||
//-- Пересобираем QUERY_STRING
|
||||
$_SERVER['QUERY_STRING'] = http_build_query($query_string);
|
||||
|
||||
//-- Назначаем URL
|
||||
$get_url = 'tags';
|
||||
|
||||
//-- Инициализируем ложный URL
|
||||
$fake_url = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-- Экранируем поступающий URL
|
||||
$get_url = $AVE_DB->ClearUrl($get_url);
|
||||
|
||||
//-- Проверяем есть ли данный URL в таблице алиасов модулей
|
||||
$sql = "
|
||||
SELECT
|
||||
# MODULE LINK
|
||||
document_id,
|
||||
module_name,
|
||||
module_action,
|
||||
module_link
|
||||
@ -1615,18 +1690,24 @@
|
||||
module_url = '" . str_ireplace("'", "\'", $get_url) . "'
|
||||
";
|
||||
|
||||
$query = $AVE_DB->Query($sql)->FetchRow();
|
||||
$module = $AVE_DB->Query($sql)->FetchAssocArray();
|
||||
|
||||
if ($query)
|
||||
if ($module)
|
||||
{
|
||||
//-- Передаем глобальные перемененные
|
||||
$_GET['module'] = $_REQUEST['module'] = $query->module_name;
|
||||
$_GET['action'] = $_REQUEST['action'] = $query->module_action;
|
||||
$_GET['module'] = $_REQUEST['module'] = $module['module_name'];
|
||||
$_GET['action'] = $_REQUEST['action'] = $module['module_action'];
|
||||
|
||||
$get_url = ABS_PATH . $query->module_link;
|
||||
$get_url = ABS_PATH . $module['module_link'];
|
||||
|
||||
//-- Если есть document_id, назначем его
|
||||
if ($module['document_id'])
|
||||
$_REQUEST['id'] = (int)$module['document_id'];
|
||||
}
|
||||
|
||||
// проверка на наличие id в запросе
|
||||
unset ($sql, $module);
|
||||
|
||||
//-- Проверка на наличие id в запросе
|
||||
if (! empty($_REQUEST['id']))
|
||||
{
|
||||
$get_url = $AVE_DB->Query("
|
||||
@ -1646,67 +1727,98 @@
|
||||
? intval($_REQUEST['id'])
|
||||
: 1);
|
||||
|
||||
// Забираем нужные данные
|
||||
//-- Забираем нужные данные
|
||||
$sql = "
|
||||
SELECT
|
||||
doc.*,
|
||||
rubric_permission,
|
||||
rubric_template,
|
||||
rubric_meta_gen,
|
||||
rubric_template_id,
|
||||
rub.rubric_header_template,
|
||||
rub.rubric_footer_template,
|
||||
rub.rubric_start_code,
|
||||
other.template
|
||||
# URL FETCH = $get_url
|
||||
*
|
||||
FROM
|
||||
" . PREFIX . "_documents AS doc
|
||||
JOIN
|
||||
" . PREFIX . "_rubrics AS rub
|
||||
ON rub.Id = doc.rubric_id
|
||||
JOIN
|
||||
" . PREFIX . "_rubric_permissions AS prm
|
||||
ON doc.rubric_id = prm.rubric_id
|
||||
LEFT JOIN
|
||||
" . PREFIX . "_rubric_templates AS other
|
||||
ON doc.rubric_id = other.rubric_id AND doc.rubric_tmpl_id = other.id
|
||||
" . PREFIX . "_documents
|
||||
WHERE
|
||||
user_group_id = '" . UGROUP . "'
|
||||
AND
|
||||
" . (! empty ($get_url) && ! isset($_REQUEST['module'])
|
||||
? "document_alias = '" . str_ireplace("'", "\'", $get_url) . "'"
|
||||
: (! empty($_REQUEST['id'])
|
||||
? "doc.Id =" . intval($_REQUEST['id'])
|
||||
: "doc.Id = 1")) . "
|
||||
? "Id =" . intval($_REQUEST['id'])
|
||||
: "Id = 1")) . "
|
||||
LIMIT 1
|
||||
";
|
||||
|
||||
$hash_url = md5($get_url);
|
||||
|
||||
$query = $AVE_DB->Query($sql, CACHE_DOC_SQL, 'url_' . $hash_url);
|
||||
$cache_time = 0;
|
||||
|
||||
if ($this->curentdoc = $query->FetchRow())
|
||||
if (defined('CACHE_DOC_FILE') && CACHE_DOC_FILE)
|
||||
$cache_time = -1;
|
||||
else
|
||||
$AVE_DB->clearCacheUrl('url_' . $hash_url);
|
||||
|
||||
$this->curentdoc = $AVE_DB->Query($sql, $cache_time, 'url_' . $hash_url, true, '.fetch')->FetchRow();
|
||||
|
||||
if ($this->curentdoc)
|
||||
{
|
||||
// Получить шаблон рубрики
|
||||
$sql = "
|
||||
SELECT STRAIGHT_JOIN
|
||||
# FETCH RUB = " . $this->curentdoc->rubric_id . "
|
||||
prm.rubric_permission,
|
||||
rub.rubric_template,
|
||||
rub.rubric_meta_gen,
|
||||
rub.rubric_template_id,
|
||||
rub.rubric_header_template,
|
||||
rub.rubric_footer_template,
|
||||
rub.rubric_start_code,
|
||||
rub.rubric_changed,
|
||||
rub.rubric_changed_fields,
|
||||
other.template
|
||||
FROM
|
||||
" . PREFIX . "_rubrics AS rub
|
||||
LEFT JOIN
|
||||
" . PREFIX . "_rubric_permissions AS prm
|
||||
ON rub.Id = prm.rubric_id
|
||||
LEFT JOIN
|
||||
" . PREFIX . "_rubric_templates AS other
|
||||
ON (rub.Id = other.rubric_id AND other.id = '" . $this->curentdoc->rubric_tmpl_id . "')
|
||||
WHERE
|
||||
prm.user_group_id = '" . UGROUP . "'
|
||||
AND
|
||||
rub.Id = '" . $this->curentdoc->rubric_id . "'
|
||||
";
|
||||
|
||||
$query = $AVE_DB->Query($sql, $cache_time, 'rub_' . $this->curentdoc->rubric_id, true, '.fetch')->FetchRow();
|
||||
|
||||
$this->curentdoc = (object) array_merge((array) $query, (array) $this->curentdoc);
|
||||
|
||||
if ($this->curentdoc->rubric_tmpl_id != 0)
|
||||
{
|
||||
$this->curentdoc->rubric_template = (($this->curentdoc->template != '')
|
||||
? $this->curentdoc->template
|
||||
: $this->curentdoc->rubric_template);
|
||||
|
||||
unset($this->curentdoc->template);
|
||||
unset ($this->curentdoc->template);
|
||||
}
|
||||
|
||||
// Глобальные переменные
|
||||
//-- Глобальные переменные
|
||||
$_GET['id'] = $_REQUEST['id'] = $this->curentdoc->Id;
|
||||
$_GET['doc'] = $_REQUEST['doc'] = $this->curentdoc->document_alias;
|
||||
|
||||
// Назначаем язык пользователю, в завивисомтси от языка документа
|
||||
//-- Назначаем язык пользователю, в завивисомтси от языка документа
|
||||
if ($this->curentdoc->Id != PAGE_NOT_FOUND_ID OR $this->curentdoc->document_lang == '--')
|
||||
$_SESSION['user_language'] = $this->curentdoc->document_lang;
|
||||
|
||||
// Перенаправление на адреса с суффиксом
|
||||
//-- Если есть ложный URL указываем его
|
||||
if ($fake_url)
|
||||
{
|
||||
$check_url = preg_replace('/\/(a|art)?page-\d/i', '', $check_url);
|
||||
|
||||
$_GET['doc'] = $_REQUEST['doc'] = $check_url;
|
||||
$this->curentdoc->document_alias = $check_url;
|
||||
$get_url = $check_url;
|
||||
}
|
||||
|
||||
//-- Перенаправление на адреса с суффиксом
|
||||
if (
|
||||
$test_url !== $get_url . URL_SUFF
|
||||
&& ! $pages && $test_url
|
||||
$check_url !== $get_url . URL_SUFF
|
||||
&& ! $pages && $check_url
|
||||
&& ! $_REQUEST['print']
|
||||
&& ! $_REQUEST['module']
|
||||
&& ! $_REQUEST['tag']
|
||||
@ -1716,21 +1828,20 @@
|
||||
header('HTTP/1.1 301 Moved Permanently');
|
||||
|
||||
if ($this->curentdoc->Id == 1)
|
||||
{
|
||||
header('Location:' . ABS_PATH);
|
||||
exit();
|
||||
}
|
||||
else
|
||||
{
|
||||
header('Location:' . ABS_PATH . $get_url . URL_SUFF);
|
||||
exit();
|
||||
}
|
||||
|
||||
exit();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$AVE_DB->clearCacheUrl('url_' . $hash_url);
|
||||
|
||||
$sql = "
|
||||
SELECT
|
||||
# REDIRECT = $get_url
|
||||
a.document_alias
|
||||
FROM
|
||||
".PREFIX."_document_alias_history AS h,
|
||||
@ -1743,12 +1854,11 @@
|
||||
|
||||
$redirect_alias = $AVE_DB->Query($sql)->GetCell();
|
||||
|
||||
$redirect_alias = ABS_PATH . $redirect_alias . URL_SUFF;
|
||||
|
||||
$redirect_alias = str_replace('//', '/', $redirect_alias);
|
||||
|
||||
if (! empty($redirect_alias))
|
||||
if ($redirect_alias && ! empty($redirect_alias))
|
||||
{
|
||||
$redirect_alias = ABS_PATH . $redirect_alias . URL_SUFF;
|
||||
$redirect_alias = str_replace('//', '/', $redirect_alias);
|
||||
|
||||
header('HTTP/1.1 301 Moved Permanently');
|
||||
header('Location:' . $redirect_alias);
|
||||
exit();
|
||||
|
@ -400,6 +400,10 @@
|
||||
*/
|
||||
public $_last_query;
|
||||
|
||||
|
||||
//-- Instance
|
||||
protected static $instance = null;
|
||||
|
||||
/**
|
||||
* Конструктор
|
||||
*
|
||||
@ -415,12 +419,12 @@
|
||||
$this->db_password = $db['dbpass'];
|
||||
$this->db_prefix = $db['dbpref'];
|
||||
|
||||
if(!isset($db['dbport']))
|
||||
if (! isset($db['dbport']))
|
||||
$this->db_port = ini_get ('mysqli.default_port');
|
||||
else
|
||||
$this->db_port = (isset($db['dbport']) ? $db['dbport'] : null);
|
||||
|
||||
if(!isset($db['dbsock']))
|
||||
if (! isset($db['dbsock']))
|
||||
$this->db_socket = ini_get ('mysqli.default_socket');
|
||||
else
|
||||
$this->db_port = (isset($db['dbsock']) ? $db['dbsock'] : null);
|
||||
@ -511,9 +515,9 @@
|
||||
* @param $db
|
||||
* @return object возвращает инстанс данного класса.
|
||||
*/
|
||||
public static function getInstance($db = array())
|
||||
public static function getInstance ($config = array())
|
||||
{
|
||||
return new self($db);
|
||||
return new self($config);
|
||||
}
|
||||
|
||||
|
||||
@ -767,27 +771,83 @@
|
||||
}
|
||||
|
||||
|
||||
public function cacheFile($cache_id)
|
||||
public function cacheId($cache_id)
|
||||
{
|
||||
// Если это документ, то меняем расположение
|
||||
//-- Если это документ, то меняем расположение
|
||||
if (substr($cache_id, 0, 3) == 'doc')
|
||||
{
|
||||
$cache_id = (int)str_replace('doc_', '', $cache_id);
|
||||
$cache_id = 'doc/' . (floor($cache_id / 1000)) . '/' . $cache_id;
|
||||
return $cache_id = 'documents/' . (floor($cache_id / 1000)) . '/' . $cache_id;
|
||||
}
|
||||
|
||||
// Если это
|
||||
//-- Если это полный документ, то меняем расположение
|
||||
if (substr($cache_id, 0, 3) == 'dat')
|
||||
{
|
||||
$cache_id = (int)str_replace('dat_', '', $cache_id);
|
||||
return $cache_id = 'documents/data/' . (floor($cache_id / 1000)) . '/' . $cache_id;
|
||||
}
|
||||
|
||||
//-- Если это скомпилированный шаблон документа, то меняем расположение
|
||||
if (substr($cache_id, 0, 3) == 'cmd')
|
||||
{
|
||||
$cache_id = (int)str_replace('cmd_', '', $cache_id);
|
||||
return $cache_id = 'documents/compiled/' . (floor($cache_id / 1000)) . '/' . $cache_id;
|
||||
}
|
||||
|
||||
//-- Если это поля документа, то меняем расположение
|
||||
if (substr($cache_id, 0, 3) == 'fld')
|
||||
{
|
||||
$cache_id = (int)str_replace('fld_', '', $cache_id);
|
||||
return $cache_id = 'documents/fields/' . (floor($cache_id / 1000)) . '/' . $cache_id;
|
||||
}
|
||||
|
||||
//-- Сборка страницы
|
||||
if (substr($cache_id, 0, 3) == 'url')
|
||||
{
|
||||
$cache_id = str_replace('url_', '', $cache_id);
|
||||
$cache_id = 'url/' . substr($cache_id, 0, 3);
|
||||
return $cache_id = 'documents/urls/' . substr($cache_id, 0, 3);
|
||||
}
|
||||
|
||||
// Если это
|
||||
//-- Если это хлебные крошки, то меняем расположение
|
||||
if (substr($cache_id, 0, 3) == 'brd')
|
||||
{
|
||||
$cache_id = (int)str_replace('brd_', '', $cache_id);
|
||||
return $cache_id = 'documents/breadcrumbs/' . (floor($cache_id / 1000)) . '/' . $cache_id;
|
||||
}
|
||||
|
||||
//-- Если это рубрика, то меняем расположение
|
||||
if (substr($cache_id, 0, 3) == 'rub')
|
||||
{
|
||||
$cache_id = (int)str_replace('rub_', '', $cache_id);
|
||||
return $cache_id = 'rubrics/' . $cache_id;
|
||||
}
|
||||
|
||||
//-- Если это запрос, то меняем расположение
|
||||
if (substr($cache_id, 0, 3) == 'req')
|
||||
{
|
||||
$cache_id = (int)str_replace('req_', '', $cache_id);
|
||||
return $cache_id = 'requests/' . $cache_id;
|
||||
}
|
||||
|
||||
//-- Если это элемент запроса, то меняем расположение
|
||||
if (substr($cache_id, 0, 3) == 'rqe')
|
||||
{
|
||||
$cache_id = (int)str_replace('rqe_', '', $cache_id);
|
||||
return $cache_id = 'requests/elements/' . (floor($cache_id / 1000)) . '/' . $cache_id;
|
||||
}
|
||||
|
||||
//-- Если это настройки запроса, то меняем расположение
|
||||
if (substr($cache_id, 0, 3) == 'rqs')
|
||||
{
|
||||
$cache_id = str_replace('rqs_', '', $cache_id);
|
||||
return $cache_id = 'requests/settings/' . $cache_id;
|
||||
}
|
||||
|
||||
// -- Навигация
|
||||
if (substr($cache_id, 0, 3) == 'nav')
|
||||
{
|
||||
$cache_id = str_replace('nav_', '', $cache_id);
|
||||
$cache_id = 'nav/' . substr($cache_id, 0, 3);
|
||||
$cache_id = explode('_', $cache_id);
|
||||
return $cache_id = 'navigations/' . $cache_id[1];
|
||||
}
|
||||
|
||||
return $cache_id;
|
||||
@ -803,9 +863,9 @@
|
||||
* @param bool $log - записать ошибки в лог? по умолчанию включено
|
||||
* @return array - асоциативный массив с результом запроса
|
||||
*/
|
||||
public function Query($query, $TTL = null, $cache_id = '', $log = true)
|
||||
public function Query ($query, $TTL = null, $cache_id = '', $log = true, $ext = '')
|
||||
{
|
||||
$cache_id = $this->cacheFile($cache_id);
|
||||
$cache_id = $this->cacheId($cache_id);
|
||||
|
||||
// Принудительная фильтрация запроса
|
||||
if (defined(SQL_QUERY_SANITIZE) && SQL_QUERY_SANITIZE)
|
||||
@ -824,7 +884,7 @@
|
||||
|
||||
if ($TTL && ($TTL != 'nocache' AND $TTL != null))
|
||||
{
|
||||
$cache_file = md5($query);
|
||||
$cache_file = md5($query) . $ext;
|
||||
|
||||
$cache_dir = BASE_DIR . '/tmp/cache/sql/' . (trim($cache_id) > ''
|
||||
? trim($cache_id) . '/'
|
||||
@ -833,13 +893,6 @@
|
||||
if (! file_exists($cache_dir))
|
||||
mkdir($cache_dir, 0766, true);
|
||||
|
||||
// Если стоит в настройках, запоминать все запросы
|
||||
if (defined('SQL_PROFILING') && SQL_PROFILING)
|
||||
{
|
||||
$_caller = $this->getCaller();
|
||||
$this->_query_list[] = array('caller' => $_caller, 'query' => $query, 'ttl' => $TTL, 'cache' => $cache_dir . $cache_file);
|
||||
}
|
||||
|
||||
if (! (file_exists($cache_dir . $cache_file) && ($TTL == -1 ? true : time() - filemtime($cache_dir . $cache_file) < $TTL)))
|
||||
{
|
||||
$res = $this->Real_Query($query, $log);
|
||||
@ -851,6 +904,19 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
// Если стоит в настройках, запоминать все запросы
|
||||
if (defined('SQL_PROFILING') && SQL_PROFILING)
|
||||
{
|
||||
$_caller = $this->getCaller();
|
||||
|
||||
$this->_query_list[] = array(
|
||||
'caller' => $_caller,
|
||||
'query' => $query,
|
||||
'ttl' => $TTL,
|
||||
'cache' => $cache_dir . $cache_file
|
||||
);
|
||||
}
|
||||
|
||||
$result = unserialize(file_get_contents($cache_dir . $cache_file));
|
||||
}
|
||||
|
||||
@ -1024,11 +1090,13 @@
|
||||
*/
|
||||
public function NumAllRows($query, $TTL = null, $cache_id = '')
|
||||
{
|
||||
$cache_id = $this->cacheId($cache_id);
|
||||
|
||||
// Если включен DEV MODE, то отключаем кеширование запросов
|
||||
if (defined('DEV_MODE') AND DEV_MODE)
|
||||
$TTL = null;
|
||||
|
||||
if ($TTL AND ($TTL != "nocache" AND $TTL != null))
|
||||
if ($TTL AND ($TTL != 'nocache' AND $TTL != null))
|
||||
{
|
||||
// Кол-во
|
||||
$cache_file = md5($query) . '.count';
|
||||
@ -1057,6 +1125,19 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
// Если стоит в настройках, запоминать все запросы
|
||||
if (defined('SQL_PROFILING') && SQL_PROFILING)
|
||||
{
|
||||
$_caller = $this->getCaller();
|
||||
|
||||
$this->_query_list[] = array(
|
||||
'caller' => $_caller,
|
||||
'query' => 'SELECT FOUND_ROWS();',
|
||||
'ttl' => $TTL,
|
||||
'cache' => $cache_dir . $cache_file
|
||||
);
|
||||
}
|
||||
|
||||
return file_get_contents($cache_dir . $cache_file);
|
||||
}
|
||||
}
|
||||
@ -1316,11 +1397,9 @@
|
||||
* @param $cache_id
|
||||
* @return bool
|
||||
*/
|
||||
public function clearcache($cache_id)
|
||||
public function clearCache($cache_id)
|
||||
{
|
||||
$cache_id = (substr($cache_id, 0, 3) == 'doc'
|
||||
? 'doc/' . intval(floor((int)substr($cache_id, 4)) / 1000) . '/' . (int)substr($cache_id, 4)
|
||||
: $cache_id);
|
||||
$cache_id = $this->cacheId($cache_id);
|
||||
|
||||
$cache_dir = BASE_DIR . '/tmp/cache/sql/' . (trim($cache_id) > ''
|
||||
? trim($cache_id) . '/'
|
||||
@ -1339,26 +1418,7 @@
|
||||
public function clearCacheUrl($cache_id)
|
||||
{
|
||||
$cache_id = str_replace('url_', '', $cache_id);
|
||||
$cache_id = 'url/' . substr($cache_id, 0, 3);
|
||||
|
||||
$cache_dir = BASE_DIR . '/tmp/cache/sql/' . (trim($cache_id) > ''
|
||||
? trim($cache_id) . '/'
|
||||
: '');
|
||||
|
||||
return rrmdir($cache_dir);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Метод, предназначенный для очищения кеша документов
|
||||
*
|
||||
* @param $cache_id
|
||||
* @return bool
|
||||
*/
|
||||
public function clearCacheNav($cache_id)
|
||||
{
|
||||
$cache_id = str_replace('nav_', '', $cache_id);
|
||||
$cache_id = 'nav/' . substr($cache_id, 0, 3);
|
||||
$cache_id = 'documents/urls/' . substr($cache_id, 0, 3);
|
||||
|
||||
$cache_dir = BASE_DIR . '/tmp/cache/sql/' . (trim($cache_id) > ''
|
||||
? trim($cache_id) . '/'
|
||||
@ -1374,31 +1434,10 @@
|
||||
* @param $cache_id
|
||||
* @return bool
|
||||
*/
|
||||
public function clearcacherequest($cache_id)
|
||||
public function clearCacheRequest($cache_id)
|
||||
{
|
||||
$cache_id = (substr($cache_id, 0, 3) == 'doc'
|
||||
? 'request/' . (int)substr($cache_id, 4)
|
||||
: $cache_id);
|
||||
|
||||
$cache_dir = BASE_DIR . '/tmp/cache/sql/' . (trim($cache_id) > ''
|
||||
? trim($cache_id) . '/'
|
||||
: '');
|
||||
|
||||
return rrmdir($cache_dir);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Метод, предназначенный для очищения кеша шаблонов
|
||||
*
|
||||
* @param $cache_id
|
||||
* @return bool
|
||||
*/
|
||||
public function clearcompile($cache_id)
|
||||
{
|
||||
$cache_id = (substr($cache_id, 0, 3) == 'doc'
|
||||
? 'compiled/' . intval(floor((int)substr($cache_id, 4)) / 1000) . '/' . (int)substr($cache_id, 4)
|
||||
: $cache_id);
|
||||
$cache_id = (int)str_replace('req_', '', $cache_id);
|
||||
$cache_id = 'request/' . (floor($cache_id / 1000)) . '/' . $cache_id;
|
||||
|
||||
$cache_dir = BASE_DIR . '/tmp/cache/sql/' . (trim($cache_id) > ''
|
||||
? trim($cache_id) . '/'
|
||||
@ -1414,15 +1453,15 @@
|
||||
* @param $cache_id
|
||||
* @return bool
|
||||
*/
|
||||
public function clear_request($cache_id)
|
||||
public function clearRequest($cache_id)
|
||||
{
|
||||
$request = request_get_settings($cache_id);
|
||||
|
||||
$cache_from_id = BASE_DIR . '/tmp/cache/sql/request/settings/' . (trim($request->Id) > ''
|
||||
$cache_from_id = BASE_DIR . '/tmp/cache/sql/requests/settings/' . (trim($request->Id) > ''
|
||||
? trim($request->Id) . '/'
|
||||
: '');
|
||||
|
||||
$cache_from_alias = BASE_DIR . '/tmp/cache/sql/request/settings/' . (trim($request->request_alias) > ''
|
||||
$cache_from_alias = BASE_DIR . '/tmp/cache/sql/requests/settings/' . (trim($request->request_alias) > ''
|
||||
? trim($request->request_alias) . '/'
|
||||
: '');
|
||||
|
||||
|
@ -235,7 +235,10 @@
|
||||
}
|
||||
|
||||
// Готовим шаблон имени файла
|
||||
$file_name = preg_replace_ru(array("/%SERVER%/", "/%DATE%/", "/%TIME%/"), array($_SERVER['SERVER_NAME'], date('d.m.y'), date('H.i.s')), DB_EXPORT_TPL);
|
||||
if (isset($_REQUEST['file_name']) AND $_REQUEST['file_name'] != '')
|
||||
$file_name = prepare_fname($_REQUEST['file_name']);
|
||||
else
|
||||
$file_name = preg_replace_ru(array("/%SERVER%/", "/%DATE%/", "/%TIME%/"), array($_SERVER['SERVER_NAME'], date('d.m.y'), date('H.i.s')), DB_EXPORT_TPL);
|
||||
|
||||
$dump = (defined('DB_EXPORT_GZ') && DB_EXPORT_GZ
|
||||
? gzencode($this->_database_dump)
|
||||
@ -329,7 +332,7 @@
|
||||
{
|
||||
// Получаем имя файла и его расширение (должно быть sql)
|
||||
$fupload_name = $_FILES['file']['name'];
|
||||
$gz = substr($fupload_name, -3)=='.gz';
|
||||
$gz = substr($fupload_name, -3) == '.gz';
|
||||
$end = substr($fupload_name, -3);
|
||||
|
||||
// Если расширение sql, тогда
|
||||
@ -426,7 +429,7 @@
|
||||
{
|
||||
global $AVE_DB, $AVE_Template;
|
||||
|
||||
$file = BASE_DIR . '/backup/'. $file;
|
||||
$file = BASE_DIR . '/tmp/backup/'. $file;
|
||||
|
||||
if (! is_file($file))
|
||||
return false;
|
||||
@ -436,9 +439,9 @@
|
||||
reportLog($AVE_Template->get_config_vars('DB_REPORT_DUMP_DEL_OK') . ' ('.basename($file).')');
|
||||
}
|
||||
else
|
||||
{
|
||||
reportLog($AVE_Template->get_config_vars('DB_REPORT_DUMP_DEL_ER') . ' ('.basename($file).')');
|
||||
}
|
||||
{
|
||||
reportLog($AVE_Template->get_config_vars('DB_REPORT_DUMP_DEL_ER') . ' ('.basename($file).')');
|
||||
}
|
||||
|
||||
header('Location:index.php?do=dbsettings&cp=' . SESSION);
|
||||
}
|
||||
@ -474,10 +477,10 @@
|
||||
$insert = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// В противном случае, если расширение файла НЕ sql, формируем сообщение с ошибкой
|
||||
$AVE_Template->assign('msg', '<li class="highlight red"><strong>Ошибка:</strong> ' . $AVE_Template->get_config_vars('MAIN_SQL_FILE_ERROR') . '</li>');
|
||||
}
|
||||
{
|
||||
// В противном случае, если расширение файла НЕ sql, формируем сообщение с ошибкой
|
||||
$AVE_Template->assign('msg', '<li class="highlight red"><strong>Ошибка:</strong> ' . $AVE_Template->get_config_vars('MAIN_SQL_FILE_ERROR') . '</li>');
|
||||
}
|
||||
}
|
||||
|
||||
// Если флаг готовности записи установлен, тогда
|
||||
|
@ -541,6 +541,19 @@
|
||||
}
|
||||
|
||||
|
||||
public static function _errorSql ($header, $body, $caller, $exit = false)
|
||||
{
|
||||
|
||||
Debug::_echo(preg_replace('/(\s)+/s', ' ', $header));
|
||||
Debug::_echo(DB::queryList($body));
|
||||
Debug::_echo($caller);
|
||||
|
||||
if ($exit)
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Вывод статистики
|
||||
*/
|
||||
|
7921
class/class.docs.php
7921
class/class.docs.php
File diff suppressed because it is too large
Load Diff
@ -222,6 +222,7 @@
|
||||
// согласно статусу, либо все модули, если статус не указан
|
||||
$sql = "
|
||||
SELECT
|
||||
# MODULES
|
||||
*
|
||||
FROM
|
||||
" . PREFIX . "_module
|
||||
@ -230,7 +231,7 @@
|
||||
ModuleName ASC
|
||||
";
|
||||
|
||||
$query = $AVE_DB->Query($sql, SYSTEM_CACHE_LIFETIME, 'modules');
|
||||
$query = $AVE_DB->Query($sql, -1, 'modules', true, '.modules');
|
||||
|
||||
while ($row = $query->FetchRow())
|
||||
$modules[$row->ModuleSysName] = $row;
|
||||
|
@ -243,7 +243,6 @@
|
||||
|
||||
//-- Стираем кеш навигации
|
||||
$this->clearCache($navigation_id, $_REQUEST['alias']);
|
||||
$this->clearCacheId($navigation_id, $_REQUEST['alias']);
|
||||
$this->clearCacheNav($navigation_id, $_REQUEST['alias']);
|
||||
|
||||
if ($sql === false)
|
||||
@ -1267,47 +1266,24 @@
|
||||
|
||||
function clearCache($id, $alias = '')
|
||||
{
|
||||
if (file_exists(BASE_DIR . '/tmp/cache/sql/nav/template-' . $id . '.cache'))
|
||||
unlink(BASE_DIR . '/tmp/cache/sql/nav/template-' . $id . '.cache');
|
||||
if (file_exists(BASE_DIR . '/tmp/cache/sql/navigations/' . $id . '/template.cache'))
|
||||
unlink(BASE_DIR . '/tmp/cache/sql/navigations/' . $id . '/template.cache');
|
||||
|
||||
if (file_exists(BASE_DIR . '/tmp/cache/sql/nav/template-' . $alias . '.cache'))
|
||||
unlink(BASE_DIR . '/tmp/cache/sql/nav/template-' . $alias . '.cache');
|
||||
if (file_exists(BASE_DIR . '/tmp/cache/sql/navigations/' . $alias . '/template.cache'))
|
||||
unlink(BASE_DIR . '/tmp/cache/sql/navigations/' . $alias . '/template.cache');
|
||||
|
||||
if (file_exists(BASE_DIR . '/tmp/cache/sql/nav/items-' . $id . '.cache'))
|
||||
unlink(BASE_DIR . '/tmp/cache/sql/nav/items-' . $id . '.cache');
|
||||
if (file_exists(BASE_DIR . '/tmp/cache/sql/navigations/' . $id . '/items.cache'))
|
||||
unlink(BASE_DIR . '/tmp/cache/sql/navigations/' . $id . '/items.cache');
|
||||
|
||||
if (file_exists(BASE_DIR . '/tmp/cache/sql/nav/items-' . $alias . '.cache'))
|
||||
unlink(BASE_DIR . '/tmp/cache/sql/nav/items-' . $alias . '.cache');
|
||||
}
|
||||
|
||||
|
||||
function clearCacheId($id, $alias = '')
|
||||
{
|
||||
$dir_id = BASE_DIR . '/tmp/cache/sql/nav_' . $id;
|
||||
$dir_alias = BASE_DIR . '/tmp/cache/sql/nav_' . $alias;
|
||||
|
||||
if (file_exists($dir_id))
|
||||
{
|
||||
foreach (glob($dir_id . '/*') as $file)
|
||||
{
|
||||
unlink($file);
|
||||
}
|
||||
}
|
||||
|
||||
if (file_exists($dir_alias))
|
||||
{
|
||||
foreach (glob($dir_alias . '/*') as $file)
|
||||
{
|
||||
unlink($file);
|
||||
}
|
||||
}
|
||||
if (file_exists(BASE_DIR . '/tmp/cache/sql/navigations/' . $alias . '/items.cache'))
|
||||
unlink(BASE_DIR . '/tmp/cache/sql/navigations/' . $alias . '/items.cache');
|
||||
}
|
||||
|
||||
|
||||
function clearCacheNav($id, $alias)
|
||||
{
|
||||
$cache_id = str_replace('nav_', '', $id);
|
||||
$cache_id = 'nav/' . substr($cache_id, 0, 3);
|
||||
$cache_id = explode('_', $id);
|
||||
$cache_id = 'navigations/' . $cache_id[1];
|
||||
|
||||
$cache_dir = BASE_DIR . '/tmp/cache/sql/' . (trim($cache_id) > ''
|
||||
? trim($cache_id) . '/'
|
||||
@ -1315,9 +1291,8 @@
|
||||
|
||||
rrmdir($cache_dir);
|
||||
|
||||
|
||||
$cache_id = str_replace('nav_', '', $alias);
|
||||
$cache_id = 'nav/' . substr($cache_id, 0, 3);
|
||||
$cache_id = explode('_', $alias);
|
||||
$cache_id = 'navigations/' . $cache_id[1];
|
||||
|
||||
$cache_dir = BASE_DIR . '/tmp/cache/sql/' . (trim($cache_id) > ''
|
||||
? trim($cache_id) . '/'
|
||||
|
@ -110,12 +110,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
foreach($pages as $page)
|
||||
foreach ($pages as $page)
|
||||
{
|
||||
if ($page >= 1 && $page <= $total_pages)
|
||||
{
|
||||
// Текущий номер страницы (активная страница)
|
||||
if ($curent_page == $page)
|
||||
if ($curent_page == $page && $curent_page != 1)
|
||||
{
|
||||
$search = array('[link]', '[page]', '[name]');
|
||||
$replace = array($template_label, $curent_page, $curent_page);
|
||||
@ -222,13 +222,28 @@
|
||||
|
||||
$containers = $AVE_DB->Query("
|
||||
SELECT
|
||||
# PAGINATION = $id
|
||||
*
|
||||
FROM
|
||||
" . PREFIX . "_paginations
|
||||
WHERE
|
||||
id = '" . $id . "'
|
||||
")->FetchAssocArray();
|
||||
", -1, 'paginations', true, '.paginations')->FetchAssocArray();
|
||||
|
||||
return $containers;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Очистка кеша постраничной навигации
|
||||
*
|
||||
* @param void
|
||||
* @return
|
||||
*/
|
||||
public static function clearCache()
|
||||
{
|
||||
global $AVE_DB;
|
||||
|
||||
$AVE_DB->clearCache('paginations');
|
||||
}
|
||||
}
|
109
class/class.porter.php
Normal file
109
class/class.porter.php
Normal file
@ -0,0 +1,109 @@
|
||||
<?php
|
||||
class Lingua_Stem_Ru
|
||||
{
|
||||
public $VERSION = "0.02";
|
||||
public $Stem_Caching = 1;
|
||||
public $Stem_Cache = array();
|
||||
public $VOWEL = '/аеиоуыэюя/';
|
||||
public $PERFECTIVEGROUND = '/((ив|ивши|ившись|ыв|ывши|ывшись)|((?<=[ая])(в|вши|вшись)))$/';
|
||||
public $REFLEXIVE = '/(с[яь])$/';
|
||||
public $ADJECTIVE = '/(ее|ие|ые|ое|ими|ыми|ей|ий|ый|ой|ем|им|ым|ом|его|ого|ему|ому|их|ых|ую|юю|ая|яя|ою|ею)$/';
|
||||
public $PARTICIPLE = '/((ивш|ывш|ующ)|((?<=[ая])(ем|нн|вш|ющ|щ)))$/';
|
||||
public $VERB = '/((ила|ыла|ена|ейте|уйте|ите|или|ыли|ей|уй|ил|ыл|им|ым|ен|ило|ыло|ено|ят|ует|уют|ит|ыт|ены|ить|ыть|ишь|ую|ю)|((?<=[ая])(ла|на|ете|йте|ли|й|л|ем|н|ло|но|ет|ют|ны|ть|ешь|нно)))$/';
|
||||
public $NOUN = '/(а|ев|ов|ие|ье|е|иями|ями|ами|еи|ии|и|ией|ей|ой|ий|й|иям|ям|ием|ем|ам|ом|о|у|ах|иях|ях|ы|ь|ию|ью|ю|ия|ья|я)$/';
|
||||
public $RVRE = '/^(.*?[аеиоуыэюя])(.*)$/';
|
||||
public $DERIVATIONAL = '/[^аеиоуыэюя][аеиоуыэюя]+[^аеиоуыэюя]+[аеиоуыэюя].*(?<=о)сть?$/';
|
||||
|
||||
function s(&$s, $re, $to)
|
||||
{
|
||||
$orig = $s;
|
||||
$s = preg_replace($re, $to, $s);
|
||||
return $orig !== $s;
|
||||
}
|
||||
|
||||
function m($s, $re)
|
||||
{
|
||||
return preg_match($re, $s);
|
||||
}
|
||||
|
||||
function stem_word($word)
|
||||
{
|
||||
$word = mb_strtolower($word);
|
||||
//$word = strtr($word, 'ё', 'е');
|
||||
# Check against cache of stemmed words
|
||||
if ($this->Stem_Caching && isset($this->Stem_Cache[$word]))
|
||||
{
|
||||
return $this->Stem_Cache[$word];
|
||||
}
|
||||
|
||||
$stem = $word;
|
||||
|
||||
do
|
||||
{
|
||||
if (! preg_match($this->RVRE, $word, $p))
|
||||
break;
|
||||
|
||||
$start = $p[1];
|
||||
$RV = $p[2];
|
||||
|
||||
if (!$RV)
|
||||
break;
|
||||
|
||||
# Step 1
|
||||
if (! $this->s($RV, $this->PERFECTIVEGROUND, ''))
|
||||
{
|
||||
$this->s($RV, $this->REFLEXIVE, '');
|
||||
|
||||
if ($this->s($RV, $this->ADJECTIVE, ''))
|
||||
{
|
||||
$this->s($RV, $this->PARTICIPLE, '');
|
||||
}
|
||||
else
|
||||
{
|
||||
if (! $this->s($RV, $this->VERB, ''))
|
||||
$this->s($RV, $this->NOUN, '');
|
||||
}
|
||||
}
|
||||
|
||||
# Step 2
|
||||
$this->s($RV, '/и$/', '');
|
||||
|
||||
# Step 3
|
||||
if ($this->m($RV, $this->DERIVATIONAL))
|
||||
$this->s($RV, '/ость?$/', '');
|
||||
|
||||
# Step 4
|
||||
if (!$this->s($RV, '/ь$/', ''))
|
||||
{
|
||||
$this->s($RV, '/ейше?/', '');
|
||||
$this->s($RV, '/нн$/', 'н');
|
||||
}
|
||||
|
||||
$stem = $start.$RV;
|
||||
}
|
||||
while(false);
|
||||
|
||||
if ($this->Stem_Caching)
|
||||
$this->Stem_Cache[$word] = $stem;
|
||||
|
||||
return $stem;
|
||||
}
|
||||
|
||||
function stem_caching($parm_ref)
|
||||
{
|
||||
$caching_level = @$parm_ref['-level'];
|
||||
if ($caching_level) {
|
||||
if (!$this->m($caching_level, '/^[012]$/')) {
|
||||
die(__CLASS__ . "::stem_caching() - Legal values are '0','1' or '2'. '$caching_level' is not a legal value");
|
||||
}
|
||||
$this->Stem_Caching = $caching_level;
|
||||
}
|
||||
return $this->Stem_Caching;
|
||||
}
|
||||
|
||||
function clear_stem_cache()
|
||||
{
|
||||
$this->Stem_Cache = array();
|
||||
}
|
||||
}
|
||||
?>
|
@ -13,10 +13,6 @@
|
||||
class AVE_Request
|
||||
{
|
||||
|
||||
/**
|
||||
* Свойстав класса
|
||||
*/
|
||||
|
||||
/**
|
||||
* Количество Запросов на странице
|
||||
*
|
||||
@ -24,9 +20,6 @@
|
||||
*/
|
||||
public $_limit = 25;
|
||||
|
||||
/**
|
||||
* Внутренние методы
|
||||
*/
|
||||
|
||||
/**
|
||||
* Метод, предназначенный для получения и вывода списка Запросов
|
||||
@ -64,8 +57,10 @@
|
||||
$items = array();
|
||||
|
||||
$sql = $AVE_DB->Query("
|
||||
SELECT *
|
||||
FROM " . PREFIX . "_request
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
" . PREFIX . "_request
|
||||
ORDER BY Id ASC
|
||||
" . $limit . "
|
||||
");
|
||||
@ -93,15 +88,17 @@
|
||||
|
||||
static $requests = array();
|
||||
|
||||
if (!isset($requests[$request_id]))
|
||||
if (! isset($requests[$request_id]))
|
||||
{
|
||||
$requests[$request_id] = $AVE_DB->Query("
|
||||
SELECT
|
||||
rubric_id,
|
||||
request_title,
|
||||
request_description
|
||||
FROM " . PREFIX . "_request
|
||||
WHERE Id = '" . $request_id . "'
|
||||
FROM
|
||||
" . PREFIX . "_request
|
||||
WHERE
|
||||
Id = '" . $request_id . "'
|
||||
LIMIT 1
|
||||
")->FetchRow();
|
||||
}
|
||||
@ -267,6 +264,7 @@
|
||||
request_show_pagination = '" . (isset($_REQUEST['request_show_pagination']) ? (int)$_REQUEST['request_show_pagination'] : 0) . "',
|
||||
request_pagination = '" . (isset($_REQUEST['request_pagination']) ? (int)$_REQUEST['request_pagination'] : 1) . "',
|
||||
request_use_query = '" . (isset($_REQUEST['request_use_query']) ? (int)$_REQUEST['request_use_query'] : 0) . "',
|
||||
request_count_items = '" . (isset($_REQUEST['request_count_items']) ? (int)$_REQUEST['request_count_items'] : 0) . "',
|
||||
request_hide_current = '" . (int)$_REQUEST['request_hide_current'] . "',
|
||||
request_only_owner = '" . (int)$_REQUEST['request_only_owner'] . "',
|
||||
request_cache_lifetime = '" . (int)$_REQUEST['request_cache_lifetime'] . "',
|
||||
@ -293,12 +291,12 @@
|
||||
else
|
||||
{
|
||||
// В противном случае выполняем переход к списку запросов
|
||||
if (!$_REQUEST['next_edit']) {
|
||||
if (!$_REQUEST['next_edit'])
|
||||
header('Location:index.php?do=request&cp=' . SESSION);
|
||||
} else {
|
||||
else
|
||||
header('Location:index.php?do=request&action=edit&Id=' . $iid . '&rubric_id='.$_REQUEST['rubric_id'].'&cp=' . SESSION);
|
||||
}
|
||||
}
|
||||
|
||||
exit;
|
||||
}
|
||||
}
|
||||
@ -321,8 +319,10 @@
|
||||
// Выполняем запрос к БД и получаем всю информацию о запросе
|
||||
$sql = $AVE_DB->Query("
|
||||
SELECT *
|
||||
FROM " . PREFIX . "_request
|
||||
WHERE Id = '" . $request_id . "'
|
||||
FROM
|
||||
" . PREFIX . "_request
|
||||
WHERE
|
||||
Id = '" . $request_id . "'
|
||||
");
|
||||
|
||||
if ($sql->_result->num_rows == 0)
|
||||
@ -345,9 +345,7 @@
|
||||
$paginations = array();
|
||||
|
||||
while ($pages = $sql->FetchRow())
|
||||
{
|
||||
array_push($paginations, $pages);
|
||||
}
|
||||
|
||||
// Передаем данные в шаблон и отображаем страницу с редактированием запроса
|
||||
$AVE_Template->assign('row', $row);
|
||||
@ -363,11 +361,14 @@
|
||||
|
||||
$sql = $AVE_DB->Query("
|
||||
SELECT *
|
||||
FROM " . PREFIX . "_request
|
||||
WHERE Id = '" . $request_id . "'
|
||||
FROM
|
||||
" . PREFIX . "_request
|
||||
WHERE
|
||||
Id = '" . $request_id . "'
|
||||
");
|
||||
|
||||
if($sql->_result->num_rows == 0) {
|
||||
if ($sql->_result->num_rows == 0)
|
||||
{
|
||||
header('Location:index.php?do=request&cp=' . SESSION);
|
||||
exit;
|
||||
}
|
||||
@ -387,6 +388,7 @@
|
||||
$row->request_show_pagination = (isset($_REQUEST['request_show_pagination']) ? $_REQUEST['request_show_pagination'] : 0);
|
||||
$row->request_pagination = (isset($_REQUEST['request_pagination']) ? (int)($_REQUEST['request_pagination']) : 1);
|
||||
$row->request_use_query = (isset($_REQUEST['request_use_query']) ? $_REQUEST['request_use_query'] : 0);
|
||||
$row->request_count_items = (isset($_REQUEST['request_count_items']) ? $_REQUEST['request_count_items'] : 0);
|
||||
$row->request_only_owner = (isset($_REQUEST['request_only_owner']) ? (int)($_REQUEST['request_only_owner']) : 0);
|
||||
$row->request_cache_lifetime = (isset($_REQUEST['request_cache_lifetime']) ? (int)($_REQUEST['request_cache_lifetime']) : 0);
|
||||
$row->request_lang = (isset($_REQUEST['request_lang']) ? (int)$_REQUEST['request_lang'] : 0);
|
||||
@ -430,7 +432,7 @@
|
||||
|
||||
if ($save === false)
|
||||
{
|
||||
if(isAjax())
|
||||
if (isAjax())
|
||||
{
|
||||
$header = $AVE_Template->get_config_vars('REQUEST_ERROR');
|
||||
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => 'error'));
|
||||
@ -461,6 +463,7 @@
|
||||
request_show_pagination = '" . (isset($_REQUEST['request_show_pagination']) ? (int)$_REQUEST['request_show_pagination'] : 0) . "',
|
||||
request_pagination = '" . (isset($_REQUEST['request_pagination']) ? (int)$_REQUEST['request_pagination'] : 1) . "',
|
||||
request_use_query = '" . (isset($_REQUEST['request_use_query']) ? (int)$_REQUEST['request_use_query'] : 0) . "',
|
||||
request_count_items = '" . (isset($_REQUEST['request_count_items']) ? (int)$_REQUEST['request_count_items'] : 0) . "',
|
||||
request_hide_current = '" . @(int)$_REQUEST['request_hide_current'] . "',
|
||||
request_only_owner = '" . @(int)$_REQUEST['request_only_owner'] . "',
|
||||
request_cache_lifetime = '" . (int)($_REQUEST['request_cache_lifetime']>'' ? $_REQUEST['request_cache_lifetime'] : '-1') . "',
|
||||
@ -469,19 +472,14 @@
|
||||
request_show_statistic = '" . (isset($_REQUEST['request_show_statistic']) ? (int)$_REQUEST['request_show_statistic'] : 0). "',
|
||||
request_external = '" . (isset($_REQUEST['request_external']) ? (int)$_REQUEST['request_external'] : 0). "',
|
||||
request_ajax = '" . (isset($_REQUEST['request_ajax']) ? (int)$_REQUEST['request_ajax'] : 0). "',
|
||||
request_show_sql = '" . (isset($_REQUEST['request_show_sql']) ? (int)$_REQUEST['request_show_sql'] : 0). "'
|
||||
request_show_sql = '" . (isset($_REQUEST['request_show_sql']) ? (int)$_REQUEST['request_show_sql'] : 0). "',
|
||||
request_changed = '" . time() . "',
|
||||
request_changed_elements = '" . time() . "'
|
||||
WHERE
|
||||
Id = '" . $request_id . "'
|
||||
");
|
||||
|
||||
$sql = $AVE_DB->Query("SELECT Id FROM " . PREFIX . "_documents WHERE rubric_id = ".$_REQUEST['rubric_id']);
|
||||
|
||||
$AVE_DB->clear_request($request_id);
|
||||
|
||||
while ($row = $sql->FetchRow())
|
||||
{
|
||||
$AVE_DB->clearcacherequest('doc_' . $row->Id);
|
||||
}
|
||||
$AVE_DB->clearRequest($request_id);
|
||||
|
||||
// Сохраняем системное сообщение в журнал
|
||||
reportLog($AVE_Template->get_config_vars('REQUEST_SAVE_CHA_SUC') . ' (' . stripslashes(htmlspecialchars($_REQUEST['request_title'], ENT_QUOTES)) . ') (Id:' . $request_id . ')');
|
||||
@ -491,7 +489,9 @@
|
||||
{
|
||||
header('Location:index.php?do=request&cp=' . SESSION);
|
||||
exit;
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
$message = $AVE_Template->get_config_vars('REQUEST_TEMPLATE_SAVED');
|
||||
$header = $AVE_Template->get_config_vars('REQUEST_SUCCESS');
|
||||
$theme = 'accept';
|
||||
@ -515,11 +515,14 @@
|
||||
// Выполняем запрос к БД на получение информации о копиреумом запросе
|
||||
$sql = $AVE_DB->Query("
|
||||
SELECT *
|
||||
FROM " . PREFIX . "_request
|
||||
WHERE Id = '" . $request_id . "'
|
||||
FROM
|
||||
" . PREFIX . "_request
|
||||
WHERE
|
||||
Id = '" . $request_id . "'
|
||||
");
|
||||
|
||||
if($sql->_result->num_rows == 0) {
|
||||
if ($sql->_result->num_rows == 0)
|
||||
{
|
||||
header('Location:index.php?do=request&cp=' . SESSION);
|
||||
exit;
|
||||
}
|
||||
@ -543,6 +546,7 @@
|
||||
request_asc_desc = '" . $row->request_asc_desc . "',
|
||||
request_show_pagination = '" . $row->request_show_pagination . "',
|
||||
request_use_query = '" . $row->request_use_query . "',
|
||||
request_count_items = '" . $row->request_count_items . "',
|
||||
request_hide_current = '" . $row->request_hide_current . "',
|
||||
request_lang = '" . $row->request_lang . "',
|
||||
request_cache_elements = '" . (isset($row->request_cache_elements) ? $row->request_cache_elements : 0) . "'
|
||||
@ -557,8 +561,10 @@
|
||||
// Выполняем запрос к БД и получаем все условия запроса для копируемого запроса
|
||||
$sql = $AVE_DB->Query("
|
||||
SELECT *
|
||||
FROM " . PREFIX . "_request_conditions
|
||||
WHERE request_id = '" . $request_id . "'
|
||||
FROM
|
||||
" . PREFIX . "_request_conditions
|
||||
WHERE
|
||||
request_id = '" . $request_id . "'
|
||||
");
|
||||
|
||||
// Обрабатываем полученные данные и
|
||||
@ -566,7 +572,8 @@
|
||||
{
|
||||
// Выполняем запрос к БД на добавление условий для нового, скопированного запроса
|
||||
$AVE_DB->Query("
|
||||
INSERT " . PREFIX . "_request_conditions
|
||||
INSERT
|
||||
" . PREFIX . "_request_conditions
|
||||
SET
|
||||
request_id = '" . $iid . "',
|
||||
condition_compare = '" . $row_cond->condition_compare . "',
|
||||
@ -594,18 +601,22 @@
|
||||
|
||||
// Выполняем запрос к БД на удаление общей информации о запросе
|
||||
$AVE_DB->Query("
|
||||
DELETE
|
||||
FROM " . PREFIX . "_request
|
||||
WHERE Id = '" . $request_id . "'
|
||||
DELETE FROM
|
||||
" . PREFIX . "_request
|
||||
WHERE
|
||||
Id = '" . $request_id . "'
|
||||
");
|
||||
|
||||
// Выполняем запрос к БД на удаление условий запроса
|
||||
$AVE_DB->Query("
|
||||
DELETE
|
||||
FROM " . PREFIX . "_request_conditions
|
||||
WHERE request_id = '" . $request_id . "'
|
||||
DELETE FROM
|
||||
" . PREFIX . "_request_conditions
|
||||
WHERE
|
||||
request_id = '" . $request_id . "'
|
||||
");
|
||||
|
||||
$AVE_DB->clearRequest($request_id);
|
||||
|
||||
// Сохраняем системное сообщение в журнал
|
||||
reportLog($AVE_Template->get_config_vars('REQUEST_DELETE_SUC') . ' (' . stripslashes(htmlspecialchars($request_name, ENT_QUOTES)) . ') ( Id:' . $request_id . ' )');
|
||||
|
||||
@ -633,8 +644,10 @@
|
||||
// Выполняем запрос к БД и получаем список полей у той рубрики, к которой относится данный запрос
|
||||
$sql = $AVE_DB->Query("
|
||||
SELECT *
|
||||
FROM " . PREFIX . "_rubric_fields
|
||||
WHERE rubric_id = '" . $_REQUEST['rubric_id'] . "'
|
||||
FROM
|
||||
" . PREFIX . "_rubric_fields
|
||||
WHERE
|
||||
rubric_id = '" . $_REQUEST['rubric_id'] . "'
|
||||
ORDER BY rubric_field_position ASC
|
||||
");
|
||||
|
||||
@ -649,27 +662,27 @@
|
||||
// Выполняем запрос к БД и получаем условия запроса
|
||||
$sql = $AVE_DB->Query("
|
||||
SELECT *
|
||||
FROM " . PREFIX . "_request_conditions
|
||||
WHERE request_id = '" . $request_id . "'
|
||||
FROM
|
||||
" . PREFIX . "_request_conditions
|
||||
WHERE
|
||||
request_id = '" . $request_id . "'
|
||||
ORDER BY condition_position ASC
|
||||
");
|
||||
|
||||
// Обрабатываем полученные данные и формируем массив
|
||||
while ($row = $sql->FetchRow())
|
||||
{
|
||||
array_push($conditions, $row);
|
||||
}
|
||||
|
||||
// Передаем данные в шаблон и отображаем страницу с редактированием условий
|
||||
$AVE_Template->assign('request_title', $this->get_request_by_id($request_id)->request_title);
|
||||
$AVE_Template->assign('fields', $fields);
|
||||
$AVE_Template->assign('conditions', $conditions);
|
||||
|
||||
if (isAjax() && (isset($_REQUEST['ajax']) && $_REQUEST['ajax'] == 1)){
|
||||
if (isAjax() && (isset($_REQUEST['ajax']) && $_REQUEST['ajax'] == 1))
|
||||
$AVE_Template->assign('content', $AVE_Template->fetch('request/cond_list.tpl'));
|
||||
} else {
|
||||
else
|
||||
$AVE_Template->assign('content', $AVE_Template->fetch('request/conditions.tpl'));
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'sort':
|
||||
@ -677,7 +690,8 @@
|
||||
foreach ($_REQUEST['sort'] as $position => $cond_id)
|
||||
{
|
||||
$AVE_DB->Query("
|
||||
UPDATE " . PREFIX . "_request_conditions
|
||||
UPDATE
|
||||
" . PREFIX . "_request_conditions
|
||||
SET
|
||||
condition_position = '" . (int)$position . "'
|
||||
WHERE
|
||||
@ -685,7 +699,8 @@
|
||||
");
|
||||
}
|
||||
|
||||
if (isAjax()){
|
||||
if (isAjax())
|
||||
{
|
||||
$message = $AVE_Template->get_config_vars('REQUEST_SORTED');
|
||||
$header = $AVE_Template->get_config_vars('REQUEST_SUCCESS');
|
||||
$theme = 'accept';
|
||||
@ -756,9 +771,10 @@
|
||||
{
|
||||
// Выполняем запрос к БД на удаление условий
|
||||
$AVE_DB->Query("
|
||||
DELETE
|
||||
FROM " . PREFIX . "_request_conditions
|
||||
WHERE Id = '" . $condition_id . "'
|
||||
DELETE FROM
|
||||
" . PREFIX . "_request_conditions
|
||||
WHERE
|
||||
Id = '" . $condition_id . "'
|
||||
");
|
||||
}
|
||||
|
||||
@ -771,14 +787,29 @@
|
||||
// require(BASE_DIR . '/functions/func.parserequest.php');
|
||||
request_get_condition_sql_string($request_id, true);
|
||||
|
||||
if (!isAjax() && $_REQUEST['ajax'] != '1'){
|
||||
$AVE_DB->Query("
|
||||
UPDATE
|
||||
" . PREFIX . "_requests
|
||||
SET
|
||||
request_changed = '" . time() . "'
|
||||
WHERE
|
||||
Id = '" . $request_id . "'
|
||||
");
|
||||
|
||||
$AVE_DB->clearRequest($request_id);
|
||||
|
||||
if (!isAjax() && $_REQUEST['ajax'] != '1')
|
||||
{
|
||||
// Выполняем обновление страницы
|
||||
header('Location:index.php?do=request&action=conditions&rubric_id=' . $_REQUEST['rubric_id'] . '&Id=' . $request_id . '&cp=' . SESSION . ($_REQUEST['pop'] ? '&pop=1' : ''));
|
||||
exit;
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
|
||||
exit;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
// Если пользователь добавил новое условие
|
||||
@ -787,7 +818,8 @@
|
||||
{
|
||||
// Выполняем запрос к БД на добавление нового условия
|
||||
$sql = $AVE_DB->Query("
|
||||
INSERT " . PREFIX . "_request_conditions
|
||||
INSERT
|
||||
" . PREFIX . "_request_conditions
|
||||
SET
|
||||
request_id = '" . $request_id . "',
|
||||
condition_compare = '" . $_POST['new_operator'] . "',
|
||||
@ -795,16 +827,22 @@
|
||||
condition_value = '" . $_POST['new_value'] . "',
|
||||
condition_join = '" . $_POST['oper_new'] . "'
|
||||
");
|
||||
if ($sql->_result === false) {
|
||||
|
||||
if ($sql->_result === false)
|
||||
{
|
||||
$message = $AVE_Template->get_config_vars('REQUEST_COND_NEW_ERR');
|
||||
$header = $AVE_Template->get_config_vars('REQUEST_ERROR');
|
||||
$theme = 'error';
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
// Сохраняем системное сообщение в журнал
|
||||
reportLog('' . $AVE_Template->get_config_vars('REQUEST_COND_ADD_SUC') . ' (' . stripslashes(htmlspecialchars($this->get_request_by_id($request_id)->request_title, ENT_QUOTES)) . ') - ( Id: '.$request_id.' )');
|
||||
}
|
||||
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
$message = $AVE_Template->get_config_vars('REQUEST_COND_VALUE_ERR');
|
||||
$header = $AVE_Template->get_config_vars('REQUEST_ERROR');
|
||||
$theme = 'error';
|
||||
@ -815,6 +853,17 @@
|
||||
// require(BASE_DIR . '/functions/func.parserequest.php');
|
||||
request_get_condition_sql_string($request_id, true);
|
||||
|
||||
$AVE_DB->Query("
|
||||
UPDATE
|
||||
" . PREFIX . "_requests
|
||||
SET
|
||||
request_changed = '" . time() . "'
|
||||
WHERE
|
||||
Id = '" . $request_id . "'
|
||||
");
|
||||
|
||||
$AVE_DB->clearRequest($request_id);
|
||||
|
||||
if (! isAjax())
|
||||
{
|
||||
header('Location:index.php?do=request&action=conditions&rubric_id=' . $_REQUEST['rubric_id'] . '&Id=' . $request_id . '&cp=' . SESSION);
|
||||
@ -828,6 +877,7 @@
|
||||
$header = $AVE_Template->get_config_vars('REQUEST_SUCCESS');
|
||||
$theme = 'accept';
|
||||
}
|
||||
|
||||
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
|
||||
exit;
|
||||
}
|
||||
@ -835,6 +885,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function conditionFieldChange($field_id, $cond_id)
|
||||
{
|
||||
global $AVE_DB, $AVE_Template;
|
||||
@ -845,12 +896,14 @@
|
||||
$AVE_Template->assign('content', $AVE_Template->fetch('request/change.tpl'));
|
||||
}
|
||||
|
||||
|
||||
function conditionFieldChangeSave($field_id, $cond_id)
|
||||
{
|
||||
global $AVE_DB, $AVE_Template;
|
||||
|
||||
$sql = $AVE_DB->Query("
|
||||
UPDATE " . PREFIX . "_request_conditions
|
||||
UPDATE
|
||||
" . PREFIX . "_request_conditions
|
||||
SET
|
||||
condition_field_id = '" . $field_id . "'
|
||||
WHERE
|
||||
@ -859,6 +912,26 @@
|
||||
|
||||
request_get_condition_sql_string((int)$_REQUEST['req_id'], true);
|
||||
|
||||
$request_id = $AVE_DB->Query("
|
||||
SELECT
|
||||
request_id
|
||||
FROM
|
||||
" . PREFIX . "_request_conditions
|
||||
WHERE
|
||||
Id = '" . $cond_id . "'
|
||||
")->GetCell();
|
||||
|
||||
$AVE_DB->Query("
|
||||
UPDATE
|
||||
" . PREFIX . "_requests
|
||||
SET
|
||||
request_changed = '" . time() . "'
|
||||
WHERE
|
||||
Id = '" . $request_id . "'
|
||||
");
|
||||
|
||||
$AVE_DB->clearRequest($request_id);
|
||||
|
||||
// Передаем данные в шаблон и отображаем страницу с редактированием условий
|
||||
$AVE_Template->assign('field_id', $field_id);
|
||||
$AVE_Template->assign('cond_id', $cond_id);
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,401 +1,376 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* AVE.cms
|
||||
*
|
||||
* @package AVE.cms
|
||||
* @version 3.x
|
||||
* @filesource
|
||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Подключаем файл шаблонизатора Smarty
|
||||
*/
|
||||
require(BASE_DIR . '/lib/Smarty/Smarty.class.php');
|
||||
|
||||
/**
|
||||
* Расширение класса шаблонизатора Smarty
|
||||
*
|
||||
*/
|
||||
class AVE_Template extends Smarty
|
||||
{
|
||||
/**
|
||||
* СВОЙСТВА
|
||||
*/
|
||||
|
||||
/**
|
||||
* Конструктор
|
||||
* AVE.cms
|
||||
*
|
||||
* @param string $template_dir путь к директории шаблонов по умолчанию
|
||||
* @return AVE_Template
|
||||
*/
|
||||
function __construct($template_dir)
|
||||
{
|
||||
/**
|
||||
* Путь к директории шаблонов по умолчанию.
|
||||
* Если вы не передадите тип ресурса во время подключения файлов, они будут искаться здесь.
|
||||
*/
|
||||
$this->template_dir = $template_dir;
|
||||
|
||||
/**
|
||||
* Имя каталога, в котором хранятся компилированные шаблоны.
|
||||
*/
|
||||
$this->compile_dir = BASE_DIR . '/tmp/cache/smarty';
|
||||
|
||||
/**
|
||||
* Имя каталога, в котором хранится кэш.
|
||||
*/
|
||||
$this->cache_dir_root = BASE_DIR . '/tmp/cache';
|
||||
|
||||
/**
|
||||
* Имя каталога, в котором хранится кэш шаблонов.
|
||||
*/
|
||||
$this->cache_dir = BASE_DIR . '/tmp/cache/tpl';
|
||||
|
||||
/**
|
||||
* Имя каталога, в котором хранится кэш модулей.
|
||||
*/
|
||||
$this->module_cache_dir = BASE_DIR . '/tmp/cache/module';
|
||||
|
||||
/**
|
||||
* Имя каталога, в котором хранится сессии пользователей.
|
||||
*/
|
||||
$this->session_dir = BASE_DIR . '/tmp/session';
|
||||
|
||||
/**
|
||||
* Имя каталога, в котором хранится сессии пользователей.
|
||||
*/
|
||||
$this->sql_cache_dir = BASE_DIR . '/tmp/cache/sql';
|
||||
|
||||
/**
|
||||
* Использование поддиректорий для хранения кэша и скомпилированных шаблонов.
|
||||
*/
|
||||
$this->use_sub_dirs = SMARTY_USE_SUB_DIRS;
|
||||
|
||||
/**
|
||||
* При каждом вызове РНР-приложения Smarty проверяет, изменился или нет текущий шаблон
|
||||
* с момента последней компиляции. Если шаблон изменился, он перекомпилируется.
|
||||
* В случае, если шаблон еще не был скомпилирован, его компиляция производится
|
||||
* с игнорированием значения этого параметра.
|
||||
*/
|
||||
$this->compile_check = SMARTY_COMPILE_CHECK;
|
||||
|
||||
/**
|
||||
* Активирует debugging console - порожденное при помощи javascript окно браузера,
|
||||
* содержащее информацию о подключенных шаблонах и загруженных переменных для текущей страницы.
|
||||
*/
|
||||
$this->debugging = SMARTY_DEBUGGING;
|
||||
|
||||
/**
|
||||
* Регистрация плагинов-функций Smarty.
|
||||
* Передается наименование функции шаблона и имя функции, реализующей ее.
|
||||
*/
|
||||
$this->register_function('check_permission', 'check_permission');
|
||||
$this->register_function('get_home_link', 'get_home_link');
|
||||
$this->register_function('num_format', 'num_format');
|
||||
$this->register_function('thumb', 'make_thumbnail');
|
||||
|
||||
/**
|
||||
* Регистрация плагинов-модификаторов Smarty.
|
||||
* Передается имя модификатора и имя функции, реализующей его.
|
||||
*/
|
||||
$this->register_modifier('pretty_date', 'pretty_date');
|
||||
$this->register_modifier('translate_date', 'translate_date');
|
||||
$this->register_modifier('utf8', 'utf8');
|
||||
|
||||
// плагин позволяющий поставить метки шаблонов
|
||||
// для быстрого поиска шаблона отвечающего за вывод
|
||||
// перед использованием очистить cache/smarty
|
||||
// $this->register_postfilter('add_template_comment');
|
||||
|
||||
/**
|
||||
* Присваиваем общие значения для шаблонов.
|
||||
* Можно явно передавать пары имя/значение,
|
||||
* или ассоциативные массивы, содержащие пары имя/значение.
|
||||
*/
|
||||
$assign['BASE_DIR'] = BASE_DIR;
|
||||
$assign['ABS_PATH'] = ABS_PATH;
|
||||
$assign['DATE_FORMAT'] = DATE_FORMAT;
|
||||
$assign['TIME_FORMAT'] = TIME_FORMAT;
|
||||
$assign['PAGE_NOT_FOUND_ID'] = PAGE_NOT_FOUND_ID;
|
||||
|
||||
$this->assign($assign);
|
||||
}
|
||||
|
||||
/**
|
||||
* ВНУТРЕННИЕ МЕТОДЫ
|
||||
*/
|
||||
|
||||
/**
|
||||
* Проверка наличия одноименного шаблона в директории темы дизайна.
|
||||
* При наличии шаблона в директории темы дизайна используется этот шаблон.
|
||||
*
|
||||
* @param string $tpl путь к шаблону
|
||||
* @return string
|
||||
*/
|
||||
function _redefine_template($tpl)
|
||||
{
|
||||
if (!defined('THEME_FOLDER')) return $tpl;
|
||||
|
||||
$r_tpl = str_replace(BASE_DIR, BASE_DIR . '/templates/' . THEME_FOLDER, $tpl);
|
||||
|
||||
return (file_exists($r_tpl) && is_file($r_tpl)) ? $r_tpl : $tpl;
|
||||
}
|
||||
|
||||
/**
|
||||
* ВНЕШНИЕ МЕТОДЫ
|
||||
*/
|
||||
|
||||
/**
|
||||
* Переопределение одноименного метода Smarty
|
||||
* для конфигурационных файлов созданных в теме дизайна.
|
||||
*
|
||||
* @param string $file
|
||||
* @param string $section
|
||||
* @param string $scope
|
||||
*/
|
||||
function config_load($file, $section = null, $scope = 'global')
|
||||
{
|
||||
Smarty::config_load($this->_redefine_template($file), $section, $scope);
|
||||
}
|
||||
|
||||
/**
|
||||
* Переопределение одноименного метода Smarty
|
||||
* для пользовательских шаблонов созданных в теме дизайна.
|
||||
*
|
||||
* @param string $tpl_file name of template file
|
||||
* @param string $cache_id
|
||||
* @param string $compile_id
|
||||
* @return string|false results of {@link _read_cache_file()}
|
||||
*/
|
||||
function is_cached($tpl_file, $cache_id = null, $compile_id = null)
|
||||
{
|
||||
return Smarty::is_cached($this->_redefine_template($tpl_file), $cache_id, $compile_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Переопределение одноименного метода Smarty
|
||||
* для пользовательских шаблонов созданных в теме дизайна.
|
||||
*
|
||||
* @param string $resource_name
|
||||
* @param string $cache_id
|
||||
* @param string $compile_id
|
||||
* @param boolean $display
|
||||
*/
|
||||
function fetch($resource_name, $cache_id = null, $compile_id = null, $display = false)
|
||||
{
|
||||
return Smarty::fetch($this->_redefine_template($resource_name), $cache_id, $compile_id, $display);
|
||||
}
|
||||
|
||||
/**
|
||||
* Переопределение одноименного метода Smarty
|
||||
* для пользовательских шаблонов созданных в теме дизайна.
|
||||
*
|
||||
* @param string $resource_name
|
||||
* @param string $cache_id
|
||||
* @param string $compile_id
|
||||
*/
|
||||
function display($resource_name, $cache_id = null, $compile_id = null)
|
||||
{
|
||||
$this->fetch($resource_name, $cache_id, $compile_id, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Метод очистки кэша
|
||||
* @package AVE.cms
|
||||
* @version 3.x
|
||||
* @filesource
|
||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
|
||||
*
|
||||
*/
|
||||
function CacheClear()
|
||||
|
||||
/**
|
||||
* Подключаем файл шаблонизатора Smarty
|
||||
*/
|
||||
require(BASE_DIR . '/lib/Smarty/Smarty.class.php');
|
||||
|
||||
/**
|
||||
* Расширение класса шаблонизатора Smarty
|
||||
*
|
||||
*/
|
||||
class AVE_Template extends Smarty
|
||||
{
|
||||
global $AVE_DB, $AVE_Template;
|
||||
/**
|
||||
* СВОЙСТВА
|
||||
*/
|
||||
|
||||
$message = array();
|
||||
|
||||
//Метод очистки кэша
|
||||
if (isset($_REQUEST['templateCache']) && $_REQUEST['templateCache'] == '1')
|
||||
/**
|
||||
* Конструктор
|
||||
*
|
||||
* @param string $template_dir путь к директории шаблонов по умолчанию
|
||||
* @return AVE_Template
|
||||
*/
|
||||
function __construct($template_dir)
|
||||
{
|
||||
$this->clear_all_cache();
|
||||
/**
|
||||
* Путь к директории шаблонов по умолчанию.
|
||||
* Если вы не передадите тип ресурса во время подключения файлов, они будут искаться здесь.
|
||||
*/
|
||||
$this->template_dir = $template_dir;
|
||||
|
||||
foreach (glob($this->cache_dir_root . "/cache_*") as $filename)
|
||||
{
|
||||
@unlink($filename);
|
||||
}
|
||||
/**
|
||||
* Имя каталога, в котором хранятся компилированные шаблоны.
|
||||
*/
|
||||
$this->compile_dir = BASE_DIR . '/tmp/cache/smarty';
|
||||
|
||||
$filename = $this->cache_dir . '/.htaccess';
|
||||
/**
|
||||
* Имя каталога, в котором хранится кэш.
|
||||
*/
|
||||
$this->cache_dir_root = BASE_DIR . '/tmp/cache';
|
||||
|
||||
if (! file_exists($filename))
|
||||
{
|
||||
$fp = @fopen($filename, 'w');
|
||||
if ($fp)
|
||||
{
|
||||
fputs($fp, 'Deny from all');
|
||||
fclose($fp);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Имя каталога, в котором хранится кэш шаблонов.
|
||||
*/
|
||||
$this->cache_dir = BASE_DIR . '/tmp/cache/tpl';
|
||||
|
||||
if ($_REQUEST['ajax'] && Memcached_Server && Memcached_Port)
|
||||
{
|
||||
$memcache = new Memcache;
|
||||
$memcache->connect(Memcached_Server, Memcached_Port);
|
||||
$memcache->flush();
|
||||
}
|
||||
/**
|
||||
* Имя каталога, в котором хранится кэш модулей.
|
||||
*/
|
||||
$this->module_cache_dir = BASE_DIR . '/tmp/cache/module';
|
||||
|
||||
// Очищаем кэш шаблона документов рубрики
|
||||
$GLOBALS['AVE_DB']->Query("
|
||||
DELETE
|
||||
FROM
|
||||
" . PREFIX . "_rubric_template_cache
|
||||
");
|
||||
/**
|
||||
* Имя каталога, в котором хранится сессии пользователей.
|
||||
*/
|
||||
$this->session_dir = BASE_DIR . '/tmp/session';
|
||||
|
||||
$message[] = $AVE_Template->get_config_vars('TEMPLATES_CACHE_SUCCESS');
|
||||
reportLog($AVE_Template->get_config_vars('TEMPLATES_CACHE_SUCCESS_LOG'));
|
||||
/**
|
||||
* Имя каталога, в котором хранится сессии пользователей.
|
||||
*/
|
||||
$this->sql_cache_dir = BASE_DIR . '/tmp/cache/sql';
|
||||
|
||||
// Очищаем кэш сессий в БД в таблице _sessions
|
||||
$GLOBALS['AVE_DB']->Query("
|
||||
DELETE
|
||||
FROM
|
||||
" . PREFIX . "_sessions
|
||||
");
|
||||
/**
|
||||
* Использование поддиректорий для хранения кэша и скомпилированных шаблонов.
|
||||
*/
|
||||
$this->use_sub_dirs = SMARTY_USE_SUB_DIRS;
|
||||
|
||||
$message[] = $AVE_Template->get_config_vars('TEMPLATES_CACHE_DB_SUCCESS');
|
||||
reportLog($AVE_Template->get_config_vars('TEMPLATES_CACHE_DB_SUCCESS_LOG'));
|
||||
/**
|
||||
* При каждом вызове РНР-приложения Smarty проверяет, изменился или нет текущий шаблон
|
||||
* с момента последней компиляции. Если шаблон изменился, он перекомпилируется.
|
||||
* В случае, если шаблон еще не был скомпилирован, его компиляция производится
|
||||
* с игнорированием значения этого параметра.
|
||||
*/
|
||||
$this->compile_check = SMARTY_COMPILE_CHECK;
|
||||
|
||||
/**
|
||||
* Активирует debugging console - порожденное при помощи javascript окно браузера,
|
||||
* содержащее информацию о подключенных шаблонах и загруженных переменных для текущей страницы.
|
||||
*/
|
||||
$this->debugging = SMARTY_DEBUGGING;
|
||||
|
||||
/**
|
||||
* Регистрация плагинов-функций Smarty.
|
||||
* Передается наименование функции шаблона и имя функции, реализующей ее.
|
||||
*/
|
||||
$this->register_function('check_permission', 'check_permission');
|
||||
$this->register_function('get_home_link', 'get_home_link');
|
||||
$this->register_function('num_format', 'num_format');
|
||||
$this->register_function('thumb', 'make_thumbnail');
|
||||
|
||||
/**
|
||||
* Регистрация плагинов-модификаторов Smarty.
|
||||
* Передается имя модификатора и имя функции, реализующей его.
|
||||
*/
|
||||
$this->register_modifier('pretty_date', 'pretty_date');
|
||||
$this->register_modifier('translate_date', 'translate_date');
|
||||
$this->register_modifier('utf8', 'utf8');
|
||||
|
||||
// плагин позволяющий поставить метки шаблонов
|
||||
// для быстрого поиска шаблона отвечающего за вывод
|
||||
// перед использованием очистить cache/smarty
|
||||
// $this->register_postfilter('add_template_comment');
|
||||
|
||||
/**
|
||||
* Присваиваем общие значения для шаблонов.
|
||||
* Можно явно передавать пары имя/значение,
|
||||
* или ассоциативные массивы, содержащие пары имя/значение.
|
||||
*/
|
||||
$assign['BASE_DIR'] = BASE_DIR;
|
||||
$assign['ABS_PATH'] = ABS_PATH;
|
||||
$assign['DATE_FORMAT'] = DATE_FORMAT;
|
||||
$assign['TIME_FORMAT'] = TIME_FORMAT;
|
||||
$assign['PAGE_NOT_FOUND_ID'] = PAGE_NOT_FOUND_ID;
|
||||
|
||||
$this->assign($assign);
|
||||
}
|
||||
|
||||
//Метод удаления скомпилированных шаблонов
|
||||
if (isset($_REQUEST['templateCompiledTemplate']) && $_REQUEST['templateCompiledTemplate'] == '1')
|
||||
/**
|
||||
* ВНУТРЕННИЕ МЕТОДЫ
|
||||
*/
|
||||
|
||||
/**
|
||||
* Проверка наличия одноименного шаблона в директории темы дизайна.
|
||||
* При наличии шаблона в директории темы дизайна используется этот шаблон.
|
||||
*
|
||||
* @param string $tpl путь к шаблону
|
||||
* @return string
|
||||
*/
|
||||
function _redefine_template($tpl)
|
||||
{
|
||||
$this->clear_compiled_tpl();
|
||||
if (!defined('THEME_FOLDER')) return $tpl;
|
||||
|
||||
$filename = $this->compile_dir . '/.htaccess';
|
||||
if (! file_exists($filename))
|
||||
{
|
||||
$fp = @fopen($filename, 'w');
|
||||
if ($fp)
|
||||
{
|
||||
fputs($fp, 'Deny from all');
|
||||
fclose($fp);
|
||||
}
|
||||
}
|
||||
$r_tpl = str_replace(BASE_DIR, BASE_DIR . '/templates/' . THEME_FOLDER, $tpl);
|
||||
|
||||
$message[] = $AVE_Template->get_config_vars('TEMPLATES_CACHE_CT_SUCCESS');
|
||||
reportLog($AVE_Template->get_config_vars('TEMPLATES_CACHE_CT_SUCCESS_LOG'));
|
||||
return (file_exists($r_tpl) && is_file($r_tpl)) ? $r_tpl : $tpl;
|
||||
}
|
||||
|
||||
//Метод удаления скомпилированных шаблонов модулей
|
||||
if (isset($_REQUEST['moduleCache']) && $_REQUEST['moduleCache'] == '1')
|
||||
{
|
||||
rrmdir($this->module_cache_dir);
|
||||
|
||||
mkdir($this->module_cache_dir,0777,true);
|
||||
|
||||
$filename = $this->module_cache_dir . '/.htaccess';
|
||||
|
||||
if (! file_exists($filename))
|
||||
{
|
||||
$fp = @fopen($filename, 'w');
|
||||
if ($fp)
|
||||
{
|
||||
fputs($fp, 'Deny from all');
|
||||
fclose($fp);
|
||||
}
|
||||
}
|
||||
|
||||
$message[] = $AVE_Template->get_config_vars('TEMPLATES_CACHE_MC_SUCCESS');
|
||||
reportLog($AVE_Template->get_config_vars('TEMPLATES_CACHE_MC_SUCCESS_LOG'));
|
||||
}
|
||||
|
||||
//Метод удаления всех сессий
|
||||
if (isset($_REQUEST['sessionUsers']) && $_REQUEST['sessionUsers'] == '1')
|
||||
{
|
||||
rrmdir($this->session_dir);
|
||||
|
||||
mkdir($this->session_dir,0777,true);
|
||||
|
||||
$filename = $this->session_dir . '/.htaccess';
|
||||
|
||||
if (! file_exists($filename))
|
||||
{
|
||||
$fp = @fopen($filename, 'w');
|
||||
if ($fp)
|
||||
{
|
||||
fputs($fp, 'Deny from all');
|
||||
fclose($fp);
|
||||
}
|
||||
}
|
||||
|
||||
$message[] = $AVE_Template->get_config_vars('TEMPLATES_CACHE_SU_SUCCESS');
|
||||
reportLog($AVE_Template->get_config_vars('TEMPLATES_CACHE_SU_SUCCESS_LOG'));
|
||||
}
|
||||
|
||||
//Метод удаления кэша запросов
|
||||
if (isset($_REQUEST['sqlCache']) && $_REQUEST['sqlCache'] == '1')
|
||||
{
|
||||
rrmdir($this->sql_cache_dir);
|
||||
|
||||
mkdir($this->sql_cache_dir,0777,true);
|
||||
|
||||
$filename = $this->sql_cache_dir . '/.htaccess';
|
||||
|
||||
if (!file_exists($filename))
|
||||
{
|
||||
$fp = @fopen($filename, 'w');
|
||||
if ($fp)
|
||||
{
|
||||
fputs($fp, 'Deny from all');
|
||||
fclose($fp);
|
||||
}
|
||||
}
|
||||
|
||||
$message[] = $AVE_Template->get_config_vars('TEMPLATES_CACHE_SC_SUCCESS');
|
||||
reportLog($AVE_Template->get_config_vars('TEMPLATES_CACHE_SC_SUCCESS_LOG'));
|
||||
}
|
||||
|
||||
echo json_encode(array($AVE_Template->get_config_vars('TEMPLATES_MESSAGE') . "<br />" . implode('<br />', $message), 'accept'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Метод очистки миниатюр
|
||||
*
|
||||
* ВНЕШНИЕ МЕТОДЫ
|
||||
*/
|
||||
function ThumbnailsClear()
|
||||
{
|
||||
global $AVE_DB, $AVE_Template;
|
||||
|
||||
$message = array();
|
||||
|
||||
function rdel_thumb($dirname)
|
||||
/**
|
||||
* Переопределение одноименного метода Smarty
|
||||
* для конфигурационных файлов созданных в теме дизайна.
|
||||
*
|
||||
* @param string $file
|
||||
* @param string $section
|
||||
* @param string $scope
|
||||
*/
|
||||
function config_load($file, $section = null, $scope = 'global')
|
||||
{
|
||||
$dirs = glob("$dirname/*", GLOB_ONLYDIR|GLOB_NOSORT);
|
||||
|
||||
foreach ($dirs as $dir)
|
||||
{
|
||||
$dir_thumb = THUMBNAIL_DIR;
|
||||
$tmb = glob("$dir/$dir_thumb", GLOB_ONLYDIR|GLOB_NOSORT);
|
||||
|
||||
foreach ($tmb as $tmbs)
|
||||
{
|
||||
rrmdir($tmbs);
|
||||
}
|
||||
|
||||
rdel_thumb($dir);
|
||||
}
|
||||
|
||||
$hid_cat=(glob("$dirname/{.tmb}*", GLOB_ONLYDIR|GLOB_BRACE));
|
||||
$hid_tmb=$hid_cat[0];
|
||||
|
||||
foreach (glob("$hid_cat[0]/*.png", GLOB_NOSORT) as $filename)
|
||||
unlink("$filename");
|
||||
Smarty::config_load($this->_redefine_template($file), $section, $scope);
|
||||
}
|
||||
|
||||
rdel_thumb(BASE_DIR . '/' . UPLOAD_DIR);
|
||||
/**
|
||||
* Переопределение одноименного метода Smarty
|
||||
* для пользовательских шаблонов созданных в теме дизайна.
|
||||
*
|
||||
* @param string $tpl_file name of template file
|
||||
* @param string $cache_id
|
||||
* @param string $compile_id
|
||||
* @return string|false results of {@link _read_cache_file()}
|
||||
*/
|
||||
function is_cached($tpl_file, $cache_id = null, $compile_id = null)
|
||||
{
|
||||
return Smarty::is_cached($this->_redefine_template($tpl_file), $cache_id, $compile_id);
|
||||
}
|
||||
|
||||
$message[] = $AVE_Template->get_config_vars('TEMPLATES_THUMBNAILS_SUCCESS');
|
||||
/**
|
||||
* Переопределение одноименного метода Smarty
|
||||
* для пользовательских шаблонов созданных в теме дизайна.
|
||||
*
|
||||
* @param string $resource_name
|
||||
* @param string $cache_id
|
||||
* @param string $compile_id
|
||||
* @param boolean $display
|
||||
*/
|
||||
function fetch($resource_name, $cache_id = null, $compile_id = null, $display = false)
|
||||
{
|
||||
return Smarty::fetch($this->_redefine_template($resource_name), $cache_id, $compile_id, $display);
|
||||
}
|
||||
|
||||
reportLog($AVE_Template->get_config_vars('TEMPLATES_THUMBNAILS_SUCCESS_LOG'));
|
||||
/**
|
||||
* Переопределение одноименного метода Smarty
|
||||
* для пользовательских шаблонов созданных в теме дизайна.
|
||||
*
|
||||
* @param string $resource_name
|
||||
* @param string $cache_id
|
||||
* @param string $compile_id
|
||||
*/
|
||||
function display($resource_name, $cache_id = null, $compile_id = null)
|
||||
{
|
||||
$this->fetch($resource_name, $cache_id, $compile_id, true);
|
||||
}
|
||||
|
||||
echo json_encode(array($AVE_Template->get_config_vars('TEMPLATES_MESSAGE') . "<br />" . implode('<br />', $message), 'accept'));
|
||||
|
||||
function recursivDelete($dir)
|
||||
{
|
||||
$it = new RecursiveDirectoryIterator($dir . '/');
|
||||
$files = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST);
|
||||
|
||||
foreach($files as $file)
|
||||
{
|
||||
if ($file->getFilename() === '.' || $file->getFilename() === '..')
|
||||
continue;
|
||||
|
||||
if ($file->isDir())
|
||||
rmdir($file->getRealPath());
|
||||
else
|
||||
unlink($file->getRealPath());
|
||||
}
|
||||
|
||||
rmdir($dir);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Метод очистки кэша
|
||||
*
|
||||
*/
|
||||
function CacheClear()
|
||||
{
|
||||
global $AVE_DB, $AVE_Template;
|
||||
|
||||
$message = array();
|
||||
|
||||
// Метод очистки кэша
|
||||
if (isset($_REQUEST['templateCache']) && $_REQUEST['templateCache'] == '1')
|
||||
{
|
||||
// Smarty clear cache
|
||||
$this->clear_all_cache();
|
||||
|
||||
foreach (glob($this->cache_dir_root . "/cache_*") as $filename)
|
||||
@unlink($filename);
|
||||
|
||||
write_htaccess_deny($this->cache_dir . '/');
|
||||
|
||||
// Memcached
|
||||
if ($_REQUEST['ajax'] && Memcached_Server && Memcached_Port)
|
||||
{
|
||||
$memcache = new Memcache;
|
||||
$memcache->connect(Memcached_Server, Memcached_Port);
|
||||
$memcache->flush();
|
||||
}
|
||||
|
||||
// Очищаем кэш шаблона документов рубрики
|
||||
$AVE_DB->Query("
|
||||
DELETE FROM
|
||||
" . PREFIX . "_rubric_template_cache
|
||||
");
|
||||
|
||||
$message[] = $AVE_Template->get_config_vars('TEMPLATES_CACHE_SUCCESS');
|
||||
reportLog($AVE_Template->get_config_vars('TEMPLATES_CACHE_SUCCESS_LOG'));
|
||||
|
||||
// Очищаем кэш сессий в БД в таблице _sessions
|
||||
$AVE_DB->Query("
|
||||
DELETE FROM
|
||||
" . PREFIX . "_sessions
|
||||
");
|
||||
|
||||
$message[] = $AVE_Template->get_config_vars('TEMPLATES_CACHE_DB_SUCCESS');
|
||||
reportLog($AVE_Template->get_config_vars('TEMPLATES_CACHE_DB_SUCCESS_LOG'));
|
||||
}
|
||||
|
||||
|
||||
//Метод удаления скомпилированных шаблонов
|
||||
if (isset($_REQUEST['templateCompiledTemplate']) && $_REQUEST['templateCompiledTemplate'] == '1')
|
||||
{
|
||||
// Smarty compiled cache
|
||||
$this->clear_compiled_tpl();
|
||||
|
||||
write_htaccess_deny($this->compile_dir . '/');
|
||||
|
||||
$filename = $this->compile_dir . '/.htaccess';
|
||||
|
||||
$message[] = $AVE_Template->get_config_vars('TEMPLATES_CACHE_CT_SUCCESS');
|
||||
reportLog($AVE_Template->get_config_vars('TEMPLATES_CACHE_CT_SUCCESS_LOG'));
|
||||
}
|
||||
|
||||
|
||||
//Метод удаления скомпилированных шаблонов модулей
|
||||
if (isset($_REQUEST['moduleCache']) && $_REQUEST['moduleCache'] == '1')
|
||||
{
|
||||
$this->recursivDelete($this->module_cache_dir);
|
||||
|
||||
mkdir($this->module_cache_dir, 0777, true);
|
||||
|
||||
write_htaccess_deny($this->module_cache_dir . '/');
|
||||
|
||||
$message[] = $AVE_Template->get_config_vars('TEMPLATES_CACHE_MC_SUCCESS');
|
||||
reportLog($AVE_Template->get_config_vars('TEMPLATES_CACHE_MC_SUCCESS_LOG'));
|
||||
}
|
||||
|
||||
|
||||
//Метод удаления всех сессий
|
||||
if (isset($_REQUEST['sessionUsers']) && $_REQUEST['sessionUsers'] == '1')
|
||||
{
|
||||
$this->recursivDelete($this->session_dir);
|
||||
|
||||
mkdir($this->session_dir, 0777, true);
|
||||
|
||||
write_htaccess_deny($this->session_dir . '/');
|
||||
|
||||
$message[] = $AVE_Template->get_config_vars('TEMPLATES_CACHE_SU_SUCCESS');
|
||||
reportLog($AVE_Template->get_config_vars('TEMPLATES_CACHE_SU_SUCCESS_LOG'));
|
||||
}
|
||||
|
||||
|
||||
//Метод удаления кэша запросов
|
||||
if (isset($_REQUEST['sqlCache']) && $_REQUEST['sqlCache'] == '1')
|
||||
{
|
||||
$this->recursivDelete($this->sql_cache_dir);
|
||||
|
||||
mkdir($this->sql_cache_dir, 0777, true);
|
||||
|
||||
write_htaccess_deny($this->sql_cache_dir . '/');
|
||||
|
||||
$message[] = $AVE_Template->get_config_vars('TEMPLATES_CACHE_SC_SUCCESS');
|
||||
reportLog($AVE_Template->get_config_vars('TEMPLATES_CACHE_SC_SUCCESS_LOG'));
|
||||
}
|
||||
|
||||
echo json_encode(array($AVE_Template->get_config_vars('TEMPLATES_MESSAGE') . "<br />" . implode('<br />', $message), 'accept'));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Метод очистки миниатюр
|
||||
*
|
||||
*/
|
||||
function ThumbnailsClear()
|
||||
{
|
||||
global $AVE_DB, $AVE_Template;
|
||||
|
||||
$message = array();
|
||||
|
||||
function rdel_thumb($dirname)
|
||||
{
|
||||
$dirs = glob("$dirname/*", GLOB_ONLYDIR|GLOB_NOSORT);
|
||||
|
||||
foreach ($dirs as $dir)
|
||||
{
|
||||
$dir_thumb = THUMBNAIL_DIR;
|
||||
$tmb = glob("$dir/$dir_thumb", GLOB_ONLYDIR|GLOB_NOSORT);
|
||||
|
||||
foreach ($tmb as $tmbs)
|
||||
rrmdir($tmbs);
|
||||
|
||||
rdel_thumb($dir);
|
||||
}
|
||||
|
||||
$hid_cat = (glob("$dirname/{.tmb}*", GLOB_ONLYDIR|GLOB_BRACE));
|
||||
$hid_tmb = $hid_cat[0];
|
||||
|
||||
foreach (glob("$hid_cat[0]/*.png", GLOB_NOSORT) as $filename)
|
||||
unlink("$filename");
|
||||
}
|
||||
|
||||
rdel_thumb(BASE_DIR . '/' . UPLOAD_DIR);
|
||||
|
||||
$message[] = $AVE_Template->get_config_vars('TEMPLATES_THUMBNAILS_SUCCESS');
|
||||
|
||||
reportLog($AVE_Template->get_config_vars('TEMPLATES_THUMBNAILS_SUCCESS_LOG'));
|
||||
|
||||
echo json_encode(array($AVE_Template->get_config_vars('TEMPLATES_MESSAGE') . "<br />" . implode('<br />', $message), 'accept'));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
@ -12,6 +12,40 @@
|
||||
|
||||
class AVE_Templates
|
||||
{
|
||||
|
||||
public static function setTemplate($template_id)
|
||||
{
|
||||
$cache_file = BASE_DIR . '/templates/' . DEFAULT_THEME_FOLDER . '/include/templates/' . $template_id . '/template.inc';
|
||||
|
||||
if (isset($_REQUEST['template_text']) && $_REQUEST['template_text'] != '')
|
||||
$template = stripslashes(pretty_chars($_REQUEST['template_text']));
|
||||
else
|
||||
return false;
|
||||
|
||||
// Проверяем наличие папки шаблона
|
||||
if (! file_exists(dirname($cache_file)))
|
||||
mkdir(dirname($cache_file), 0766, true);
|
||||
|
||||
// Сохраняем данные в фвйл
|
||||
file_put_contents($cache_file, $template);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
public static function getTemplate($template_id)
|
||||
{
|
||||
$cache_file = BASE_DIR . '/templates/' . DEFAULT_THEME_FOLDER . '/include/templates/' . $template_id . '/template.inc';
|
||||
|
||||
if (file_exists($cache_file) && filesize($cache_file))
|
||||
$template = file_get_contents($cache_file);
|
||||
else
|
||||
$template = false;
|
||||
|
||||
return $template;
|
||||
}
|
||||
|
||||
|
||||
public static function templatesList()
|
||||
{
|
||||
global $AVE_DB, $AVE_Template;
|
||||
@ -144,10 +178,6 @@
|
||||
|
||||
$template_id = (int)$_REQUEST['Id'];
|
||||
|
||||
$cache = 'template_' . $template_id;
|
||||
|
||||
$cache_file = BASE_DIR . '/tmp/cache/templates/' . $cache . '.inc';
|
||||
|
||||
$row = $AVE_DB->Query("
|
||||
SELECT
|
||||
*
|
||||
@ -165,9 +195,11 @@
|
||||
$AVE_Template->assign('read_only', 'readonly');
|
||||
}
|
||||
|
||||
if (file_exists($cache_file) && filesize($cache_file))
|
||||
$template = self::getTemplate($template_id);
|
||||
|
||||
if ($template)
|
||||
{
|
||||
$row->template_text = file_get_contents($cache_file);
|
||||
$row->template_text = $template;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -205,13 +237,9 @@
|
||||
$theme = 'error';
|
||||
}
|
||||
|
||||
$cache = 'template_' . $template_id;
|
||||
|
||||
$cache_file = BASE_DIR . '/tmp/cache/templates/' . $cache . '.inc';
|
||||
|
||||
if ($ok === false)
|
||||
{
|
||||
if (isset($_REQUEST['ajax']) && $_REQUEST['ajax'] = '1')
|
||||
if (isAjax())
|
||||
{
|
||||
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
|
||||
exit;
|
||||
@ -242,10 +270,8 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
if (! file_exists(dirname($cache_file)))
|
||||
mkdir(dirname($cache_file), 0766, true);
|
||||
|
||||
file_put_contents($cache_file, stripslashes(pretty_chars($_REQUEST['template_text'])));
|
||||
// Сохраняем шаблон в файле
|
||||
self::setTemplate($template_id);
|
||||
|
||||
$message = $AVE_Template->get_config_vars('TEMPLATES_SAVED');
|
||||
$header = $AVE_Template->get_config_vars('TEMPLATES_SUCCESS');
|
||||
@ -317,27 +343,17 @@
|
||||
template_created = '" . time() . "'
|
||||
");
|
||||
|
||||
$iid = $AVE_DB->InsertId();
|
||||
$template_id = $AVE_DB->InsertId();
|
||||
|
||||
$cache = 'template_' . $iid;
|
||||
|
||||
$cache_file = BASE_DIR . '/tmp/cache/templates/' . $cache . '.inc';
|
||||
|
||||
if (! file_exists(dirname($cache_file)))
|
||||
mkdir(dirname($cache_file), 0766, true);
|
||||
|
||||
file_put_contents($cache_file, stripslashes(pretty_chars($_REQUEST['template_text'])));
|
||||
// Сохраняем шаблон в файле
|
||||
self::setTemplate($template_id);
|
||||
|
||||
reportLog($AVE_Template->get_config_vars('TEMPLATES_REPORT_NEW') . '(' . stripslashes(htmlspecialchars($_REQUEST['template_text'], ENT_QUOTES)) . ') (Id:' . (int)$iid . ')');
|
||||
|
||||
if (!$_REQUEST['next_edit'])
|
||||
{
|
||||
if (! $_REQUEST['next_edit'])
|
||||
header('Location:index.php?do=templates&cp=' . SESSION);
|
||||
}
|
||||
else
|
||||
{
|
||||
header('Location:index.php?do=templates&action=edit&Id=' . (int)$template_new . '&cp=' . SESSION);
|
||||
}
|
||||
header('Location:index.php?do=templates&action=edit&Id=' . (int)$template_new . '&cp=' . SESSION);
|
||||
|
||||
exit;
|
||||
}
|
||||
|
121
class/class.utm.php
Normal file
121
class/class.utm.php
Normal file
@ -0,0 +1,121 @@
|
||||
<?php
|
||||
/*
|
||||
|
||||
Версия от 06.03.2018г.
|
||||
|
||||
Как это работает:
|
||||
1) Пользователь зашел на сайт первый раз.
|
||||
2) Если есть хотя бы один параметр - сохраняет cookies
|
||||
3) Если utm_history уже есть, то сохраняет данные в utm_last
|
||||
4) utm_last перезаписывается при каждом новом значении, а utm_history всегда остаётся неизменной (если был передан хотя бы один параметр)
|
||||
5) utm_source сохраняется всегда до закрытия браузера
|
||||
|
||||
*/
|
||||
class UTMCookie
|
||||
{
|
||||
|
||||
private $parameters = array('utm_source', 'utm_medium', 'utm_campaign');
|
||||
|
||||
private $utm_history = '';
|
||||
private $utm_last = '';
|
||||
private $utm_source = '';
|
||||
|
||||
//Проверка параметров: Если все присутствуют - true, иначе false
|
||||
private function check_parameters()
|
||||
{
|
||||
//return true; //Сохранять всегда!
|
||||
|
||||
$return = false;
|
||||
|
||||
foreach ($this->parameters as $param)
|
||||
if (isset($_GET[$param]) && $_GET[$param] != '')
|
||||
$return = true;
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
//Создаёт строку с параметрами вот такого вида: utm_source=test; utm_medium=none; utm_campaign=kompaniya1;
|
||||
private function create_parameters()
|
||||
{
|
||||
$content = '';
|
||||
foreach($this->parameters as $param){
|
||||
|
||||
if (isset($_GET[$param]) && $_GET[$param] != '')
|
||||
{
|
||||
$content .= $param.'='.$_GET[$param].'; ';
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
$content .= $param.'=none; ';
|
||||
}
|
||||
}
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
//Сохраняет переданные параметры, если требуется
|
||||
//Если utm_history присутствует, то сохраняет utm_last
|
||||
public function save_parameters()
|
||||
{
|
||||
if (isset($_GET['utm_source']) && trim($_GET['utm_source']) != '')
|
||||
{
|
||||
setcookie('utm_source', $_GET['utm_source']);
|
||||
|
||||
$this->utm_source = $_GET['utm_source'];
|
||||
}
|
||||
|
||||
//$utm_history = '';
|
||||
|
||||
if (! isset($_COOKIE['utm_history']) || $_COOKIE['utm_history'] == '')
|
||||
{
|
||||
//Отсутствует utm_history
|
||||
if($this->check_parameters() == true)
|
||||
{
|
||||
|
||||
$utm_history = $this->create_parameters();
|
||||
setcookie('utm_history', $utm_history, time()+15552000); //На 6 месяцев
|
||||
setcookie('utm_last', '');
|
||||
|
||||
$this->utm_history = $utm_history;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
//utm_history присутствует
|
||||
|
||||
$this->utm_history = $_COOKIE['utm_history'];
|
||||
|
||||
//Перезапишем utm_last, если есть данные для этого
|
||||
if($this->check_parameters() == true){
|
||||
|
||||
$utm_last = $this->create_parameters();
|
||||
|
||||
if($utm_last != $_COOKIE['utm_history'])
|
||||
setcookie('utm_last', $utm_last, time()+15552000); //На 6 месяцев
|
||||
|
||||
$this->utm_last = $utm_last;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//Возвращает значение cookies
|
||||
public function get_value($name = '')
|
||||
{
|
||||
$name = trim($name);
|
||||
|
||||
if ($name == '' || ! in_array($name, array('utm_history', 'utm_last', 'utm_source')))
|
||||
$name = 'utm_history';
|
||||
|
||||
if (isset($this->$name) && $this->$name != '')
|
||||
return $this->$name;
|
||||
|
||||
return isset($_COOKIE[$name]) ? $_COOKIE[$name] : '';
|
||||
}
|
||||
}
|
||||
?>
|
@ -14,7 +14,7 @@
|
||||
// Многострочное
|
||||
function get_field_multi_line($field_value, $action, $field_id=0, $tpl='', $tpl_empty=0, &$maxlength=null, $document_fields=array(), $rubric_id=0, $default=null, $_tpl = null)
|
||||
{
|
||||
global $AVE_Template, $AVE_Document;
|
||||
global $AVE_Template;
|
||||
|
||||
$fld_dir = dirname(__FILE__) . '/';
|
||||
|
||||
@ -31,23 +31,16 @@
|
||||
switch ($action)
|
||||
{
|
||||
case 'edit':
|
||||
if (isset($_COOKIE['no_wysiwyg']) && $_COOKIE['no_wysiwyg'] == 1)
|
||||
if (isset($_REQUEST['multiedit']) && ($_REQUEST['multiedit'] === true))
|
||||
{
|
||||
$field = '<a name="' . $field_id . '"></a>';
|
||||
$field .= '<textarea style="width: 98%" name="feld[' . $field_id . ']">' . $field_value . '</textarea>';
|
||||
$oCKeditor = new CKeditor();
|
||||
$oCKeditor->returnOutput = true;
|
||||
$oCKeditor->config['toolbar'] = 'Verysmall';
|
||||
$oCKeditor->config['height'] = 250;
|
||||
$config = array();
|
||||
$field = $oCKeditor->editor('data['.$_REQUEST['Id'].'][feld][' . $field_id . ']', $field_value, $config);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (isset($_REQUEST['outside']) && ($_REQUEST['outside'] === true))
|
||||
{
|
||||
$oCKeditor = new CKeditor();
|
||||
$oCKeditor->returnOutput = true;
|
||||
$oCKeditor->config['toolbar'] = 'Verysmall';
|
||||
$oCKeditor->config['height'] = 250;
|
||||
$config = array();
|
||||
$field = $oCKeditor->editor('data['.$_REQUEST['Id'].'][feld][' . $field_id . ']', $field_value, $config);
|
||||
}
|
||||
else
|
||||
{
|
||||
$oCKeditor = new CKeditor();
|
||||
$oCKeditor->returnOutput = true;
|
||||
@ -56,17 +49,19 @@
|
||||
$config = array();
|
||||
$field = $oCKeditor->editor('feld[' . $field_id . ']', $field_value, $config);
|
||||
}
|
||||
}
|
||||
|
||||
$res = $field;
|
||||
break;
|
||||
|
||||
case 'doc':
|
||||
case 'req':
|
||||
$res = get_field_default($field_value, $action, $field_id, $tpl, $tpl_empty, $maxlength, $document_fields, $rubric_id);
|
||||
$res = document_pagination($res);
|
||||
break;
|
||||
|
||||
case 'req':
|
||||
$res = get_field_default($field_value, $action, $field_id, $tpl, $tpl_empty, $maxlength, $document_fields, $rubric_id);
|
||||
break;
|
||||
|
||||
case 'name' :
|
||||
return $AVE_Template->get_config_vars('name');
|
||||
break;
|
||||
|
@ -18,34 +18,29 @@
|
||||
|
||||
$fld_dir = dirname(__FILE__) . '/';
|
||||
|
||||
$lang_file = $fld_dir . 'lang/' . (defined('ACP') ? $_SESSION['admin_language'] : $_SESSION['user_language']) . '.txt';
|
||||
$lang_file = $fld_dir . 'lang/' . (defined('ACP')
|
||||
? $_SESSION['admin_language']
|
||||
: $_SESSION['user_language']) . '.txt';
|
||||
|
||||
$AVE_Template->config_load($lang_file, 'lang');
|
||||
$AVE_Template->assign('config_vars', $AVE_Template->get_config_vars());
|
||||
$AVE_Template->config_load($lang_file, 'admin');
|
||||
|
||||
$res=0;
|
||||
$res = null;
|
||||
|
||||
switch ($action)
|
||||
{
|
||||
case 'edit':
|
||||
if (isset($_COOKIE['no_wysiwyg']) && $_COOKIE['no_wysiwyg'] == 1)
|
||||
if (isset($_REQUEST['multiedit']) && ($_REQUEST['multiedit'] === true))
|
||||
{
|
||||
$field = '<a name="' . $field_id . '"></a>';
|
||||
$field .= '<textarea style="width: 98%" name="feld[' . $field_id . ']">' . $field_value . '</textarea>';
|
||||
$oCKeditor = new CKeditor();
|
||||
$oCKeditor->returnOutput = true;
|
||||
$oCKeditor->config['toolbar'] = 'Verysmall';
|
||||
$oCKeditor->config['height'] = 250;
|
||||
$config = array();
|
||||
$field = $oCKeditor->editor('data['.$_REQUEST['Id'].'][feld][' . $field_id . ']', $field_value, $config);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (isset($_REQUEST['outside']) && ($_REQUEST['outside'] === true))
|
||||
{
|
||||
$oCKeditor = new CKeditor();
|
||||
$oCKeditor->returnOutput = true;
|
||||
$oCKeditor->config['toolbar'] = 'Verysmall';
|
||||
$oCKeditor->config['height'] = 250;
|
||||
$config = array();
|
||||
$field = $oCKeditor->editor('data['.$_REQUEST['Id'].'][feld][' . $field_id . ']', $field_value, $config);
|
||||
}
|
||||
else
|
||||
{
|
||||
$oCKeditor = new CKeditor();
|
||||
$oCKeditor->returnOutput = true;
|
||||
@ -54,21 +49,24 @@
|
||||
$config = array();
|
||||
$field = $oCKeditor->editor('feld[' . $field_id . ']', $field_value, $config);
|
||||
}
|
||||
}
|
||||
|
||||
$res = $field;
|
||||
break;
|
||||
|
||||
case 'doc':
|
||||
case 'req':
|
||||
$res = get_field_default($field_value,$action,$field_id,$tpl,$tpl_empty,$maxlength,$document_fields,$rubric_id);
|
||||
$res = document_pagination($res);
|
||||
break;
|
||||
|
||||
case 'req':
|
||||
$res = get_field_default($field_value,$action,$field_id,$tpl,$tpl_empty,$maxlength,$document_fields,$rubric_id);
|
||||
break;
|
||||
|
||||
case 'name' :
|
||||
return $AVE_Template->get_config_vars('name');
|
||||
break;
|
||||
}
|
||||
|
||||
return ($res ? $res : $field_value);
|
||||
}
|
||||
?>
|
@ -12,40 +12,35 @@
|
||||
*/
|
||||
|
||||
// Многострочное (Слим)
|
||||
function get_field_multi_line_slim($field_value,$action, $field_id=0, $tpl='', $tpl_empty=0, &$maxlength=null, $document_fields=array(), $rubric_id=0, $default=null, $_tpl=null)
|
||||
function get_field_multi_line_slim($field_value, $action, $field_id=0, $tpl='', $tpl_empty=0, &$maxlength=null, $document_fields=array(), $rubric_id=0, $default=null, $_tpl=null)
|
||||
{
|
||||
global $AVE_Template, $AVE_Document;
|
||||
global $AVE_Template;
|
||||
|
||||
$fld_dir = dirname(__FILE__) . '/';
|
||||
|
||||
$lang_file = $fld_dir . 'lang/' . (defined('ACP') ? $_SESSION['admin_language'] : $_SESSION['user_language']) . '.txt';
|
||||
$lang_file = $fld_dir . 'lang/' . (defined('ACP')
|
||||
? $_SESSION['admin_language']
|
||||
: $_SESSION['user_language']) . '.txt';
|
||||
|
||||
$AVE_Template->config_load($lang_file, 'lang');
|
||||
$AVE_Template->assign('config_vars', $AVE_Template->get_config_vars());
|
||||
$AVE_Template->config_load($lang_file, 'admin');
|
||||
|
||||
$res = 0;
|
||||
$res = null;
|
||||
|
||||
switch ($action)
|
||||
{
|
||||
case 'edit':
|
||||
if (isset($_COOKIE['no_wysiwyg']) && $_COOKIE['no_wysiwyg'] == 1)
|
||||
if (isset($_REQUEST['multiedit']) && ($_REQUEST['multiedit'] === true))
|
||||
{
|
||||
$field = '<a name="' . $field_id . '"></a>';
|
||||
$field .= '<textarea style="width: 98%" name="feld[' . $field_id . ']">' . $field_value . '</textarea>';
|
||||
$oCKeditor = new CKeditor();
|
||||
$oCKeditor->returnOutput = true;
|
||||
$oCKeditor->config['toolbar'] = 'Verysmall';
|
||||
$oCKeditor->config['height'] = 250;
|
||||
$config = array();
|
||||
$field = $oCKeditor->editor('data['.$_REQUEST['Id'].'][feld][' . $field_id . ']', $field_value, $config);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (isset($_REQUEST['outside']) && ($_REQUEST['outside'] === true))
|
||||
{
|
||||
$oCKeditor = new CKeditor();
|
||||
$oCKeditor->returnOutput = true;
|
||||
$oCKeditor->config['toolbar'] = 'Verysmall';
|
||||
$oCKeditor->config['height'] = 250;
|
||||
$config = array();
|
||||
$field = $oCKeditor->editor('data['.$_REQUEST['Id'].'][feld][' . $field_id . ']', $field_value, $config);
|
||||
}
|
||||
else
|
||||
{
|
||||
$oCKeditor = new CKeditor();
|
||||
$oCKeditor->returnOutput = true;
|
||||
@ -54,22 +49,24 @@
|
||||
$config = array();
|
||||
$field = $oCKeditor->editor('feld[' . $field_id . ']', $field_value, $config);
|
||||
}
|
||||
}
|
||||
|
||||
$res = $field;
|
||||
break;
|
||||
|
||||
case 'doc':
|
||||
case 'req':
|
||||
$res = get_field_default($field_value,$action,$field_id,$tpl,$tpl_empty,$maxlength,$document_fields,$rubric_id);
|
||||
$res = document_pagination($res);
|
||||
break;
|
||||
|
||||
case 'req':
|
||||
$res = get_field_default($field_value,$action,$field_id,$tpl,$tpl_empty,$maxlength,$document_fields,$rubric_id);
|
||||
break;
|
||||
|
||||
case 'name' :
|
||||
return $AVE_Template->get_config_vars('name');
|
||||
break;
|
||||
}
|
||||
return ($res ? $res : $field_value);
|
||||
|
||||
return ($res ? $res : $field_value);
|
||||
}
|
||||
?>
|
224
fields/tags/field.php
Normal file
224
fields/tags/field.php
Normal file
@ -0,0 +1,224 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* AVE.cms
|
||||
*
|
||||
* @package AVE.cms
|
||||
* @version 3.x
|
||||
* @filesource
|
||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
|
||||
*
|
||||
* @license GPL v.2
|
||||
*/
|
||||
|
||||
// Tags
|
||||
function get_field_tags ($field_value, $action, $field_id = 0, $tpl = '', $tpl_empty = 0, &$maxlength = null, $document_fields = array(), $rubric_id = 0, $default = null, $_tpl = null)
|
||||
{
|
||||
global $AVE_DB, $AVE_Template;
|
||||
|
||||
$fld_dir = dirname(__FILE__) . '/';
|
||||
$tpl_dir = $fld_dir . 'tpl/';
|
||||
$fld_name = basename($fld_dir);
|
||||
|
||||
$rubric_id = $rubric_id > 0
|
||||
? $rubric_id
|
||||
: $_REQUEST['rubric_id']
|
||||
? (int)$_REQUEST['rubric_id']
|
||||
: $AVE_DB->Query("SELECT rubric_id FROM ".PREFIX."_documents WHERE Id = '".$_REQUEST['Id']."'")->GetCell();
|
||||
|
||||
$lang_file = $fld_dir . 'lang/' . (defined('ACP')
|
||||
? $_SESSION['admin_language']
|
||||
: $_SESSION['user_language']) . '.txt';
|
||||
|
||||
$AVE_Template->config_load($lang_file, 'lang');
|
||||
$AVE_Template->assign('config_vars', $AVE_Template->get_config_vars());
|
||||
$AVE_Template->config_load($lang_file, 'admin');
|
||||
|
||||
switch ($action)
|
||||
{
|
||||
case 'edit':
|
||||
$sql = "
|
||||
SELECT DISTINCT
|
||||
tag
|
||||
FROM
|
||||
".PREFIX."_document_tags
|
||||
WHERE
|
||||
rubric_id = '".$rubric_id."'
|
||||
ORDER BY tag ASC
|
||||
";
|
||||
|
||||
$query = $AVE_DB->Query($sql);
|
||||
|
||||
$field_tags = array();
|
||||
|
||||
while ($row = $query->GetCell())
|
||||
array_push($field_tags, $row);
|
||||
|
||||
$field_value = explode('|', $field_value);
|
||||
$field_value = array_diff($field_value, array(''));
|
||||
|
||||
$total = count($field_tags);
|
||||
|
||||
$field_points = array(ceil($total/4), 2*ceil($total/4), 3*ceil($total/4));
|
||||
|
||||
$AVE_Template->assign('field_points', $field_points);
|
||||
$AVE_Template->assign('field_tags', $field_tags);
|
||||
$AVE_Template->assign('field_dir', $fld_name);
|
||||
$AVE_Template->assign('field_id', $field_id);
|
||||
$AVE_Template->assign('field_value', $field_value);
|
||||
|
||||
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'admin', $_tpl);
|
||||
|
||||
return $AVE_Template->fetch($tpl_file);
|
||||
break;
|
||||
|
||||
case 'doc':
|
||||
|
||||
$AVE_Template->config_load($lang_file, 'public');
|
||||
|
||||
if ($tpl_empty)
|
||||
{
|
||||
$field_value = explode('|', $field_value);
|
||||
$field_value = array_diff($field_value, array(''));
|
||||
$field_value = array_values($field_value);
|
||||
}
|
||||
else
|
||||
{
|
||||
$field_param = explode('|', $field_value);
|
||||
$field_param = array_diff($field_param, array(''));
|
||||
$field_param = array_values($field_param);
|
||||
$field_value = preg_replace_callback(
|
||||
'/\[tag:parametr:(\d+)\]/i',
|
||||
function ($data) use ($field_param)
|
||||
{
|
||||
return $field_param[(int)$data[1]];
|
||||
},
|
||||
$tpl
|
||||
);
|
||||
}
|
||||
|
||||
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'doc', $_tpl);
|
||||
|
||||
if ($tpl_empty && $tpl_file)
|
||||
{
|
||||
$AVE_Template->assign('field_id', $field_id);
|
||||
$AVE_Template->assign('field_default', $default);
|
||||
$AVE_Template->assign('field_value', $field_value);
|
||||
|
||||
return $AVE_Template->fetch($tpl_file);
|
||||
}
|
||||
|
||||
return $field_value;
|
||||
break;
|
||||
|
||||
case 'req':
|
||||
|
||||
$AVE_Template->config_load($lang_file, 'public');
|
||||
|
||||
if ($tpl_empty)
|
||||
{
|
||||
$field_value = explode('|', $field_value);
|
||||
$field_value = array_diff($field_value, array(''));
|
||||
$field_value = array_values($field_value);
|
||||
}
|
||||
else
|
||||
{
|
||||
$field_param = explode('|', $field_value);
|
||||
$field_param = array_diff($field_param, array(''));
|
||||
$field_param = array_values($field_param);
|
||||
$field_value = preg_replace_callback(
|
||||
'/\[tag:parametr:(\d+)\]/i',
|
||||
function($data) use($field_param)
|
||||
{
|
||||
return $field_param[(int)$data[1]];
|
||||
},
|
||||
$tpl
|
||||
);
|
||||
}
|
||||
|
||||
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'req', $_tpl);
|
||||
|
||||
if ($tpl_empty && $tpl_file)
|
||||
{
|
||||
$AVE_Template->assign('field_id', $field_id);
|
||||
$AVE_Template->assign('field_default', $default);
|
||||
$AVE_Template->assign('field_value', $field_value);
|
||||
|
||||
return $AVE_Template->fetch($tpl_file);
|
||||
}
|
||||
|
||||
return $field_value;
|
||||
break;
|
||||
|
||||
case 'save':
|
||||
// Регистрируем хук
|
||||
Hooks::register('DocumentAfterSave', 'afterTagsSave', 10);
|
||||
|
||||
$field_value = tagsValue($field_value);
|
||||
|
||||
if (! empty($field_value))
|
||||
$field_value = '|' . implode('|', $field_value) . '|';
|
||||
|
||||
return $field_value;
|
||||
|
||||
case 'name':
|
||||
return $AVE_Template->get_config_vars('name');
|
||||
|
||||
default:
|
||||
return $field_value;
|
||||
}
|
||||
}
|
||||
|
||||
if (! function_exists('tagsValue'))
|
||||
{
|
||||
function tagsValue ($field_value)
|
||||
{
|
||||
// Если есть выделенные теги
|
||||
if (! empty($field_value['tags']))
|
||||
$tags = $field_value['tags'];
|
||||
else
|
||||
$tags = array();
|
||||
|
||||
unset ($tags['other']);
|
||||
|
||||
// Если есть теги через зяпятую
|
||||
if (! empty($field_value['tags']['other']))
|
||||
{
|
||||
$tags_new = explode(',', $field_value['tags']['other']);
|
||||
$tags_new = array_map('trim', $tags_new);
|
||||
}
|
||||
else
|
||||
$tags_new = array();
|
||||
|
||||
// Совмещаем массивы
|
||||
$tags = array_merge($tags, $tags_new);
|
||||
|
||||
// Делаем уникальные значения
|
||||
$field_value = array_unique($tags);
|
||||
|
||||
return $field_value;
|
||||
}
|
||||
}
|
||||
|
||||
if (! function_exists('afterTagsSave'))
|
||||
{
|
||||
function afterTagsSave ($data)
|
||||
{
|
||||
global $AVE_Document;
|
||||
|
||||
foreach ($data['data']['feld'] AS $_k => $_v)
|
||||
{
|
||||
if (array_key_exists('tags', $_v))
|
||||
{
|
||||
$tags = tagsValue($_v);
|
||||
|
||||
if (! empty($tags))
|
||||
{
|
||||
$tags = implode(',', $tags);
|
||||
$AVE_Document->saveTags($data['document_id'], $data['rubric_id'], $tags);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
4
fields/tags/lang/ru.txt
Normal file
4
fields/tags/lang/ru.txt
Normal file
@ -0,0 +1,4 @@
|
||||
[admin]
|
||||
name = "Теги"
|
||||
new = "Новые теги, через запятую"
|
||||
notags = "Отсутвуют теги"
|
9
fields/tags/tpl/field-doc.tpl
Normal file
9
fields/tags/tpl/field-doc.tpl
Normal file
@ -0,0 +1,9 @@
|
||||
{*
|
||||
$field_id
|
||||
$field_value
|
||||
*}
|
||||
{if $field_value}
|
||||
{foreach from=$field_value item=tag}
|
||||
<li>{$tag}</li>
|
||||
{/foreach}
|
||||
{/if}
|
5
fields/tags/tpl/field-req.tpl
Normal file
5
fields/tags/tpl/field-req.tpl
Normal file
@ -0,0 +1,5 @@
|
||||
{*
|
||||
$field_id
|
||||
$field_value
|
||||
*}
|
||||
{$field_value}
|
26
fields/tags/tpl/field.tpl
Normal file
26
fields/tags/tpl/field.tpl
Normal file
@ -0,0 +1,26 @@
|
||||
{if $field_tags}
|
||||
<div style="width:25%; float:left;">
|
||||
{foreach from=$field_tags item=tag name=tags}
|
||||
<label style="clear:both; display:block; padding: 2px; width: 90%;">
|
||||
<input class="float checkbox" type="checkbox" value="{$tag}" name="feld[{$field_id}][tags][]" {if in_array($tag, $field_value)}checked="checked"{/if} /> {$tag}
|
||||
</label>
|
||||
{if in_array($smarty.foreach.tags.index, $field_points)}
|
||||
<div class="fix"></div>
|
||||
</div>
|
||||
<div style="width:25%; float:left;">
|
||||
{/if}
|
||||
{/foreach}
|
||||
<div class="fix"></div>
|
||||
</div>
|
||||
{else}
|
||||
<ul class="messages">
|
||||
<li class="highlight yellow">{#notags#}</li>
|
||||
</ul>
|
||||
{/if}
|
||||
<div class="fix"></div>
|
||||
<div>
|
||||
<br/>
|
||||
<h6>{#new#}</h6>
|
||||
<input type="text" style="width: 100%;" name="feld[{$field_id}][tags][other]" value="" class="mousetrap" />
|
||||
<div class="fix"></div>
|
||||
</div>
|
@ -97,7 +97,7 @@
|
||||
FROM
|
||||
" . PREFIX . "_documents
|
||||
WHERE
|
||||
Id = '" . $curent_document . "'", -1, 'doc_' . $curent_document
|
||||
Id = '" . $curent_document . "'", -1, 'brd_' . $curent_document, true, '.breadcrumbs'
|
||||
);
|
||||
|
||||
$row_document = $sql_document->FetchRow();
|
||||
@ -131,7 +131,7 @@
|
||||
FROM
|
||||
" . PREFIX . "_documents
|
||||
WHERE
|
||||
Id = '" . $current->document_parent . "'", -1, 'doc_' . $current->document_parent
|
||||
Id = '" . $current->document_parent . "'", -1, 'brd_' . $current->document_parent, true, '.item'
|
||||
);
|
||||
|
||||
$row_doc = $sql_doc->FetchRow();
|
||||
|
@ -258,7 +258,13 @@
|
||||
static $settings = null;
|
||||
|
||||
if ($settings === null)
|
||||
$settings = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_settings", SYSTEM_CACHE_LIFETIME, 'settings')->FetchAssocArray();
|
||||
$settings = $AVE_DB->Query("
|
||||
SELECT
|
||||
# SETTINGS
|
||||
*
|
||||
FROM
|
||||
" . PREFIX . "_settings
|
||||
", -1, 'settings', true, '.settings')->FetchAssocArray();
|
||||
|
||||
if ($field == '')
|
||||
return $settings;
|
||||
@ -1101,6 +1107,8 @@
|
||||
*/
|
||||
function output_compress($data)
|
||||
{
|
||||
global $AVE_DB;
|
||||
|
||||
$Gzip = strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false;
|
||||
|
||||
if (HTML_COMPRESSION)
|
||||
@ -1108,6 +1116,20 @@
|
||||
|
||||
if ($Gzip && GZIP_COMPRESSION)
|
||||
{
|
||||
if (
|
||||
! defined('ONLYCONTENT')
|
||||
&&
|
||||
UGROUP == 1
|
||||
&&
|
||||
defined('PROFILING') && PROFILING
|
||||
)
|
||||
{
|
||||
$data .= "\r\n" . "<!-- ------ Time generation: ".Debug::getStatistic('time')." sec ----- -->";
|
||||
$data .= "\r\n" . "<!-- ------ Memory usage: ".Debug::getStatistic('memory')." ----- -->";
|
||||
$data .= "\r\n" . "<!-- ------ Memory peak usage: ".Debug::getStatistic('peak')." ----- -->";
|
||||
$data .= "\r\n" . "<!-- ------ SQL Queries: ".$AVE_DB->DBProfilesGet('count')." for ".$AVE_DB->DBProfilesGet('time')." sec ----- -->";
|
||||
}
|
||||
|
||||
$content = gzencode($data, 9);
|
||||
header ('Content-Encoding: gzip');
|
||||
}
|
||||
@ -1128,4 +1150,80 @@
|
||||
|
||||
echo $content;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Функция создает короткий URL документа для редиректа
|
||||
* После выполения функции нужно очистить кеш данного документа
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
function gen_short_link ($length = 1, $doc_id)
|
||||
{
|
||||
global $AVE_DB;
|
||||
|
||||
if (! is_numeric($doc_id))
|
||||
return false;
|
||||
|
||||
// Проврека на существование редиректа для данного документа
|
||||
$check_doc = $AVE_DB->Query("
|
||||
SELECT
|
||||
id
|
||||
FROM
|
||||
" . PREFIX . "_document_alias_history
|
||||
WHERE
|
||||
document_id = '" . $doc_id . "'
|
||||
")->GetCell();
|
||||
|
||||
// Если редирект отсутствует
|
||||
if (! $check_doc)
|
||||
{
|
||||
$characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
||||
|
||||
$short_link = '';
|
||||
|
||||
for ($i = 0; $i < $length; $i++)
|
||||
$short_link .= $characters[rand(0, strlen($characters) - 1)];
|
||||
|
||||
// Проеряем есть такое редирект уже
|
||||
$exists = $AVE_DB->Query("
|
||||
SELECT
|
||||
id
|
||||
FROM
|
||||
" . PREFIX . "_document_alias_history
|
||||
WHERE
|
||||
document_alias = '" . $short_link . "'
|
||||
")->GetCell();
|
||||
|
||||
// Если есть, повторяем генерацию
|
||||
if ($exists)
|
||||
{
|
||||
gen_short_link($length, $doc_id);
|
||||
}
|
||||
// Иначе заносим в БД
|
||||
else
|
||||
{
|
||||
$AVE_DB->Query("
|
||||
INSERT INTO
|
||||
" . PREFIX . "_document_alias_history
|
||||
SET
|
||||
document_id = '" . $doc_id . "',
|
||||
document_alias = '" . $short_link . "',
|
||||
document_alias_author = '" . $_SESSION['user_id'] . "',
|
||||
document_alias_changed = '" . time() . "'
|
||||
");
|
||||
|
||||
$AVE_DB->Query("
|
||||
UPDATE
|
||||
" . PREFIX . "_documents
|
||||
SET
|
||||
document_short_alias = '" . $short_link . "'
|
||||
WHERE
|
||||
Id = '" . $doc_id . "'
|
||||
");
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
?>
|
@ -94,14 +94,9 @@
|
||||
|
||||
if (! isset ($get_documents_data[$doc_id]))
|
||||
{
|
||||
$get_documents_data[$doc_id] = $AVE_DB->Query("
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
" . PREFIX . "_documents
|
||||
WHERE
|
||||
Id = '" . $doc_id . "'
|
||||
")->FetchAssocArray();
|
||||
$get_documents_data[$doc_id] = getDocument($doc_id);
|
||||
|
||||
$get_documents_data[$doc_id] = object2array($get_documents_data[$doc_id]);
|
||||
|
||||
$get_documents_data[$doc_id]['doc_title'] = $get_documents_data[$doc_id]['document_title'];
|
||||
$get_documents_data[$doc_id]['feld'] = array();
|
||||
@ -112,4 +107,40 @@
|
||||
else
|
||||
return $get_documents_data[$doc_id];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Функция отдаёт основные параметры дока
|
||||
*
|
||||
* @param int $doc_id - номер id документа
|
||||
*
|
||||
* @return object
|
||||
*/
|
||||
function getDocument ($doc_id)
|
||||
{
|
||||
global $AVE_DB;
|
||||
|
||||
$doc_id = (int)$doc_id;
|
||||
|
||||
if ($doc_id < 1)
|
||||
return false;
|
||||
|
||||
$sql = "
|
||||
SELECT
|
||||
# DOCUMENT = $doc_id
|
||||
*
|
||||
FROM
|
||||
" . PREFIX . "_documents
|
||||
WHERE
|
||||
Id = '" . $doc_id . "'
|
||||
";
|
||||
|
||||
$cache_time = (defined('CACHE_DOC_FILE') && CACHE_DOC_FILE)
|
||||
? -1
|
||||
: 0;
|
||||
|
||||
$data = $AVE_DB->Query($sql, $cache_time, 'dat_' . $doc_id, true, '.data')->FetchRow();
|
||||
|
||||
return $data;
|
||||
}
|
||||
?>
|
@ -42,18 +42,21 @@
|
||||
/**
|
||||
* Проверка папок /fields/ в модулях, на наличие полей
|
||||
*/
|
||||
$d = dir(BASE_DIR . '/modules');
|
||||
|
||||
while (false !== ($entry = $d->read()))
|
||||
if (is_dir(BASE_DIR . '/modules/'))
|
||||
{
|
||||
$module_dir = $d->path . '/' . $entry;
|
||||
$d = dir(BASE_DIR . '/modules');
|
||||
|
||||
if (is_dir($module_dir) && file_exists($module_dir . '/field.php'))
|
||||
require_once($module_dir . '/field.php');
|
||||
while (false !== ($entry = $d->read()))
|
||||
{
|
||||
$module_dir = $d->path . '/' . $entry;
|
||||
|
||||
if (is_dir($module_dir) && file_exists($module_dir . '/field.php'))
|
||||
require_once($module_dir . '/field.php');
|
||||
}
|
||||
|
||||
$d->Close();
|
||||
}
|
||||
|
||||
$d->Close();
|
||||
|
||||
|
||||
/**
|
||||
* Поле по умолчанию
|
||||
@ -216,7 +219,7 @@
|
||||
|
||||
static $alias_field_id = array();
|
||||
|
||||
if(isset($alias_field_id[$id]))
|
||||
if (isset($alias_field_id[$id]))
|
||||
return $alias_field_id[$id];
|
||||
|
||||
$sql = "
|
||||
@ -352,7 +355,7 @@
|
||||
|
||||
if ($field_value != '')
|
||||
{
|
||||
$field_value = strip_tags($field_value, "<br /><strong><em><p><i>");
|
||||
$field_value = strip_tags($field_value); // "<br /><strong><em><p><i>"
|
||||
|
||||
if (is_numeric($length) && $length != 0)
|
||||
{
|
||||
@ -406,7 +409,7 @@
|
||||
*/
|
||||
function get_document_fields($document_id, $values = null)
|
||||
{
|
||||
global $AVE_DB, $request_documents;
|
||||
global $AVE_DB, $request_documents, $AVE_Core;
|
||||
|
||||
static $document_fields = array();
|
||||
|
||||
@ -419,42 +422,64 @@
|
||||
|
||||
$where = "WHERE doc_field.document_id = '" . $document_id . "'";
|
||||
|
||||
$query="
|
||||
$query = "
|
||||
SELECT
|
||||
# DOC FIELDS = $document_id
|
||||
doc.document_author_id,
|
||||
doc_field.Id,
|
||||
doc_field.document_id,
|
||||
doc_field.rubric_field_id,
|
||||
doc_field.field_value,
|
||||
text_field.field_value as field_value_more,
|
||||
rub_field.rubric_field_alias,
|
||||
rub_field.rubric_field_type,
|
||||
rub_field.rubric_field_default,
|
||||
doc_field.field_value,
|
||||
text_field.field_value as field_value_more,
|
||||
doc.document_author_id,
|
||||
rub_field.rubric_field_title,
|
||||
rub_field.rubric_field_template,
|
||||
rub_field.rubric_field_template_request
|
||||
FROM
|
||||
" . PREFIX . "_document_fields AS doc_field
|
||||
|
||||
JOIN
|
||||
" . PREFIX . "_rubric_fields AS rub_field
|
||||
ON doc_field.rubric_field_id = rub_field.Id
|
||||
LEFT JOIN
|
||||
" . PREFIX . "_document_fields_text AS text_field
|
||||
ON (doc_field.rubric_field_id = text_field.rubric_field_id AND doc_field.document_id = text_field.document_id)
|
||||
ON (doc_field.rubric_field_id = text_field.rubric_field_id AND doc_field.document_id = text_field.document_id)
|
||||
JOIN
|
||||
" . PREFIX . "_documents AS doc
|
||||
ON doc.Id = doc_field.document_id
|
||||
ON doc.Id = doc_field.document_id
|
||||
" . $where;
|
||||
|
||||
$sql = $AVE_DB->Query($query, -1, 'doc_'.$document_id);
|
||||
$cache_id = (int)$AVE_Core->curentdoc->Id;
|
||||
$cache_id = 'documents/fields/' . (floor($cache_id / 1000)) . '/' . $cache_id;
|
||||
|
||||
//Вдруг памяти мало!!!!
|
||||
if (memory_panic() && (count($document_fields) > 3))
|
||||
$cache_file = md5($query) . '.fields';
|
||||
|
||||
$cache_dir = BASE_DIR . '/tmp/cache/sql/' . (trim($cache_id) > ''
|
||||
? trim($cache_id) . '/'
|
||||
: substr($cache_file, 0, 2) . '/' . substr($cache_file, 2, 2) . '/' . substr($cache_file, 4, 2) . '/');
|
||||
|
||||
// Наличие файла
|
||||
if (file_exists($cache_dir . $cache_file))
|
||||
{
|
||||
$document_fields = array();
|
||||
// Получаем время создания файла
|
||||
$file_time = filemtime($cache_dir . $cache_file);
|
||||
|
||||
// Получаем время для проверки
|
||||
$cache_time = $AVE_Core->curentdoc->rubric_changed_fields;
|
||||
|
||||
// Сравниваем временные метки
|
||||
if (! $cache_time || $cache_time > $file_time)
|
||||
unlink ($cache_dir . $cache_file);
|
||||
}
|
||||
|
||||
// Безусловный кеш
|
||||
$sql = $AVE_DB->Query($query, -1, 'fld_' . $document_id, true, '.fields');
|
||||
|
||||
// Вдруг памяти мало!!!!
|
||||
if (memory_panic() && (count($document_fields) > 3))
|
||||
$document_fields = array();
|
||||
|
||||
while ($row = $sql->FetchAssocArray())
|
||||
{
|
||||
$row['tpl_req_empty'] = (trim($row['rubric_field_template_request']) == '');
|
||||
|
@ -29,6 +29,7 @@
|
||||
// Достаем для проверки тип меню
|
||||
$sql = "
|
||||
SELECT
|
||||
# NAVIGATION = $navi_id
|
||||
expand_ext
|
||||
FROM
|
||||
".PREFIX."_navigation
|
||||
@ -38,7 +39,7 @@
|
||||
alias = '" . $navi_id . "'
|
||||
";
|
||||
|
||||
$expnad_ext = $AVE_DB->Query($sql, SYSTEM_CACHE_LIFETIME, 'nav_' . $navi_id)->GetCell();
|
||||
$expnad_ext = $AVE_DB->Query($sql, -1, 'nav_' . $navi_id, true, '.naviagtion')->GetCell();
|
||||
|
||||
// извлекаем level из аргумента
|
||||
$navi_print_level = (! empty($navi_tag[2]))
|
||||
@ -47,7 +48,7 @@
|
||||
|
||||
$navi = '';
|
||||
|
||||
$cache_file = BASE_DIR . '/tmp/cache/sql/nav/template-' . $navi_id . '.cache';
|
||||
$cache_file = BASE_DIR . '/tmp/cache/sql/navigations/' . $navi_id . '/template.cache';
|
||||
|
||||
// Если включен DEV MODE, то отключаем кеширование запросов
|
||||
if (defined('DEV_MODE') AND DEV_MODE || $expnad_ext != 1)
|
||||
@ -108,18 +109,28 @@
|
||||
// запрос для выборки по текущему алиасу
|
||||
$sql_doc_active_alias = '';
|
||||
|
||||
if ($AVE_Core->curentdoc->Id == $doc_active_id)
|
||||
$url_suff = '';
|
||||
|
||||
if (defined('URL_SUFF') AND URL_SUFF)
|
||||
{
|
||||
$sql_doc_active_alias = "
|
||||
OR nav.alias = '" . $alias . "'
|
||||
OR nav.alias = '/" . $alias . "'
|
||||
$url_suff = "
|
||||
OR nav.alias = '" . $alias . URL_SUFF . "'
|
||||
OR nav.alias = '/" . $alias . URL_SUFF . "'
|
||||
";
|
||||
}
|
||||
|
||||
if ($AVE_Core->curentdoc->Id == $doc_active_id)
|
||||
{
|
||||
$sql_doc_active_alias = "
|
||||
OR nav.alias = '" . $alias . "'
|
||||
OR nav.alias = '/" . $alias . "'
|
||||
" . $url_suff . "
|
||||
";
|
||||
}
|
||||
|
||||
$navi_active = $AVE_DB->Query("
|
||||
SELECT CONCAT_WS(
|
||||
SELECT
|
||||
CONCAT_WS(
|
||||
';',
|
||||
CONCAT_WS(',', nav.navigation_item_id, nav.parent_id, nav2.parent_id),
|
||||
CONCAT_WS(',', nav.level),
|
||||
@ -201,7 +212,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
$cache_items = BASE_DIR . '/tmp/cache/sql/nav/items-' . $navi_id . '.cache';
|
||||
$cache_items = BASE_DIR . '/tmp/cache/sql/navigations/' . $navi_id . '/items.cache';
|
||||
|
||||
$navi_items = array();
|
||||
|
||||
@ -216,7 +227,8 @@
|
||||
{
|
||||
//-- Запрос пунктов меню
|
||||
$sql = "
|
||||
SELECT *
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
" . PREFIX . "_navigation_items
|
||||
WHERE
|
||||
@ -246,7 +258,8 @@
|
||||
{
|
||||
//-- Запрос пунктов меню
|
||||
$sql = "
|
||||
SELECT *
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
" . PREFIX . "_navigation_items
|
||||
WHERE
|
||||
@ -464,7 +477,7 @@
|
||||
if (empty($navi))
|
||||
$navi = '';
|
||||
|
||||
$navi .= eval2var(' ?>' . $item . '<?php ');
|
||||
$navi .= eval2var(' ?'.'>' . $item . '<'.'?php ');
|
||||
}
|
||||
|
||||
// Вставляем все пункты уровня в шаблон уровня
|
||||
|
@ -16,14 +16,17 @@
|
||||
global $AVE_DB;
|
||||
|
||||
// Получаем информацию о запросе
|
||||
$reqest_settings = $AVE_DB->Query("
|
||||
$sql = "
|
||||
SELECT
|
||||
#REQUEST SETTINGS = $id
|
||||
*
|
||||
FROM
|
||||
" . PREFIX . "_request
|
||||
WHERE
|
||||
" . (is_numeric($id) ? 'Id' : 'request_alias') . " = '" . $id . "'
|
||||
", -1, 'request/settings/' . $id)->FetchRow();
|
||||
";
|
||||
|
||||
$reqest_settings = $AVE_DB->Query($sql, -1, 'rqs_' . $id, true, '.settings')->FetchRow();
|
||||
|
||||
// Выходим, если нет запроса
|
||||
if (! is_object($reqest_settings))
|
||||
@ -197,7 +200,7 @@
|
||||
Id = '" . $id . "'
|
||||
");
|
||||
|
||||
$AVE_DB->clear_request($id);
|
||||
$AVE_DB->clearRequest($id);
|
||||
}
|
||||
|
||||
return @$retval;
|
||||
@ -275,7 +278,7 @@
|
||||
|
||||
if ($maxlength != '')
|
||||
{
|
||||
if ($maxlength == 'more' || $maxlength == 'esc'|| $maxlength == 'img')
|
||||
if ($maxlength == 'more' || $maxlength == 'esc'|| $maxlength == 'img' || $maxlength == 'strip')
|
||||
{
|
||||
if ($maxlength == 'more')
|
||||
{
|
||||
@ -291,6 +294,13 @@
|
||||
{
|
||||
$field_value = getImgSrc($field_value);
|
||||
}
|
||||
elseif ($maxlength == 'strip')
|
||||
{
|
||||
$field_value = str_replace(array("\r\n","\n","\r"), " ", $field_value);
|
||||
$field_value = strip_tags($field_value, REQUEST_STRIP_TAGS);
|
||||
$field_value = preg_replace('/ +/', ' ', $field_value);
|
||||
$field_value = trim($field_value);
|
||||
}
|
||||
}
|
||||
elseif (is_numeric($maxlength))
|
||||
{
|
||||
@ -336,22 +346,23 @@
|
||||
// Функция получения элемента запроса
|
||||
function showrequestelement($mixed, $template = '', $tparams = '')
|
||||
{
|
||||
global $AVE_DB, $req_item_num, $params_of_teaser, $use_cache;
|
||||
global
|
||||
$AVE_DB,
|
||||
$req_item_num,
|
||||
$params_of_teaser,
|
||||
$use_cache,
|
||||
$request_id,
|
||||
$request_changed,
|
||||
$request_changed_elements;
|
||||
|
||||
if (is_array($mixed))
|
||||
$mixed = $mixed[1];
|
||||
$row = intval($mixed[1]);
|
||||
|
||||
$row = (is_object($mixed) ? $mixed : $AVE_DB->Query("
|
||||
SELECT
|
||||
a.*
|
||||
FROM
|
||||
" . PREFIX . "_documents AS a
|
||||
WHERE
|
||||
a.Id = '" . intval($mixed) . "'
|
||||
GROUP BY
|
||||
a.Id
|
||||
LIMIT 1
|
||||
")->FetchRow());
|
||||
$row = (is_object($mixed)
|
||||
? $mixed
|
||||
: getDocument($row));
|
||||
|
||||
unset ($mixed);
|
||||
|
||||
if (! $row)
|
||||
return '';
|
||||
@ -360,17 +371,47 @@
|
||||
|
||||
if ($tparams != '')
|
||||
{
|
||||
$tparams_id = $row->Id.md5($tparams); // Создаем уникальный id для каждого набора параметров
|
||||
$tparams_id = $row->Id . md5($tparams); // Создаем уникальный id для каждого набора параметров
|
||||
$params_of_teaser[$tparams_id] = array(); // Для отмены лишних ворнингов
|
||||
$tparams = trim($tparams,'[]:'); // Удаляем: слева ':[', справа ']'
|
||||
$params_of_teaser[$tparams_id] = explode('|',$tparams); // Заносим параметры в массив уникального id
|
||||
}
|
||||
|
||||
$template = ($template > '' ? $template : $AVE_DB->Query(
|
||||
"SELECT rubric_teaser_template FROM " . PREFIX . "_rubrics WHERE Id='" . intval($row->rubric_id) . "'"
|
||||
)->GetCell());
|
||||
$sql = "
|
||||
SELECT
|
||||
rubric_teaser_template
|
||||
FROM
|
||||
" . PREFIX . "_rubrics
|
||||
WHERE
|
||||
Id = '" . intval($row->rubric_id) . "'
|
||||
";
|
||||
|
||||
$cachefile_docid = BASE_DIR . '/tmp/cache/sql/request/' . $row->Id . '/request-' . md5($template) . '.cache';
|
||||
$template = ($template > ''
|
||||
? $template
|
||||
: $AVE_DB->Query($sql)->GetCell());
|
||||
|
||||
$hash = 'g-' . UGROUP; // Группа пользователей
|
||||
$hash .= 'r-' . $request_id; // ID Запроса
|
||||
$hash .= 't-' . $row->Id; // ID документа
|
||||
|
||||
$hash = md5($hash);
|
||||
|
||||
$cache_id = 'requests/elements/' . (floor($row->Id / 1000)) . '/' . $row->Id;
|
||||
|
||||
$cachefile_docid = BASE_DIR . '/tmp/cache/sql/' . $cache_id . '/' . $hash . '.element';
|
||||
|
||||
if (file_exists($cachefile_docid) && isset($use_cache) && $use_cache == 1)
|
||||
{
|
||||
$check_file = $request_changed_elements;
|
||||
|
||||
if ($check_file > filemtime($cachefile_docid))
|
||||
unlink ($cachefile_docid);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (file_exists($cachefile_docid))
|
||||
unlink ($cachefile_docid);
|
||||
}
|
||||
|
||||
// Если включен DEV MODE, то отключаем кеширование запросов
|
||||
if (defined('DEV_MODE') AND DEV_MODE)
|
||||
@ -378,8 +419,8 @@
|
||||
|
||||
if (! file_exists($cachefile_docid))
|
||||
{
|
||||
$template = preg_replace("/\[tag:if_notempty:rfld:([a-zA-Z0-9-_]+)]\[(more|esc|img|[0-9-]+)]/u", '<'.'?php if((htmlspecialchars(request_get_document_field(\'$1\', '.$row->Id.', \'$2\', '.(int)$row->rubric_id.'), ENT_QUOTES)) != \'\') { '.'?'.'>', $template);
|
||||
$template = preg_replace("/\[tag:if_empty:rfld:([a-zA-Z0-9-_]+)]\[(more|esc|img|[0-9-]+)]/u", '<'.'?php if((htmlspecialchars(request_get_document_field(\'$1\', '.$row->Id.', \'$2\', '.(int)$row->rubric_id.'), ENT_QUOTES)) == \'\') { '.'?'.'>', $template);
|
||||
$template = preg_replace("/\[tag:if_notempty:rfld:([a-zA-Z0-9-_]+)]\[(more|esc|img|strip|[0-9-]+)]/u", '<'.'?php if((htmlspecialchars(request_get_document_field(\'$1\', '.$row->Id.', \'$2\', '.(int)$row->rubric_id.'), ENT_QUOTES)) != \'\') { '.'?'.'>', $template);
|
||||
$template = preg_replace("/\[tag:if_empty:rfld:([a-zA-Z0-9-_]+)]\[(more|esc|img|strip|[0-9-]+)]/u", '<'.'?php if((htmlspecialchars(request_get_document_field(\'$1\', '.$row->Id.', \'$2\', '.(int)$row->rubric_id.'), ENT_QUOTES)) == \'\') { '.'?'.'>', $template);
|
||||
$template = str_replace('[tag:if:else]', '<?php }else{ ?>', $template);
|
||||
$template = str_replace('[tag:/if]', '<?php } ?>', $template);
|
||||
|
||||
@ -401,7 +442,7 @@
|
||||
|
||||
// Парсим теги полей
|
||||
$item = preg_replace_callback(
|
||||
'/\[tag:rfld:([a-zA-Z0-9-_]+)]\[(more|esc|img|[0-9-]+)]/',
|
||||
'/\[tag:rfld:([a-zA-Z0-9-_]+)]\[(more|esc|img|strip|[0-9-]+)]/',
|
||||
create_function(
|
||||
'$m',
|
||||
'return request_get_document_field($m[1], ' . $row->Id . ', $m[2], ' . (int)$row->rubric_id . ');'
|
||||
@ -411,7 +452,7 @@
|
||||
|
||||
// Повторно парсим теги полей
|
||||
$item = preg_replace_callback(
|
||||
'/\[tag:rfld:([a-zA-Z0-9-_]+)]\[(more|esc|img|[0-9-]+)]/',
|
||||
'/\[tag:rfld:([a-zA-Z0-9-_]+)]\[(more|esc|img|strip|[0-9-]+)]/',
|
||||
create_function(
|
||||
'$m',
|
||||
'return request_get_document_field($m[1], ' . $row->Id . ', $m[2], ' . (int)$row->rubric_id . ');'
|
||||
@ -472,7 +513,6 @@
|
||||
if ($tparams != '')
|
||||
{
|
||||
// Заменяем tparam в тизере
|
||||
// $item = preg_replace('/\[tparam:([0-9]+)\]/', '<'.'?php echo $params_of_teaser["'.$tparams_id.'"][$1]'.'?'.'>', $item); // косячная версия, пока оставил
|
||||
$item = preg_replace_callback(
|
||||
'/\[tparam:([0-9]+)\]/',
|
||||
create_function(
|
||||
@ -715,12 +755,9 @@
|
||||
$request_where[] = "a.document_published <= UNIX_TIMESTAMP() AND (a.document_expire = 0 OR a.document_expire >= UNIX_TIMESTAMP())";
|
||||
|
||||
// Условия запроса
|
||||
// если используется выпадающий список, получаем строку без сохранения
|
||||
if (! empty($_POST['req_' . $id]) || ! empty($_SESSION['doc_' . $AVE_Core->curentdoc->Id]['req_' . $id]))
|
||||
$where_cond = request_get_condition_sql_string($request->Id, false);
|
||||
// если условия пустые, получаем строку с сохранением её в бд
|
||||
elseif (! $request->request_where_cond)
|
||||
$where_cond = request_get_condition_sql_string($request->Id, true);
|
||||
if (! $request->request_where_cond)
|
||||
$where_cond = request_get_condition_sql_string($request->Id, false);
|
||||
// иначе, берём из запроса
|
||||
else
|
||||
$where_cond = unserialize($request->request_where_cond);
|
||||
@ -795,73 +832,84 @@
|
||||
if ($request_select)
|
||||
$request_select_str = ',' . implode(",\r\n",$request_select);
|
||||
|
||||
unset($a, $t, $v);
|
||||
unset ($a, $t, $v);
|
||||
|
||||
// Составляем запрос к БД
|
||||
$sql = " ?>
|
||||
#REQUEST = $request->Id
|
||||
SELECT STRAIGHT_JOIN SQL_CALC_FOUND_ROWS
|
||||
a.*
|
||||
" . $request_select_str . "
|
||||
FROM
|
||||
" . $where_cond['from'] . "
|
||||
" . (isset($params['USER_FROM']) ? $params['USER_FROM'] : '') . "
|
||||
" . PREFIX . "_documents AS a
|
||||
" . implode(' ', $request_join) . "
|
||||
" . (isset($params['USER_JOIN']) ? $params['USER_FROM'] : '') . "
|
||||
WHERE
|
||||
" . $request_where_str . "
|
||||
GROUP BY a.Id
|
||||
" . $request_order_str . "
|
||||
" . $limit_str . "
|
||||
<? ";
|
||||
|
||||
$sql_request = eval2var($sql);
|
||||
|
||||
unset($sql);
|
||||
|
||||
// Убираем дубли в выборе полей
|
||||
foreach(array_keys($request_join) AS $key)
|
||||
if (! isset($params['SQL_QUERY']))
|
||||
{
|
||||
$search = PREFIX . '_document_fields AS t' . $key . ',';
|
||||
// Составляем запрос к БД
|
||||
$sql = " ?>
|
||||
SELECT STRAIGHT_JOIN SQL_CALC_FOUND_ROWS
|
||||
#REQUEST = $request->Id
|
||||
a.*
|
||||
" . $request_select_str . "
|
||||
FROM
|
||||
" . $where_cond['from'] . "
|
||||
" . (isset($params['USER_FROM']) ? $params['USER_FROM'] : '') . "
|
||||
" . PREFIX . "_documents AS a
|
||||
" . implode(' ', $request_join) . "
|
||||
" . (isset($params['USER_JOIN']) ? $params['USER_FROM'] : '') . "
|
||||
WHERE
|
||||
" . $request_where_str . "
|
||||
GROUP BY a.Id
|
||||
" . $request_order_str . "
|
||||
" . $limit_str . "
|
||||
<?"."php ";
|
||||
|
||||
if (preg_match('/' . $search . '/', $sql_request) > 0)
|
||||
$sql_request = eval2var($sql);
|
||||
|
||||
unset ($sql);
|
||||
|
||||
// Убираем дубли в выборе полей
|
||||
foreach (array_keys($request_join) AS $key)
|
||||
{
|
||||
$sql_request = str_replace($search, '', $sql_request);
|
||||
$search = PREFIX . '_document_fields AS t' . $key . ',';
|
||||
|
||||
if (preg_match('/' . $search . '/', $sql_request) > 0)
|
||||
{
|
||||
$sql_request = str_replace($search, '', $sql_request);
|
||||
}
|
||||
}
|
||||
|
||||
// Если просили просто показать сформированный запрос
|
||||
if ((isset($params['DEBUG']) && $params['DEBUG'] == 1) || $request->request_show_sql == 1)
|
||||
{
|
||||
$return = Debug::_print($sql_request);
|
||||
|
||||
return $return;
|
||||
}
|
||||
}
|
||||
|
||||
// Если просили просто показать сформированный запрос
|
||||
if ((isset($params['DEBUG']) && $params['DEBUG'] == 1) || $request->request_show_sql == 1)
|
||||
{
|
||||
$return = Debug::_print($sql_request);
|
||||
|
||||
return $return;
|
||||
}
|
||||
else
|
||||
{
|
||||
$sql_request = $params['SQL_QUERY'];
|
||||
}
|
||||
|
||||
// Выполняем запрос к бд
|
||||
$sql = $AVE_DB->Query($sql_request, (int)$request->request_cache_lifetime, 'rub_' . $request->rubric_id);
|
||||
$sql = $AVE_DB->Query($sql_request, (int)$request->request_cache_lifetime, 'rqs_' . $id, true, '.request');
|
||||
|
||||
// Если просили просто вернуть запрос, возвращаем результат
|
||||
// Если просили просто вернуть резльтат запроса, возвращаем результат
|
||||
if (isset($params['RETURN_SQL']) && $params['RETURN_SQL'] == 1)
|
||||
return $AVE_DB->GetFoundRows();
|
||||
|
||||
$num_items = 0;
|
||||
|
||||
// Если есть вывод пагинации, то выполняем запрос на получение кол-ва элементов
|
||||
if ($request->request_show_pagination == 1 || (isset($params['SHOW']) && $params['SHOW'] == 1))
|
||||
$num_items = $AVE_DB->NumAllRows($sql_request, (int)$request->request_cache_lifetime, 'rub_' . $request->rubric_id);
|
||||
$num_items = $AVE_DB->NumAllRows($sql_request, (int)$request->request_cache_lifetime, 'rqs_' . $id);
|
||||
else
|
||||
$num_items = $AVE_DB->GetFoundRows();
|
||||
$num_items = ((isset($params['NO_FOUND_ROWS']) && $params['NO_FOUND_ROWS'] == 1) || ! $request->request_count_items
|
||||
? 0
|
||||
: $AVE_DB->GetFoundRows());
|
||||
|
||||
// Если просили просто вернуть кол-во, возвращаем результат
|
||||
if (isset($params['RETURN_COUNT']) && $params['RETURN_COUNT'] == 1)
|
||||
return $num_items;
|
||||
|
||||
unset($sql_request);
|
||||
unset ($sql_request);
|
||||
|
||||
// Приступаем к обработке шаблона
|
||||
$main_template = $request->request_template_main;
|
||||
|
||||
//-- Если кол-во элементов больше 0
|
||||
//-- Если кол-во элементов больше 0, удалаяем лишнее
|
||||
if ($num_items > 0)
|
||||
{
|
||||
$main_template = preg_replace('/\[tag:if_empty](.*?)\[\/tag:if_empty]/si', '', $main_template);
|
||||
@ -903,12 +951,13 @@
|
||||
}
|
||||
|
||||
// Запоминаем глобально
|
||||
@$GLOBALS['page_id'][$_REQUEST['id']]['apage'] = (@$GLOBALS['page_id'][$_REQUEST['id']]['apage'] > $num_pages
|
||||
@$GLOBALS['page_id'][$_REQUEST['id']]['apage'] = (isset($GLOBALS['page_id'][$_REQUEST['id']]['apage']) && $GLOBALS['page_id'][$_REQUEST['id']]['apage'] > $num_pages
|
||||
? @$GLOBALS['page_id'][$_REQUEST['id']]['apage']
|
||||
: $num_pages);
|
||||
|
||||
$pagination = '';
|
||||
|
||||
// Если кол-во страниц больше 1й
|
||||
if ($num_pages > 1)
|
||||
{
|
||||
$queries = '';
|
||||
@ -976,10 +1025,15 @@
|
||||
//-- Общее число элементов
|
||||
$items_count = count($rows);
|
||||
|
||||
global $req_item_num, $use_cache;
|
||||
global $req_item_num, $use_cache, $request_id, $request_changed, $request_changed_elements;
|
||||
|
||||
$use_cache = $request->request_cache_elements;
|
||||
|
||||
$request_id = $request->Id;
|
||||
|
||||
$request_changed = $request->request_changed;
|
||||
$request_changed_elements = $request->request_changed_elements;
|
||||
|
||||
$item = '';
|
||||
|
||||
foreach ($rows as $row)
|
||||
|
@ -1,213 +1,226 @@
|
||||
<?php
|
||||
/**
|
||||
* AVE.cms
|
||||
*
|
||||
* @package AVE.cms
|
||||
* @version 3.x
|
||||
* @filesource
|
||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
|
||||
*
|
||||
* @license GPL v.2
|
||||
*/
|
||||
|
||||
/**
|
||||
* AVE.cms
|
||||
*
|
||||
* @package AVE.cms
|
||||
* @version 3.x
|
||||
* @filesource
|
||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
|
||||
*
|
||||
* @license GPL v.2
|
||||
*/
|
||||
|
||||
/**
|
||||
* Функция дописывает в JPG файлы IPTC Tag
|
||||
*
|
||||
* @param string $rec
|
||||
* @param string $data
|
||||
* @param string $value
|
||||
* @return string
|
||||
*/
|
||||
function iptc_make_tag($rec, $data, $value)
|
||||
{
|
||||
$length = strlen($value);
|
||||
$retval = chr(0x1C) . chr($rec) . chr($data);
|
||||
/**
|
||||
* Функция дописывает в JPG файлы IPTC Tag
|
||||
*
|
||||
* @param string $rec
|
||||
* @param string $data
|
||||
* @param string $value
|
||||
* @return string
|
||||
*/
|
||||
|
||||
if($length < 0x8000)
|
||||
if (! function_exists('iptc_make_tag'))
|
||||
{
|
||||
$retval .= chr($length >> 8) . chr($length & 0xFF);
|
||||
}
|
||||
else
|
||||
{
|
||||
$retval .= chr(0x80) .
|
||||
chr(0x04) .
|
||||
chr(($length >> 24) & 0xFF) .
|
||||
chr(($length >> 16) & 0xFF) .
|
||||
chr(($length >> 8) & 0xFF) .
|
||||
chr($length & 0xFF);
|
||||
}
|
||||
|
||||
return $retval . $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Функция накладывает watermark на заданный файл
|
||||
*
|
||||
* @param string $file URL Файла
|
||||
* @param string $position Позиция
|
||||
* @param int $transparency Прозарчность
|
||||
* @return string link
|
||||
*/
|
||||
function watermarks($file, $position='center', $transparency=100) {
|
||||
|
||||
global $AVE_DB;
|
||||
|
||||
if (!defined('WATERMARKS_DIR') || !defined('WATERMARKS_FILE')) exit(0);
|
||||
|
||||
$save = true;
|
||||
|
||||
$margin = 10;
|
||||
|
||||
$file_info = pathinfo($file);
|
||||
|
||||
$watermarkFile = BASE_DIR . '/' . WATERMARKS_FILE;
|
||||
$watermarkDir = BASE_DIR . '/' . WATERMARKS_DIR;
|
||||
|
||||
$imagePath = BASE_DIR . '/' . trim($file_info['dirname'], '/');
|
||||
$imageName = $file_info['basename'];
|
||||
|
||||
$copyPath = $watermarkDir . '/' . trim($file_info['dirname'], '/');
|
||||
$copyName = $imageName;
|
||||
|
||||
if(!is_dir($watermarkDir)) {
|
||||
@mkdir($watermarkDir, 0777, true);
|
||||
write_htaccess_deny($watermarkDir);
|
||||
}
|
||||
|
||||
if(file_exists("$copyPath/$copyName") || !file_exists("$imagePath/$imageName")){
|
||||
$save = false;
|
||||
}
|
||||
|
||||
if(file_exists($watermarkFile) && file_exists("$imagePath/$imageName")){
|
||||
|
||||
$size_image = getimagesize("$imagePath/$imageName");
|
||||
$size_wtmrk = getimagesize($watermarkFile);
|
||||
|
||||
list($xImage, $yImage) = $size_image;
|
||||
list($xWtmrk, $yWtmrk) = $size_wtmrk;
|
||||
|
||||
if ($xImage < $xWtmrk || $yImage < $yWtmrk) {
|
||||
$save = false;
|
||||
} else {
|
||||
$save = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (file_exists("$copyPath/$copyName")) $save = false;
|
||||
|
||||
if ($save){
|
||||
if (!is_dir($copyPath) && !@mkdir($copyPath, 0777, true)) exit(0);
|
||||
require_once BASE_DIR.'/class/class.thumbnail.php';
|
||||
$watermark = new Image_Toolbox("$imagePath/$imageName");
|
||||
|
||||
if (rename("$imagePath/$imageName", "$copyPath/$copyName"))
|
||||
function iptc_make_tag($rec, $data, $value)
|
||||
{
|
||||
$old = umask(0);
|
||||
chmod("$copyPath/$copyName", 0777);
|
||||
umask($old);
|
||||
}
|
||||
$length = strlen($value);
|
||||
$retval = chr(0x1C) . chr($rec) . chr($data);
|
||||
|
||||
switch ($position)
|
||||
{
|
||||
case 'top':
|
||||
case 'topcenter':
|
||||
$xLogoPosition = 'center -';
|
||||
$yLogoPosition = 'top +'.$margin;
|
||||
break;
|
||||
|
||||
case 'topleft':
|
||||
$xLogoPosition = 'left +'.$margin;
|
||||
$yLogoPosition = 'top +'.$margin;
|
||||
break;
|
||||
|
||||
case 'topright':
|
||||
$xLogoPosition = 'right -'.$margin;
|
||||
$yLogoPosition = 'top +'.$margin;
|
||||
break;
|
||||
|
||||
case 'center':
|
||||
$xLogoPosition = 'center -';
|
||||
$yLogoPosition = 'center -';
|
||||
break;
|
||||
|
||||
case 'centerleft':
|
||||
$xLogoPosition = 'left +'.$margin;
|
||||
$yLogoPosition = 'center -';
|
||||
break;
|
||||
|
||||
case 'centerright':
|
||||
$xLogoPosition = 'right -'.$margin;
|
||||
$yLogoPosition = 'center -';
|
||||
break;
|
||||
|
||||
case 'bottom':
|
||||
case 'bottomcenter':
|
||||
$xLogoPosition = 'center -';
|
||||
$yLogoPosition = 'bottom -'.$margin;
|
||||
break;
|
||||
|
||||
case 'bottomleft':
|
||||
$xLogoPosition = 'left +'.$margin;
|
||||
$yLogoPosition = 'bottom -'.$margin;
|
||||
break;
|
||||
|
||||
case 'bottomright':
|
||||
$xLogoPosition = 'right -'.$margin;
|
||||
$yLogoPosition = 'bottom -'.$margin;
|
||||
break;
|
||||
|
||||
case 'repeat':
|
||||
$xLogoPosition = 'repeat ';
|
||||
$yLogoPosition = 'repeat ';
|
||||
break;
|
||||
|
||||
default:
|
||||
$xLogoPosition = 'center -';
|
||||
$yLogoPosition = 'center -';
|
||||
break;
|
||||
}
|
||||
|
||||
$watermark->addImage($watermarkFile);
|
||||
$watermark->blend($xLogoPosition, $yLogoPosition, IMAGE_TOOLBOX_BLEND_COPY, $transparency);
|
||||
$watermark->save("$imagePath/$imageName");
|
||||
|
||||
if($watermark->_img['main']['type']==2){
|
||||
$image = getimagesize("$imagePath/$imageName", $info);
|
||||
if(!isset($info['APP13']))
|
||||
if ($length < 0x8000)
|
||||
{
|
||||
|
||||
$sitename = get_settings('site_name');
|
||||
|
||||
// установка IPTC тэгов
|
||||
$iptc = array(
|
||||
'2#120' => iconv("UTF-8","WINDOWS-1251",$sitename),
|
||||
'2#116' => "http://".$_SERVER['SERVER_NAME']
|
||||
);
|
||||
|
||||
// Преобразование IPTC тэгов в двоичный код
|
||||
$data = '';
|
||||
|
||||
foreach($iptc as $tag => $string)
|
||||
{
|
||||
$tag = substr($tag, 2);
|
||||
$data .= iptc_make_tag(2, $tag, $string);
|
||||
}
|
||||
|
||||
// Встраивание IPTC данных
|
||||
$content = iptcembed($data, "$imagePath/$imageName");
|
||||
|
||||
// запись нового изображения в файл
|
||||
$fp = fopen("$imagePath/$imageName", "wb");
|
||||
fwrite($fp, $content);
|
||||
fclose($fp);
|
||||
$retval .= chr($length >> 8) . chr($length & 0xFF);
|
||||
}
|
||||
else
|
||||
{
|
||||
$retval .= chr(0x80) .
|
||||
chr(0x04) .
|
||||
chr(($length >> 24) & 0xFF) .
|
||||
chr(($length >> 16) & 0xFF) .
|
||||
chr(($length >> 8) & 0xFF) .
|
||||
chr($length & 0xFF);
|
||||
}
|
||||
}
|
||||
|
||||
unset($watermark);
|
||||
return $retval . $value;
|
||||
}
|
||||
}
|
||||
|
||||
return $file;
|
||||
}
|
||||
|
||||
?>
|
||||
/**
|
||||
* Функция накладывает watermark на заданный файл
|
||||
*
|
||||
* @param string $file URL Файла
|
||||
* @param string $position Позиция
|
||||
* @param int $transparency Прозарчность
|
||||
* @return string link
|
||||
*/
|
||||
function watermarks($file, $position='center', $transparency=100)
|
||||
{
|
||||
global $AVE_DB;
|
||||
|
||||
if (! defined('WATERMARKS_DIR') || ! defined('WATERMARKS_FILE'))
|
||||
return $file;
|
||||
|
||||
$save = true;
|
||||
|
||||
$margin = 10;
|
||||
|
||||
$file_info = pathinfo($file);
|
||||
|
||||
$watermarkFile = BASE_DIR . '/' . WATERMARKS_FILE;
|
||||
$watermarkDir = BASE_DIR . '/' . WATERMARKS_DIR;
|
||||
|
||||
$imagePath = BASE_DIR . '/' . trim($file_info['dirname'], '/');
|
||||
$imageName = $file_info['basename'];
|
||||
|
||||
$copyPath = $watermarkDir . '/' . trim($file_info['dirname'], '/');
|
||||
$copyName = $imageName;
|
||||
|
||||
if (! file_exists($watermarkDir . $file))
|
||||
return $file;
|
||||
|
||||
if (! is_dir($watermarkDir))
|
||||
{
|
||||
@mkdir($watermarkDir, 0777, true);
|
||||
write_htaccess_deny($watermarkDir);
|
||||
}
|
||||
|
||||
if (file_exists("$copyPath/$copyName") || !file_exists("$imagePath/$imageName"))
|
||||
$save = false;
|
||||
|
||||
if (file_exists($watermarkFile) && file_exists("$imagePath/$imageName"))
|
||||
{
|
||||
$size_image = getimagesize("$imagePath/$imageName");
|
||||
$size_wtmrk = getimagesize($watermarkFile);
|
||||
|
||||
list($xImage, $yImage) = $size_image;
|
||||
list($xWtmrk, $yWtmrk) = $size_wtmrk;
|
||||
|
||||
if ($xImage < $xWtmrk || $yImage < $yWtmrk)
|
||||
$save = false;
|
||||
else
|
||||
$save = true;
|
||||
}
|
||||
|
||||
if (file_exists("$copyPath/$copyName"))
|
||||
$save = false;
|
||||
|
||||
if ($save)
|
||||
{
|
||||
if (! is_dir($copyPath) && !@mkdir($copyPath, 0777, true))
|
||||
return $file;
|
||||
|
||||
require_once BASE_DIR.'/class/class.thumbnail.php';
|
||||
|
||||
$watermark = new Image_Toolbox("$imagePath/$imageName");
|
||||
|
||||
if (rename("$imagePath/$imageName", "$copyPath/$copyName"))
|
||||
{
|
||||
$old = umask(0);
|
||||
chmod("$copyPath/$copyName", 0777);
|
||||
umask($old);
|
||||
}
|
||||
|
||||
switch ($position)
|
||||
{
|
||||
case 'top':
|
||||
case 'topcenter':
|
||||
$xLogoPosition = 'center -';
|
||||
$yLogoPosition = 'top +'.$margin;
|
||||
break;
|
||||
|
||||
case 'topleft':
|
||||
$xLogoPosition = 'left +'.$margin;
|
||||
$yLogoPosition = 'top +'.$margin;
|
||||
break;
|
||||
|
||||
case 'topright':
|
||||
$xLogoPosition = 'right -'.$margin;
|
||||
$yLogoPosition = 'top +'.$margin;
|
||||
break;
|
||||
|
||||
case 'center':
|
||||
$xLogoPosition = 'center -';
|
||||
$yLogoPosition = 'center -';
|
||||
break;
|
||||
|
||||
case 'centerleft':
|
||||
$xLogoPosition = 'left +'.$margin;
|
||||
$yLogoPosition = 'center -';
|
||||
break;
|
||||
|
||||
case 'centerright':
|
||||
$xLogoPosition = 'right -'.$margin;
|
||||
$yLogoPosition = 'center -';
|
||||
break;
|
||||
|
||||
case 'bottom':
|
||||
case 'bottomcenter':
|
||||
$xLogoPosition = 'center -';
|
||||
$yLogoPosition = 'bottom -'.$margin;
|
||||
break;
|
||||
|
||||
case 'bottomleft':
|
||||
$xLogoPosition = 'left +'.$margin;
|
||||
$yLogoPosition = 'bottom -'.$margin;
|
||||
break;
|
||||
|
||||
case 'bottomright':
|
||||
$xLogoPosition = 'right -'.$margin;
|
||||
$yLogoPosition = 'bottom -'.$margin;
|
||||
break;
|
||||
|
||||
case 'repeat':
|
||||
$xLogoPosition = 'repeat ';
|
||||
$yLogoPosition = 'repeat ';
|
||||
break;
|
||||
|
||||
default:
|
||||
$xLogoPosition = 'center -';
|
||||
$yLogoPosition = 'center -';
|
||||
break;
|
||||
}
|
||||
|
||||
$watermark->addImage($watermarkFile);
|
||||
$watermark->blend($xLogoPosition, $yLogoPosition, IMAGE_TOOLBOX_BLEND_COPY, $transparency);
|
||||
$watermark->save("$imagePath/$imageName");
|
||||
|
||||
if ($watermark->_img['main']['type'] == 2)
|
||||
{
|
||||
$image = getimagesize("$imagePath/$imageName", $info);
|
||||
|
||||
if (! isset($info['APP13']))
|
||||
{
|
||||
$sitename = get_settings('site_name');
|
||||
|
||||
// установка IPTC тэгов
|
||||
$iptc = array(
|
||||
'2#120' => iconv("UTF-8","WINDOWS-1251",$sitename),
|
||||
'2#116' => "http://".$_SERVER['SERVER_NAME']
|
||||
);
|
||||
|
||||
// Преобразование IPTC тэгов в двоичный код
|
||||
$data = '';
|
||||
|
||||
foreach ($iptc AS $tag => $string)
|
||||
{
|
||||
$tag = substr($tag, 2);
|
||||
$data .= iptc_make_tag(2, $tag, $string);
|
||||
}
|
||||
|
||||
// Встраивание IPTC данных
|
||||
$content = iptcembed($data, "$imagePath/$imageName");
|
||||
|
||||
// запись нового изображения в файл
|
||||
$fp = fopen("$imagePath/$imageName", "wb");
|
||||
fwrite($fp, $content);
|
||||
fclose($fp);
|
||||
}
|
||||
}
|
||||
|
||||
unset($watermark);
|
||||
}
|
||||
|
||||
return $file;
|
||||
}
|
||||
?>
|
@ -124,8 +124,8 @@
|
||||
$GLOBALS['CMS_CONFIG']['SMARTY_USE_SUB_DIRS'] = array('DESCR' => 'Создание папок для кэширования Установите это в false если ваше окружение PHP не разрешает создание директорий от имени Smarty. Поддиректории более эффективны, так что используйте их, если можете.','default'=>true,'TYPE'=>'bool','VARIANT'=>'');
|
||||
$GLOBALS['CMS_CONFIG']['CACHE_DOC_TPL'] = array('DESCR' => 'Кэширование скомпилированных шаблонов документов','default'=>true,'TYPE'=>'bool','VARIANT'=>'');
|
||||
$GLOBALS['CMS_CONFIG']['CACHE_DOC_FILE'] = array('DESCR' => 'Кэширование скомпилированных шаблонов документов в файлах','default'=>true,'TYPE'=>'bool','VARIANT'=>'');
|
||||
$GLOBALS['CMS_CONFIG']['CACHE_DOC_SQL'] = array('DESCR' => 'Кэширование SQL запроса информации о документе','default'=>0,'TYPE'=>'integer','VARIANT'=>'');
|
||||
$GLOBALS['CMS_CONFIG']['SYSTEM_CACHE_LIFETIME'] = array('DESCR' => 'Время жизни кеша запроса к настройкам системы (60*60*24*14 - 2 недели)','default'=>0,'TYPE'=>'integer','VARIANT'=>'');
|
||||
|
||||
$GLOBALS['CMS_CONFIG']['SITEMAP_CACHE_LIFETIME'] = array('DESCR' => 'Время жизни кеша для карты сайта (60*60*24*14 - 2 недели)','default'=>0,'TYPE'=>'integer','VARIANT'=>'');
|
||||
|
||||
$GLOBALS['CMS_CONFIG']['YANDEX_MAP_API_KEY'] = array('DESCR' => 'Yandex MAP API REY','default'=>'','TYPE'=>'string','VARIANT'=>'');
|
||||
$GLOBALS['CMS_CONFIG']['GOOGLE_MAP_API_KEY'] = array('DESCR' => 'Google MAP API REY','default'=>'','TYPE'=>'string','VARIANT'=>'');
|
||||
|
16
inc/init.php
16
inc/init.php
@ -6,7 +6,7 @@
|
||||
* @package AVE.cms
|
||||
* @version 3.x
|
||||
* @filesource
|
||||
* @copyright © 2007-2016 AVE.cms, http://www.ave-cms.ru
|
||||
* @copyright © 2007-2018 AVE.cms, http://www.ave-cms.ru
|
||||
*
|
||||
* @license GPL v.2
|
||||
*/
|
||||
@ -212,9 +212,12 @@
|
||||
foreach (array(ATTACH_DIR, 'cache', 'backup', 'logs', 'session', 'update') as $dir)
|
||||
write_htaccess_deny(BASE_DIR . '/tmp/' . $dir);
|
||||
|
||||
foreach (array('combine', 'module', 'redactor', 'smarty', 'sql', 'templates', 'tpl') as $dir)
|
||||
foreach (array('check', 'combine', 'module', 'redactor', 'smarty', 'sql', 'tpl') as $dir)
|
||||
write_htaccess_deny(BASE_DIR . '/tmp/cache/' . $dir);
|
||||
|
||||
//-- Шаблоны
|
||||
write_htaccess_deny(BASE_DIR . '/templates/' . DEFAULT_THEME_FOLDER . '/include/');
|
||||
|
||||
global $AVE_DB;
|
||||
|
||||
//-- Класс для работы с MySQL (Global $AVE_DB)
|
||||
@ -362,6 +365,7 @@
|
||||
|
||||
$sql = $AVE_DB->Query("
|
||||
SELECT
|
||||
# LANGS
|
||||
*
|
||||
FROM
|
||||
" . PREFIX . "_settings_lang
|
||||
@ -369,7 +373,7 @@
|
||||
lang_status = '1'
|
||||
ORDER BY
|
||||
lang_default ASC
|
||||
", SYSTEM_CACHE_LIFETIME, 'langs');
|
||||
", -1, 'langs', true, '.langs');
|
||||
|
||||
while ($row = $sql->FetchRow())
|
||||
{
|
||||
@ -406,6 +410,12 @@
|
||||
//-- Класс пагинации
|
||||
require (BASE_DIR . '/class/class.paginations.php');
|
||||
|
||||
// Класс UTM
|
||||
require (BASE_DIR . '/class/class.utm.php');
|
||||
$AVE_Utm = new UTMCookie;
|
||||
|
||||
$AVE_Utm->save_parameters();
|
||||
|
||||
//-- Класс Модулей
|
||||
require (BASE_DIR . '/class/class.modules.php');
|
||||
$AVE_Module = new AVE_Module;
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
define ('BASE_DIR', str_replace("\\", "/", rtrim($_SERVER['DOCUMENT_ROOT'],'/')));
|
||||
|
||||
if (! @filesize(BASE_DIR . '/inc/db.config.php'))
|
||||
if (! @filesize(BASE_DIR . '/config/db.config.php'))
|
||||
{
|
||||
header ('Location: Location:install/index.php');
|
||||
exit;
|
||||
@ -32,15 +32,6 @@
|
||||
|
||||
$abs_path = str_ireplace(BASE_DIR, '/', str_replace("\\", "/", dirname(dirname(__FILE__))));
|
||||
|
||||
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off')
|
||||
{
|
||||
$domain = 'https://'.$_SERVER['SERVER_NAME'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$domain = 'http://'.$_SERVER['SERVER_NAME'];
|
||||
}
|
||||
|
||||
// Проверяем настройку на публикацию документов
|
||||
$publish = get_settings('use_doctime')
|
||||
? 'AND doc.document_published < UNIX_TIMESTAMP() AND doc.document_expire > UNIX_TIMESTAMP()'
|
||||
@ -67,7 +58,7 @@
|
||||
// Вытаскиваем кол-во документов
|
||||
$sql = "
|
||||
SELECT STRAIGHT_JOIN SQL_CALC_FOUND_ROWS
|
||||
COUNT(doc.Id)
|
||||
COUNT(doc.Id) AS count
|
||||
FROM
|
||||
" . PREFIX . "_documents doc
|
||||
LEFT JOIN
|
||||
@ -86,7 +77,7 @@
|
||||
AND (rubperm.user_group_id = 2 AND rubperm.rubric_permission LIKE '%docread%')
|
||||
";
|
||||
|
||||
$num = $AVE_DB->Query($sql)->GetCell();
|
||||
$num = $AVE_DB->Query($sql, SITEMAP_CACHE_LIFETIME, 'sitemap')->GetCell();
|
||||
|
||||
if ($num > $_end)
|
||||
$parts = ceil($num/$_end);
|
||||
@ -98,7 +89,7 @@
|
||||
for ($i = 1; $i <= $parts; $i++):
|
||||
?>
|
||||
<sitemap>
|
||||
<loc><?= $domain . '/sitemap-' . $i . '.xml'; ?></loc>
|
||||
<loc><?= HOST . '/sitemap-' . $i . '.xml'; ?></loc>
|
||||
<lastmod><?= date("c"); ?></lastmod>
|
||||
</sitemap>
|
||||
<? endfor;
|
||||
@ -127,6 +118,7 @@
|
||||
AND doc.document_status = 1
|
||||
AND doc.document_deleted = 1
|
||||
$publish
|
||||
AND doc.Id != 1
|
||||
AND doc.Id != " . PAGE_NOT_FOUND_ID . "
|
||||
AND (document_meta_robots NOT LIKE '%noindex%' or document_meta_robots NOT LIKE '%nofollow%')
|
||||
AND (rubperm.user_group_id = 2 AND rubperm.rubric_permission LIKE '%docread%')
|
||||
@ -134,14 +126,14 @@
|
||||
LIMIT ".$_start.",".$_end."
|
||||
";
|
||||
|
||||
$res = $AVE_DB->Query($sql);
|
||||
$res = $AVE_DB->Query($sql, SITEMAP_CACHE_LIFETIME, 'sitemap');
|
||||
|
||||
echo '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL;
|
||||
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . PHP_EOL;
|
||||
if ((int)$_REQUEST['id'] == 1):
|
||||
?>
|
||||
<url>
|
||||
<loc><? echo $domain . '/'; ?></loc>
|
||||
<loc><? echo HOST . '/'; ?></loc>
|
||||
<lastmod><? echo date("c", time()); ?></lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
@ -150,7 +142,7 @@
|
||||
<?
|
||||
while($row = $res->FetchAssocArray()):
|
||||
$document_alias = $abs_path . $row['document_alias'] . URL_SUFF;
|
||||
$document_alias = $domain . str_ireplace($abs_path . '/' . URL_SUFF, '/', $document_alias);
|
||||
$document_alias = HOST . str_ireplace($abs_path . '/' . URL_SUFF, '/', $document_alias);
|
||||
$date = $row["document_published"] ? date("c", $row["document_published"]) : date("c");
|
||||
?>
|
||||
<url>
|
||||
|
@ -178,6 +178,8 @@
|
||||
if (
|
||||
! defined('ONLYCONTENT')
|
||||
&&
|
||||
! GZIP_COMPRESSION
|
||||
&&
|
||||
UGROUP == 1
|
||||
&&
|
||||
defined('PROFILING') && PROFILING
|
||||
|
@ -244,18 +244,18 @@ INSERT INTO `%%PRFX%%_document_fields` VALUES
|
||||
(4, 2, 2, 0, 'Извините, запрошенный Вами документ не найден.', '0');#inst#
|
||||
|
||||
INSERT INTO `%%PRFX%%_documents` VALUES
|
||||
(1, 1, 0, 0, '/', '0','Главная', 'Главная страница', 0, 0, 0, 1, '0', '', '', 'index,follow', '3', '0.5', '1', '0', 0, 0, 0, '', '', 'ru', '1', ''),
|
||||
(2, 1, 0, 0, '404-not-found', '0', '404 - Документ не найден', 'Ошибка 404', 0, 0, 0, 1, '0', '', '', 'noindex,nofollow', '6', '0', '1', '0', 0, 0, 0, '', '', 'ru', '2', '');#inst#
|
||||
(1, 1, 0, 0, '/', '0', '', 'Главная', 'Главная страница', '0', '0', '0', '1', '0', '', '', 'index,follow', '3', '0.5', '1', '0', '0', '0', '0', '', '', 'ru', '1', ''),
|
||||
(2, 1, 0, 0, '404-dokument-ne-najden', '0', '', '404 - Документ не найден', 'Ошибка 404', '0', '0', '0', '1', '0', '', '', 'noindex,nofollow', '6', '0', '1', '0', '0', '0', '0', '', '', 'ru', '2', '');#inst#
|
||||
|
||||
INSERT INTO `%%PRFX%%_navigation` VALUES
|
||||
(1,'main','Основное меню','<li class=\"nav-item\">\n <a class=\"nav-link\" href=\"[tag:link]\">[tag:linkname]</a>\n</li>','','','<li class=\"nav-item active\">\n <a class=\"nav-link\" href=\"[tag:link]\">[tag:linkname]</a>\n</li>','','','<ul class=\"navbar-nav mr-auto\">\n[tag:content]\n</ul>','','','','','','','','1,2,3,4,5','1');#inst#
|
||||
|
||||
INSERT INTO `%%PRFX%%_navigation_items` VALUES
|
||||
(1,1,1,'/','Главная','','_self','','','','',0,'1',0,'1');#inst#
|
||||
(1,1,1,'/','Главная','','_self','','','','','0','1','0','1');#inst#
|
||||
|
||||
INSERT INTO `%%PRFX%%_rubric_fields` VALUES
|
||||
(1, 1, 0, 'header', 'Заголовок', 'single_line', 0, 1, '', '', '', '', ''),
|
||||
(2, 1, 0, 'text', 'Текст', 'multi_line', 0, 2, '', '', '', '', '');#inst#
|
||||
(1, 1, 0, 'header', 'Заголовок', 'single_line', '0', '1', '', '0', '', '', ''),
|
||||
(2, 1, 0, 'text', 'Текст', 'multi_line', '0', '2', '', '0', '', '', '');#inst#
|
||||
|
||||
INSERT INTO `%%PRFX%%_rubric_permissions` VALUES
|
||||
(1, 1, 1, 'alles'),
|
||||
@ -265,7 +265,7 @@ INSERT INTO `%%PRFX%%_rubric_permissions` VALUES
|
||||
(5, 1, 5, 'docread');#inst#
|
||||
|
||||
INSERT INTO `%%PRFX%%_rubrics` VALUES
|
||||
(1,'Основные страницы','','0','<h1 class=\"mt-5\">[tag:fld:header]</h1>\n[tag:fld:text]',1,1,0,1,'','','','','','','','0','','0',0);#inst#
|
||||
(1,'Основные страницы','','0','<h1 class=\"mt-5\">[tag:fld:header]</h1>\n[tag:fld:text]','1','1','0','1','','','','','','','','0','','0','0','0','0');#inst#
|
||||
|
||||
INSERT INTO `%%PRFX%%_settings` VALUES
|
||||
(
|
||||
|
@ -227,7 +227,7 @@
|
||||
|
||||
define('BASE_DIR', str_replace("\\", "/", dirname(dirname(__FILE__))));
|
||||
|
||||
if (! is_writable(BASE_DIR . '/cache/smarty/'))
|
||||
if (! is_writable(BASE_DIR . '/tmp/cache/smarty/'))
|
||||
die('Cache folder is not writeable!');
|
||||
|
||||
include(BASE_DIR . '/config/db.config.php');
|
||||
@ -247,7 +247,8 @@
|
||||
$db_connect = check_db_connect($config['dbhost'], $config['dbuser'], $config['dbpass'], $config['dbname']);
|
||||
$check_installed = check_installed($config['dbpref']);
|
||||
|
||||
if ((true === $db_connect) && $_REQUEST['step'] != 'finish' && check_installed($config['dbpref'])) {
|
||||
if ((true === $db_connect) && $_REQUEST['step'] != 'finish' && check_installed($config['dbpref']))
|
||||
{
|
||||
echo '<pre>' . $AVE_Template->get_config_vars('installed') . '</pre>';
|
||||
exit;
|
||||
};
|
||||
@ -260,14 +261,15 @@
|
||||
// include_once(BASE_DIR . '/inc/errors.php');
|
||||
|
||||
$count_error = sizeof((array) $error_is_required);
|
||||
|
||||
if (1 == $count_error)
|
||||
{
|
||||
$AVE_Template->assign('error_header', $AVE_Template->get_config_vars('erroro'));
|
||||
}
|
||||
elseif ($count_error > 1)
|
||||
{
|
||||
$AVE_Template->assign('error_header', $AVE_Template->get_config_vars('erroro_more'));
|
||||
}
|
||||
{
|
||||
$AVE_Template->assign('error_header', $AVE_Template->get_config_vars('erroro_more'));
|
||||
}
|
||||
|
||||
if ($count_error > 0 && ! (isset($_REQUEST['force']) && 1 == $_REQUEST['force']))
|
||||
{
|
||||
@ -482,9 +484,9 @@
|
||||
$filename = BASE_DIR . '/install/data_demo.sql';
|
||||
}
|
||||
else
|
||||
{
|
||||
$filename = BASE_DIR . '/install/data_base.sql';
|
||||
}
|
||||
{
|
||||
$filename = BASE_DIR . '/install/data_base.sql';
|
||||
}
|
||||
|
||||
$mysql_connect = @mysqli_connect($config['dbhost'], $config['dbuser'], $config['dbpass']);
|
||||
@mysqli_select_db($mysql_connect, $config['dbname']);
|
||||
@ -514,11 +516,9 @@
|
||||
@mysqli_query($mysql_connect, "SET COLLATION_CONNECTION = 'utf8_general_ci'");
|
||||
@mysqli_query($mysql_connect, $in);
|
||||
}
|
||||
/*
|
||||
$auth = base64_encode(serialize(array('id' => '1', 'hash'=>$hash)));
|
||||
@setcookie('auth', $auth);
|
||||
*/
|
||||
|
||||
$AVE_Template->display('step6.tpl');
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -11,6 +11,7 @@ CREATE TABLE `%%PRFX%%_blocks` (
|
||||
KEY `block_alias` (`block_alias`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_countries` (
|
||||
`Id` mediumint(5) unsigned NOT NULL auto_increment,
|
||||
`country_code` char(2) NOT NULL default 'RU',
|
||||
@ -20,6 +21,7 @@ CREATE TABLE `%%PRFX%%_countries` (
|
||||
PRIMARY KEY (`Id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_document_fields` (
|
||||
`Id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`rubric_field_id` mediumint(5) unsigned NOT NULL DEFAULT '0',
|
||||
@ -29,11 +31,12 @@ CREATE TABLE `%%PRFX%%_document_fields` (
|
||||
`document_in_search` enum('1','0') NOT NULL DEFAULT '1',
|
||||
PRIMARY KEY (`Id`),
|
||||
KEY `document_id` (`document_id`),
|
||||
KEY `rubric_field_id` (`rubric_field_id`),
|
||||
KEY `field_value` (`field_value`),
|
||||
KEY `field_number_value` (`field_number_value`),
|
||||
KEY `rubric_field_id` (`rubric_field_id`)
|
||||
KEY `field_number_value` (`field_number_value`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_document_fields_text` (
|
||||
`Id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`rubric_field_id` mediumint(5) unsigned NOT NULL DEFAULT '0',
|
||||
@ -44,6 +47,7 @@ CREATE TABLE `%%PRFX%%_document_fields_text` (
|
||||
KEY `rubric_field_id` (`rubric_field_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_document_keywords` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`document_id` int(11) NOT NULL,
|
||||
@ -53,6 +57,7 @@ CREATE TABLE `%%PRFX%%_document_keywords` (
|
||||
KEY `keyword` (`keyword`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_document_remarks` (
|
||||
`Id` int(10) unsigned NOT NULL auto_increment,
|
||||
`document_id` int(10) unsigned NOT NULL default '0',
|
||||
@ -67,6 +72,7 @@ CREATE TABLE `%%PRFX%%_document_remarks` (
|
||||
KEY `document_id` (`document_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_document_rev` (
|
||||
`Id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`doc_id` mediumint(5) unsigned NOT NULL DEFAULT '0',
|
||||
@ -77,6 +83,7 @@ CREATE TABLE `%%PRFX%%_document_rev` (
|
||||
KEY `doc_id` (`doc_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_documents` (
|
||||
`Id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`rubric_id` mediumint(5) unsigned NOT NULL DEFAULT '0',
|
||||
@ -84,6 +91,7 @@ CREATE TABLE `%%PRFX%%_documents` (
|
||||
`document_parent` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`document_alias` varchar(255) NOT NULL DEFAULT '',
|
||||
`document_alias_history` enum('0','1','2') NOT NULL DEFAULT '0',
|
||||
`document_short_alias` VARCHAR(10) NOT NULL DEFAULT '', # 3.24
|
||||
`document_title` varchar(255) NOT NULL DEFAULT '',
|
||||
`document_breadcrum_title` varchar(255) NOT NULL DEFAULT '',
|
||||
`document_published` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
@ -115,6 +123,7 @@ CREATE TABLE `%%PRFX%%_documents` (
|
||||
KEY `document_expire` (`document_expire`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_document_alias_history` (
|
||||
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`document_id` int(10) unsigned NOT NULL default '0',
|
||||
@ -126,15 +135,19 @@ CREATE TABLE `%%PRFX%%_document_alias_history` (
|
||||
KEY `document_id` (`document_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_document_tags` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`rubric_id` int(3) NOT NULL, # 3.24
|
||||
`document_id` int(11) NOT NULL,
|
||||
`tag` varchar(255) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `rubric_id` (`rubric_id`),
|
||||
KEY `document_id` (`document_id`),
|
||||
KEY `tag` (`tag`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_module` (
|
||||
`Id` smallint(3) unsigned NOT NULL auto_increment,
|
||||
`ModuleName` char(50) NOT NULL,
|
||||
@ -152,9 +165,10 @@ CREATE TABLE `%%PRFX%%_module` (
|
||||
UNIQUE KEY `ModuleName` (`ModuleName`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_modules_aliases` (
|
||||
`id` tinyint(5) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`document_id` int(10) NOT NULL DEFAULT '0',
|
||||
`document_id` int(10) NOT NULL DEFAULT '0', # 3.24
|
||||
`module_name` char(50) NOT NULL DEFAULT '',
|
||||
`module_action` varchar(255) NOT NULL DEFAULT '',
|
||||
`module_link` varchar(500) NOT NULL DEFAULT '',
|
||||
@ -166,6 +180,7 @@ CREATE TABLE `%%PRFX%%_modules_aliases` (
|
||||
KEY `module_name` (`module_name`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_navigation` (
|
||||
`navigation_id` smallint(3) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`alias` varchar(20) NOT NULL,
|
||||
@ -190,6 +205,7 @@ CREATE TABLE `%%PRFX%%_navigation` (
|
||||
KEY `alias` (`alias`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_navigation_items` (
|
||||
`navigation_item_id` mediumint(5) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`navigation_id` smallint(3) unsigned NOT NULL DEFAULT '0',
|
||||
@ -212,6 +228,7 @@ CREATE TABLE `%%PRFX%%_navigation_items` (
|
||||
KEY `navi_item_status` (`status`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_paginations` (
|
||||
`id` tinyint(1) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`pagination_name` tinytext,
|
||||
@ -229,6 +246,7 @@ CREATE TABLE `%%PRFX%%_paginations` (
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_request` (
|
||||
`Id` smallint(3) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`rubric_id` smallint(3) unsigned NOT NULL,
|
||||
@ -256,11 +274,14 @@ CREATE TABLE `%%PRFX%%_request` (
|
||||
`request_external` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`request_ajax` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`request_show_sql` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`request_changed` int(10) unsigned NOT NULL DEFAULT '0', # 3.24
|
||||
`request_changed_elements` int(10) unsigned NOT NULL DEFAULT '0', # 3.24
|
||||
PRIMARY KEY (`Id`),
|
||||
KEY `rubric_id` (`rubric_id`),
|
||||
KEY `request_alias` (`request_alias`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_request_conditions` (
|
||||
`Id` mediumint(5) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`request_id` smallint(3) unsigned NOT NULL,
|
||||
@ -274,6 +295,25 @@ CREATE TABLE `%%PRFX%%_request_conditions` (
|
||||
KEY `request_id` (`request_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
# 3.24
|
||||
CREATE TABLE `%%PRFX%%_rubric_breadcrumb` (
|
||||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`rubric_id` smallint(3) unsigned NOT NULL,
|
||||
`box` varchar(500) NOT NULL DEFAULT '',
|
||||
`show_main` enum('1','0') NOT NULL DEFAULT '1',
|
||||
`show_host` enum('1','0') NOT NULL DEFAULT '1',
|
||||
`sepparator` varchar(255) NOT NULL,
|
||||
`sepparator_use` enum('1','0') NOT NULL DEFAULT '1',
|
||||
`link_box` varchar(500) NOT NULL DEFAULT '',
|
||||
`link_template` varchar(500) NOT NULL DEFAULT '',
|
||||
`self_box` varchar(500) NOT NULL DEFAULT '',
|
||||
`link_box_last` enum('1','0') NOT NULL DEFAULT '1',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `rubric_id` (`rubric_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_rubric_fields` (
|
||||
`Id` mediumint(5) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`rubric_id` smallint(3) unsigned NOT NULL,
|
||||
@ -294,6 +334,7 @@ CREATE TABLE `%%PRFX%%_rubric_fields` (
|
||||
KEY `rubric_field_alias` (`rubric_field_alias`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_rubric_fields_group` (
|
||||
`Id` mediumint(5) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`rubric_id` smallint(3) unsigned NOT NULL,
|
||||
@ -304,6 +345,7 @@ CREATE TABLE `%%PRFX%%_rubric_fields_group` (
|
||||
KEY `rubric_id` (`rubric_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_rubric_permissions` (
|
||||
`Id` mediumint(5) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`rubric_id` smallint(3) unsigned NOT NULL,
|
||||
@ -313,6 +355,7 @@ CREATE TABLE `%%PRFX%%_rubric_permissions` (
|
||||
KEY `rubric_id` (`rubric_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_rubric_template_cache` (
|
||||
`id` bigint(15) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`hash` char(32) NOT NULL,
|
||||
@ -327,6 +370,7 @@ CREATE TABLE `%%PRFX%%_rubric_template_cache` (
|
||||
KEY `rubric_id` (`rub_id`,`doc_id`,`wysiwyg`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_rubrics` (
|
||||
`Id` smallint(3) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`rubric_title` varchar(255) NOT NULL,
|
||||
@ -348,10 +392,13 @@ CREATE TABLE `%%PRFX%%_rubrics` (
|
||||
`rubric_description` text NOT NULL,
|
||||
`rubric_meta_gen` enum('0','1') default '0' NOT NULL,
|
||||
`rubric_position` int(11) unsigned NOT NULL DEFAULT '100',
|
||||
`rubric_changed` int(10) NOT NULL DEFAULT '0', # 3.24
|
||||
`rubric_changed_fields` int(10) NOT NULL DEFAULT '0', # 3.24
|
||||
PRIMARY KEY (`Id`),
|
||||
KEY `rubric_template_id` (`rubric_template_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_rubric_templates` (
|
||||
`id` mediumint(5) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`rubric_id` smallint(3) unsigned NOT NULL,
|
||||
@ -363,6 +410,7 @@ CREATE TABLE `%%PRFX%%_rubric_templates` (
|
||||
KEY `rubric_id` (`rubric_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_sessions` (
|
||||
`sesskey` varchar(32) NOT NULL,
|
||||
`expiry` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
@ -374,6 +422,7 @@ CREATE TABLE `%%PRFX%%_sessions` (
|
||||
KEY `expire_datum` (`expire_datum`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_settings` (
|
||||
`Id` tinyint(1) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`site_name` varchar(255) NOT NULL,
|
||||
@ -421,6 +470,7 @@ CREATE TABLE `%%PRFX%%_settings` (
|
||||
PRIMARY KEY (`Id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_settings_lang` (
|
||||
`Id` mediumint(5) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`lang_key` varchar(2) NOT NULL DEFAULT 'ru',
|
||||
@ -432,6 +482,7 @@ CREATE TABLE `%%PRFX%%_settings_lang` (
|
||||
UNIQUE KEY `lang_key` (`lang_key`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_settings_menu` (
|
||||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(255) DEFAULT NULL,
|
||||
@ -441,6 +492,7 @@ CREATE TABLE `%%PRFX%%_settings_menu` (
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_sysblocks` (
|
||||
`id` mediumint(5) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`sysblock_name` varchar(255) NOT NULL,
|
||||
@ -457,6 +509,7 @@ CREATE TABLE `%%PRFX%%_sysblocks` (
|
||||
KEY `sysblock_alias` (`sysblock_alias`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_templates` (
|
||||
`Id` smallint(3) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`template_title` varchar(255) NOT NULL,
|
||||
@ -466,6 +519,7 @@ CREATE TABLE `%%PRFX%%_templates` (
|
||||
PRIMARY KEY (`Id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_user_groups` (
|
||||
`user_group` smallint(3) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`user_group_name` char(50) NOT NULL,
|
||||
@ -476,6 +530,7 @@ CREATE TABLE `%%PRFX%%_user_groups` (
|
||||
PRIMARY KEY (`user_group`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_users` (
|
||||
`Id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`password` char(32) NOT NULL,
|
||||
@ -513,6 +568,7 @@ CREATE TABLE `%%PRFX%%_users` (
|
||||
KEY `user_group` (`user_group`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_users_session` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`user_id` int(11) NOT NULL,
|
||||
@ -524,6 +580,7 @@ CREATE TABLE `%%PRFX%%_users_session` (
|
||||
KEY `user_id` (`user_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
|
||||
|
||||
|
||||
CREATE TABLE `%%PRFX%%_view_count` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`document_id` int(11) NOT NULL,
|
||||
|
@ -0,0 +1,33 @@
|
||||
/* Sticky footer styles
|
||||
-------------------------------------------------- */
|
||||
html {
|
||||
position: relative;
|
||||
min-height: 100%;
|
||||
}
|
||||
body {
|
||||
/* Margin bottom by footer height */
|
||||
margin-bottom: 60px;
|
||||
}
|
||||
.footer {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
/* Set the fixed height of the footer here */
|
||||
height: 60px;
|
||||
line-height: 60px; /* Vertically center the text there */
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
||||
|
||||
/* Custom page CSS
|
||||
-------------------------------------------------- */
|
||||
/* Not required for template or sticky footer method. */
|
||||
|
||||
body > .container {
|
||||
padding: 60px 15px 0;
|
||||
}
|
||||
|
||||
.footer > .container {
|
||||
padding-right: 15px;
|
||||
padding-left: 15px;
|
||||
}
|
267
tmp/update/sql.update.php
Normal file
267
tmp/update/sql.update.php
Normal file
@ -0,0 +1,267 @@
|
||||
<?
|
||||
/* -------------------------------------------------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------3.24-------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------------------------------------------------- */
|
||||
|
||||
|
||||
$check = $AVE_DB->Query("
|
||||
SHOW COLUMNS
|
||||
FROM
|
||||
" . PREFIX . "_rubrics
|
||||
LIKE
|
||||
'rubric_changed'
|
||||
")->NumRows();
|
||||
|
||||
$exist = ($check) ? true : false;
|
||||
|
||||
if ($exist === false)
|
||||
{
|
||||
$AVE_DB->Real_Query("
|
||||
ALTER TABLE
|
||||
" . PREFIX . "_rubrics
|
||||
ADD
|
||||
`rubric_changed` int(10) NOT NULL DEFAULT '0'
|
||||
AFTER
|
||||
`rubric_position`
|
||||
");
|
||||
|
||||
$AVE_DB->Real_Query("
|
||||
UPDATE
|
||||
" . PREFIX . "_rubrics
|
||||
SET
|
||||
`rubric_changed` = UNIX_TIMESTAMP()
|
||||
");
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------------------
|
||||
|
||||
$check = $AVE_DB->Query("
|
||||
SHOW COLUMNS
|
||||
FROM
|
||||
" . PREFIX . "_rubrics
|
||||
LIKE
|
||||
'rubric_changed_fields'
|
||||
")->NumRows();
|
||||
|
||||
$exist = ($check) ? true : false;
|
||||
|
||||
if ($exist === false)
|
||||
{
|
||||
$AVE_DB->Real_Query("
|
||||
ALTER TABLE
|
||||
" . PREFIX . "_rubrics
|
||||
ADD
|
||||
`rubric_changed_fields` int(10) NOT NULL DEFAULT '0'
|
||||
AFTER
|
||||
`rubric_changed`
|
||||
");
|
||||
|
||||
$AVE_DB->Real_Query("
|
||||
UPDATE
|
||||
" . PREFIX . "_rubrics
|
||||
SET
|
||||
`rubric_changed_fields` = UNIX_TIMESTAMP()
|
||||
");
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------------------
|
||||
|
||||
$check = $AVE_DB->Query("
|
||||
SHOW TABLES
|
||||
LIKE
|
||||
'" . PREFIX . "_rubric_breadcrumb'
|
||||
")->NumRows();
|
||||
|
||||
$exist = ($check) ? true : false;
|
||||
|
||||
if ($exist === false)
|
||||
{
|
||||
$AVE_DB->Real_Query("
|
||||
CREATE TABLE `" . PREFIX . "_rubric_breadcrumb` (
|
||||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`rubric_id` smallint(3) unsigned NOT NULL,
|
||||
`box` varchar(500) NOT NULL DEFAULT '',
|
||||
`show_main` enum('1','0') NOT NULL DEFAULT '1',
|
||||
`show_host` enum('1','0') NOT NULL DEFAULT '1',
|
||||
`sepparator` varchar(255) NOT NULL,
|
||||
`sepparator_use` enum('1','0') NOT NULL DEFAULT '1',
|
||||
`link_box` varchar(500) NOT NULL DEFAULT '',
|
||||
`link_template` varchar(500) NOT NULL DEFAULT '',
|
||||
`self_box` varchar(500) NOT NULL DEFAULT '',
|
||||
`link_box_last` enum('1','0') NOT NULL DEFAULT '1',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `rubric_id` (`rubric_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;
|
||||
");
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------------------
|
||||
|
||||
$check = $AVE_DB->Query("
|
||||
SHOW COLUMNS
|
||||
FROM
|
||||
" . PREFIX . "_request
|
||||
LIKE
|
||||
'request_changed'
|
||||
")->NumRows();
|
||||
|
||||
$exist = ($check) ? true : false;
|
||||
|
||||
if ($exist === false)
|
||||
{
|
||||
$AVE_DB->Real_Query("
|
||||
ALTER TABLE
|
||||
" . PREFIX . "_request
|
||||
ADD
|
||||
`request_changed` int(10) unsigned NOT NULL DEFAULT '0'
|
||||
AFTER
|
||||
`request_show_sql`
|
||||
");
|
||||
|
||||
$AVE_DB->Real_Query("
|
||||
UPDATE
|
||||
" . PREFIX . "_request
|
||||
SET
|
||||
`request_changed` = UNIX_TIMESTAMP()
|
||||
");
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------------------
|
||||
|
||||
$check = $AVE_DB->Query("
|
||||
SHOW COLUMNS
|
||||
FROM
|
||||
" . PREFIX . "_request
|
||||
LIKE
|
||||
'request_changed_elements'
|
||||
")->NumRows();
|
||||
|
||||
$exist = ($check) ? true : false;
|
||||
|
||||
if ($exist === false)
|
||||
{
|
||||
$AVE_DB->Real_Query("
|
||||
ALTER TABLE
|
||||
" . PREFIX . "_request
|
||||
ADD
|
||||
`request_changed_elements` int(10) unsigned NOT NULL DEFAULT '0'
|
||||
AFTER
|
||||
`request_changed`
|
||||
");
|
||||
|
||||
$AVE_DB->Real_Query("
|
||||
UPDATE
|
||||
" . PREFIX . "_request
|
||||
SET
|
||||
`request_changed_elements` = UNIX_TIMESTAMP()
|
||||
");
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------------------
|
||||
|
||||
$check = $AVE_DB->Query("
|
||||
SHOW COLUMNS
|
||||
FROM
|
||||
" . PREFIX . "_documents
|
||||
LIKE
|
||||
'document_short_alias'
|
||||
")->NumRows();
|
||||
|
||||
$exist = ($check) ? true : false;
|
||||
|
||||
if ($exist === false)
|
||||
{
|
||||
$AVE_DB->Real_Query("
|
||||
ALTER TABLE
|
||||
" . PREFIX . "_documents
|
||||
ADD
|
||||
`document_short_alias` VARCHAR(10) NOT NULL DEFAULT ''
|
||||
AFTER
|
||||
`document_alias_history`
|
||||
");
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------------------
|
||||
|
||||
$check = $AVE_DB->Query("
|
||||
SHOW COLUMNS
|
||||
FROM
|
||||
" . PREFIX . "_document_tags
|
||||
LIKE
|
||||
'rubric_id'
|
||||
")->NumRows();
|
||||
|
||||
$exist = ($check) ? true : false;
|
||||
|
||||
if ($exist === false)
|
||||
{
|
||||
$AVE_DB->Real_Query("
|
||||
ALTER TABLE
|
||||
" . PREFIX . "_document_tags
|
||||
ADD
|
||||
`rubric_id` int(3) NOT NULL
|
||||
AFTER
|
||||
`id`
|
||||
");
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------------------
|
||||
|
||||
$check = $AVE_DB->Query("
|
||||
SHOW COLUMNS
|
||||
FROM
|
||||
" . PREFIX . "_modules_aliases
|
||||
LIKE
|
||||
'document_id'
|
||||
")->NumRows();
|
||||
|
||||
$exist = ($check) ? true : false;
|
||||
|
||||
if ($exist === false)
|
||||
{
|
||||
$AVE_DB->Real_Query("
|
||||
ALTER TABLE
|
||||
" . PREFIX . "_modules_aliases
|
||||
ADD
|
||||
`document_id` int(10) NOT NULL DEFAULT '0'
|
||||
AFTER
|
||||
`id`
|
||||
");
|
||||
}
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------------------
|
||||
|
||||
$check = $AVE_DB->Query("
|
||||
SHOW COLUMNS
|
||||
FROM
|
||||
" . PREFIX . "_request
|
||||
LIKE
|
||||
'request_count_items'
|
||||
")->NumRows();
|
||||
|
||||
$exist = ($check) ? true : false;
|
||||
|
||||
if ($exist === false)
|
||||
{
|
||||
$AVE_DB->Real_Query("
|
||||
ALTER TABLE
|
||||
" . PREFIX . "_request
|
||||
ADD
|
||||
`request_count_items` enum('0','1') NOT NULL DEFAULT '0'
|
||||
AFTER
|
||||
`request_use_query`
|
||||
");
|
||||
|
||||
$AVE_DB->Real_Query("
|
||||
UPDATE
|
||||
" . PREFIX . "_request
|
||||
SET
|
||||
`request_changed_elements` = UNIX_TIMESTAMP()
|
||||
");
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------3.25---------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------------------------------------------------- */
|
||||
?>
|
Loading…
x
Reference in New Issue
Block a user