mirror of
				https://github.com/avecms/AVE.cms.git
				synced 2025-10-31 05:36:39 +00:00 
			
		
		
		
	Fixes
This commit is contained in:
		| @@ -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---------------------------------------------------- */ | ||||
| 	/* -------------------------------------------------------------------------------------------------------------- */ | ||||
| ?> | ||||
		Reference in New Issue
	
	Block a user