| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |  * Project:     Smarty: the PHP compiling template engine | 
					
						
							|  |  |  |  * File:        Smarty.class.php | 
					
						
							| 
									
										
										
										
											2015-02-11 06:57:17 +01:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |  * This library is free software; you can redistribute it and/or | 
					
						
							|  |  |  |  * modify it under the terms of the GNU Lesser General Public | 
					
						
							|  |  |  |  * License as published by the Free Software Foundation; either | 
					
						
							|  |  |  |  * version 2.1 of the License, or (at your option) any later version. | 
					
						
							| 
									
										
										
										
											2015-02-11 06:57:17 +01:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |  * This library is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
					
						
							|  |  |  |  * Lesser General Public License for more details. | 
					
						
							| 
									
										
										
										
											2015-02-11 06:57:17 +01:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |  * You should have received a copy of the GNU Lesser General Public | 
					
						
							|  |  |  |  * License along with this library; if not, write to the Free Software | 
					
						
							|  |  |  |  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | 
					
						
							|  |  |  |  * For questions, help, comments, discussion, etc., please join the | 
					
						
							|  |  |  |  * Smarty mailing list. Send a blank e-mail to | 
					
						
							|  |  |  |  * smarty-discussion-subscribe@googlegroups.com | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |  * @link      http://www.smarty.net/ | 
					
						
							| 
									
										
										
										
											2016-08-07 20:46:49 +02:00
										 |  |  |  * @copyright 2016 New Digital Group, Inc. | 
					
						
							|  |  |  |  * @copyright 2016 Uwe Tews | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |  * @author    Monte Ohrt <monte at ohrt dot com> | 
					
						
							|  |  |  |  * @author    Uwe Tews | 
					
						
							|  |  |  |  * @author    Rodney Rehm | 
					
						
							|  |  |  |  * @package   Smarty | 
					
						
							| 
									
										
										
										
											2016-08-07 20:57:11 +02:00
										 |  |  |  * @version   3.1.31-dev | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |  * set SMARTY_DIR to absolute path to Smarty library files. | 
					
						
							|  |  |  |  * Sets SMARTY_DIR only if user application has not already defined it. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | if (!defined('SMARTY_DIR')) { | 
					
						
							| 
									
										
										
										
											2016-08-23 08:03:39 +02:00
										 |  |  |     define('SMARTY_DIR', dirname(__FILE__) . DIRECTORY_SEPARATOR); | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2009-04-06 02:53:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-30 18:10:01 +00:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |  * set SMARTY_SYSPLUGINS_DIR to absolute path to Smarty internal plugins. | 
					
						
							|  |  |  |  * Sets SMARTY_SYSPLUGINS_DIR only if user application has not already defined it. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2009-08-30 18:10:01 +00:00
										 |  |  | if (!defined('SMARTY_SYSPLUGINS_DIR')) { | 
					
						
							| 
									
										
										
										
											2016-08-23 08:03:39 +02:00
										 |  |  |     define('SMARTY_SYSPLUGINS_DIR', SMARTY_DIR . 'sysplugins' . DIRECTORY_SEPARATOR); | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2009-09-19 13:22:32 +00:00
										 |  |  | if (!defined('SMARTY_PLUGINS_DIR')) { | 
					
						
							| 
									
										
										
										
											2016-08-23 08:03:39 +02:00
										 |  |  |     define('SMARTY_PLUGINS_DIR', SMARTY_DIR . 'plugins' . DIRECTORY_SEPARATOR); | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  | if (!defined('SMARTY_MBSTRING')) { | 
					
						
							| 
									
										
										
										
											2014-12-31 06:07:17 +01:00
										 |  |  |     define('SMARTY_MBSTRING', function_exists('mb_get_info')); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2009-09-19 13:22:32 +00:00
										 |  |  | if (!defined('SMARTY_RESOURCE_CHAR_SET')) { | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     // UTF-8 can only be done properly when mbstring is available!
 | 
					
						
							| 
									
										
										
										
											2011-12-18 18:48:07 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * @deprecated in favor of Smarty::$_CHARSET | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     define('SMARTY_RESOURCE_CHAR_SET', SMARTY_MBSTRING ? 'UTF-8' : 'ISO-8859-1'); | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2009-11-17 17:46:03 +00:00
										 |  |  | if (!defined('SMARTY_RESOURCE_DATE_FORMAT')) { | 
					
						
							| 
									
										
										
										
											2011-12-18 18:48:07 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * @deprecated in favor of Smarty::$_DATE_FORMAT | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2014-04-18 08:09:38 +00:00
										 |  |  |     define('SMARTY_RESOURCE_DATE_FORMAT', '%b %e, %Y'); | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2009-11-27 20:46:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2015-05-28 22:31:35 +02:00
										 |  |  |  * Try loading the Smarty_Internal_Data class | 
					
						
							| 
									
										
										
										
											2014-11-13 19:42:01 +01:00
										 |  |  |  * If we fail we must load Smarty's autoloader. | 
					
						
							|  |  |  |  * Otherwise we may have a global autoloader like Composer | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2015-01-02 09:12:01 +01:00
										 |  |  | if (!class_exists('Smarty_Autoloader', false)) { | 
					
						
							|  |  |  |     if (!class_exists('Smarty_Internal_Data', true)) { | 
					
						
							| 
									
										
										
										
											2015-10-13 10:32:04 +03:00
										 |  |  |         require_once dirname(__FILE__) . '/Autoloader.php'; | 
					
						
							| 
									
										
										
										
											2015-01-02 09:12:01 +01:00
										 |  |  |         Smarty_Autoloader::registerBC(); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2009-11-06 16:51:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |  * Load always needed external class files | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2015-10-29 22:17:35 +01:00
										 |  |  | if (!class_exists('Smarty_Internal_Data', false)) { | 
					
						
							|  |  |  |     require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_data.php'; | 
					
						
							| 
									
										
										
										
											2015-01-02 09:12:01 +01:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2015-10-29 22:17:35 +01:00
										 |  |  | require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_extension_handler.php'; | 
					
						
							|  |  |  | require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_templatebase.php'; | 
					
						
							|  |  |  | require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_template.php'; | 
					
						
							|  |  |  | require_once SMARTY_SYSPLUGINS_DIR . 'smarty_resource.php'; | 
					
						
							|  |  |  | require_once SMARTY_SYSPLUGINS_DIR . 'smarty_variable.php'; | 
					
						
							|  |  |  | require_once SMARTY_SYSPLUGINS_DIR . 'smarty_template_source.php'; | 
					
						
							|  |  |  | require_once SMARTY_SYSPLUGINS_DIR . 'smarty_template_resource_base.php'; | 
					
						
							| 
									
										
										
										
											2014-11-13 19:42:01 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |  * This is the main Smarty class | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |  * @package Smarty | 
					
						
							| 
									
										
										
										
											2015-08-17 21:52:32 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2015-12-27 07:18:35 +01:00
										 |  |  |  * The following methods will be dynamically loaded by the extension handler when they are called. | 
					
						
							|  |  |  |  * They are located in a corresponding Smarty_Internal_Method_xxxx class | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2015-08-17 21:52:32 +02:00
										 |  |  |  * @method int clearAllCache(int $exp_time = null, string $type = null) | 
					
						
							|  |  |  |  * @method int clearCache(string $template_name, string $cache_id = null, string $compile_id = null, int $exp_time = null, string $type = null) | 
					
						
							| 
									
										
										
										
											2016-07-14 20:32:41 +02:00
										 |  |  |  * @method int compileAllTemplates(string $extension = '.tpl', bool $force_compile = false, int $time_limit = 0, int $max_errors = null) | 
					
						
							|  |  |  |  * @method int compileAllConfig(string $extension = '.conf', bool $force_compile = false, int $time_limit = 0, int $max_errors = null) | 
					
						
							| 
									
										
										
										
											2015-12-27 07:18:35 +01:00
										 |  |  |  * @method int clearCompiledTemplate($resource_name = null, $compile_id = null, $exp_time = null) | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2013-07-14 22:15:45 +00:00
										 |  |  | class Smarty extends Smarty_Internal_TemplateBase | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /**#@+
 | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * constant definitions | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * smarty version | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-09-20 16:06:01 +02:00
										 |  |  |     const SMARTY_VERSION = '3.1.31-dev/29'; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * define variable scopes | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-02-09 23:27:07 +01:00
										 |  |  |     const SCOPE_LOCAL = 1; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-29 22:17:35 +01:00
										 |  |  |     const SCOPE_PARENT = 2; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const SCOPE_TPL_ROOT = 4; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const SCOPE_ROOT = 8; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-09 23:27:07 +01:00
										 |  |  |     const SCOPE_SMARTY = 16; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-29 22:17:35 +01:00
										 |  |  |     const SCOPE_GLOBAL = 32; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * define caching modes | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     const CACHING_OFF = 0; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     const CACHING_LIFETIME_CURRENT = 1; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     const CACHING_LIFETIME_SAVED = 2; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-17 13:30:49 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |      * define constant for clearing cache files be saved expiration dates | 
					
						
							| 
									
										
										
										
											2013-06-17 13:30:49 +00:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |     const CLEAR_EXPIRED = - 1; | 
					
						
							| 
									
										
										
										
											2013-06-17 13:30:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * define compile check modes | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     const COMPILECHECK_OFF = 0; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     const COMPILECHECK_ON = 1; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     const COMPILECHECK_CACHEMISS = 2; | 
					
						
							| 
									
										
										
										
											2015-05-07 04:36:49 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * define debug modes | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     const DEBUG_OFF = 0; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-07 04:36:49 +02:00
										 |  |  |     const DEBUG_ON = 1; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-07 04:36:49 +02:00
										 |  |  |     const DEBUG_INDIVIDUAL = 2; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * modes for handling of "<?php ... ?>" tags in templates. | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     const PHP_PASSTHRU = 0; //-> print tags as plain text
 | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     const PHP_QUOTE = 1; //-> escape tags as entities
 | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     const PHP_REMOVE = 2; //-> escape tags as entities
 | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     const PHP_ALLOW = 3; //-> escape tags as entities
 | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * filter types | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     const FILTER_POST = 'post'; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     const FILTER_PRE = 'pre'; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     const FILTER_OUTPUT = 'output'; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     const FILTER_VARIABLE = 'variable'; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * plugin types | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     const PLUGIN_FUNCTION = 'function'; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     const PLUGIN_BLOCK = 'block'; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     const PLUGIN_COMPILER = 'compiler'; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     const PLUGIN_MODIFIER = 'modifier'; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     const PLUGIN_MODIFIERCOMPILER = 'modifiercompiler'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-10 21:57:06 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Resource caching modes | 
					
						
							| 
									
										
										
										
											2016-01-01 18:28:27 +01:00
										 |  |  |      * (not used since 3.1.30) | 
					
						
							| 
									
										
										
										
											2015-08-10 21:57:06 +02:00
										 |  |  |      */ | 
					
						
							|  |  |  |     const RESOURCE_CACHE_OFF = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const RESOURCE_CACHE_AUTOMATIC = 1; // cache template objects by rules
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const RESOURCE_CACHE_TEMPLATE = 2; // cache all template objects
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-01 02:27:22 +02:00
										 |  |  |     const RESOURCE_CACHE_ON = 4;    // cache source and compiled resources
 | 
					
						
							| 
									
										
										
										
											2015-08-10 21:57:06 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /**#@-*/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * assigned global tpl vars | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2013-07-15 18:18:28 +00:00
										 |  |  |     public static $global_tpl_vars = array(); | 
					
						
							| 
									
										
										
										
											2011-11-18 15:32:17 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-21 22:02:54 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |      * error handler returned by set_error_handler() in Smarty::muteExpectedErrors() | 
					
						
							| 
									
										
										
										
											2011-09-21 22:02:54 +00:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2013-07-15 18:18:28 +00:00
										 |  |  |     public static $_previous_error_handler = null; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-24 15:45:30 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * contains directories outside of SMARTY_DIR that are to be muted by muteExpectedErrors() | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |     public static $_muted_directories = array(); | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-18 18:48:07 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Flag denoting if Multibyte String functions are available | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2013-07-15 18:18:28 +00:00
										 |  |  |     public static $_MBSTRING = SMARTY_MBSTRING; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-18 18:48:07 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * The character set to adhere to (e.g. "UTF-8") | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2013-07-15 18:18:28 +00:00
										 |  |  |     public static $_CHARSET = SMARTY_RESOURCE_CHAR_SET; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-18 18:48:07 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * The date format to be used internally | 
					
						
							|  |  |  |      * (accepts date() and strftime()) | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2013-07-15 18:18:28 +00:00
										 |  |  |     public static $_DATE_FORMAT = SMARTY_RESOURCE_DATE_FORMAT; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-18 18:48:07 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Flag denoting if PCRE should run in UTF-8 mode | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2013-07-15 18:18:28 +00:00
										 |  |  |     public static $_UTF8_MODIFIER = 'u'; | 
					
						
							| 
									
										
										
										
											2012-09-11 16:23:30 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-24 15:13:19 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Flag denoting if operating system is windows | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2013-07-15 18:18:28 +00:00
										 |  |  |     public static $_IS_WINDOWS = false; | 
					
						
							| 
									
										
										
										
											2012-09-11 16:23:30 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /**#@+
 | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * variables | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2015-10-29 22:17:35 +01:00
										 |  |  |      * auto literal on delimiters with whitespace | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $auto_literal = true; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * display error on not assigned variables | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $error_unassigned = false; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2015-10-29 22:17:35 +01:00
										 |  |  |      * look up relative file path in include_path | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public $use_include_path = false; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * template directory | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-12-22 01:21:35 +01:00
										 |  |  |     protected $template_dir = array('./templates/'); | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * flags for normalized template directory entries | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     protected $_processedTemplateDir = array(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * flag if template_dir is normalized | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var bool | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public $_templateDirNormalized = false; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-03 19:02:44 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * joined template directory string used in cache keys | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-08-17 21:56:55 +02:00
										 |  |  |     public $_joined_template_dir = null; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * config directory | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     protected $config_dir = array('./configs/'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * flags for normalized template directory entries | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     protected $_processedConfigDir = array(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * flag if config_dir is normalized | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var bool | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public $_configDirNormalized = false; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * joined config directory string used in cache keys | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-08-17 21:56:55 +02:00
										 |  |  |     public $_joined_config_dir = null; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-13 09:50:55 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * default template handler | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var callable | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $default_template_handler_func = null; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * default config handler | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var callable | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public $default_config_handler_func = null; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * default plugin handler | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var callable | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public $default_plugin_handler_func = null; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * compile directory | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-12-22 01:21:35 +01:00
										 |  |  |     protected $compile_dir = './templates_c/'; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * flag if template_dir is normalized | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var bool | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public $_compileDirNormalized = false; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * plugins directory | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |     protected $plugins_dir = array(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * flag if plugins_dir is normalized | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var bool | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public $_pluginsDirNormalized = false; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * cache directory | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-12-22 01:21:35 +01:00
										 |  |  |     protected $cache_dir = './cache/'; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |      * flag if template_dir is normalized | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |      * @var bool | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |     public $_cacheDirNormalized = false; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * force template compiling? | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $force_compile = false; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * check template for modifications? | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $compile_check = true; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * use sub dirs for compiled/cached files? | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $use_sub_dirs = false; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-21 18:40:16 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * allow ambiguous resources (that are made unique by the resource handler) | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-10-21 18:40:16 +00:00
										 |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public $allow_ambiguous_resources = false; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * merge compiled includes | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $merge_compiled_includes = false; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * force cache file creation | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $force_cache = false; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * template left-delimiter | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     public $left_delimiter = "{"; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * template right-delimiter | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $right_delimiter = "}"; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /**#@+
 | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * security | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * class name | 
					
						
							|  |  |  |      * This should be instance of Smarty_Security. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var string | 
					
						
							|  |  |  |      * @see Smarty_Security | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2009-11-03 20:38:38 +00:00
										 |  |  |     public $security_class = 'Smarty_Security'; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * implementation of security class | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var Smarty_Security | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2010-11-11 21:34:36 +00:00
										 |  |  |     public $security_policy = null; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * controls handling of PHP-blocks | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var integer | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2010-11-11 21:34:36 +00:00
										 |  |  |     public $php_handling = self::PHP_PASSTHRU; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * controls if the php template file resource is allowed | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var bool | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2009-09-30 22:03:41 +00:00
										 |  |  |     public $allow_php_templates = false; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /**#@-*/ | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * debug mode | 
					
						
							|  |  |  |      * Setting this to true enables the debug-console. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     public $debugging = false; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * This determines if debugging is enable-able from the browser. | 
					
						
							|  |  |  |      * <ul> | 
					
						
							|  |  |  |      *  <li>NONE => no debugging control allowed</li> | 
					
						
							|  |  |  |      *  <li>URL => enable debugging when SMARTY_DEBUG is found in the URL.</li> | 
					
						
							|  |  |  |      * </ul> | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2010-04-28 20:30:27 +00:00
										 |  |  |     public $debugging_ctrl = 'NONE'; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Name of debugging URL-param. | 
					
						
							|  |  |  |      * Only used when $debugging_ctrl is set to 'URL'. | 
					
						
							|  |  |  |      * The name of the URL-parameter that activates debugging. | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2015-02-11 06:57:17 +01:00
										 |  |  |      * @var string | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     public $smarty_debug_id = 'SMARTY_DEBUG'; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Path of debug template. | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $debug_tpl = null; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * When set, smarty uses this value as error_reporting-level. | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var int | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $error_reporting = null; | 
					
						
							| 
									
										
										
										
											2014-12-31 15:44:08 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /**#@+
 | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * config var settings | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Controls whether variables with the same name overwrite each other. | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public $config_overwrite = true; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Controls whether config values of on/true/yes and off/false/no get converted to boolean. | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public $config_booleanize = true; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Controls whether hidden config sections/vars are read from the file. | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public $config_read_hidden = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /**#@-*/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /**#@+
 | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * resource locking | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * locking concurrent compiles | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public $compile_locking = true; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |      * Controls whether cache resources should use locking mechanism | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public $cache_locking = false; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * seconds to wait for acquiring a lock before ignoring the write lock | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |      * @var float | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public $locking_timeout = 10; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /**#@-*/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * resource type used if none given | 
					
						
							|  |  |  |      * Must be an valid key of $registered_resources. | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $default_resource_type = 'file'; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * caching type | 
					
						
							|  |  |  |      * Must be an element of $cache_resource_types. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $caching_type = 'file'; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * config type | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $default_config_type = 'file'; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * check If-Modified-Since headers | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $cache_modified_check = false; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * registered plugins | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $registered_plugins = array(); | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * registered objects | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $registered_objects = array(); | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * registered classes | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $registered_classes = array(); | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * registered filters | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $registered_filters = array(); | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * registered resources | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $registered_resources = array(); | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-15 10:46:03 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * registered cache resources | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public $registered_cache_resources = array(); | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-15 10:46:03 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * autoload filter | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $autoload_filters = array(); | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * default modifier | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $default_modifiers = array(); | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * autoescape variable output | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public $escape_html = false; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * start time for execution time calculation | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var int | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $start_time = 0; | 
					
						
							| 
									
										
										
										
											2015-08-29 14:37:59 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * required by the compiler for BC | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public $_current_file = null; | 
					
						
							| 
									
										
										
										
											2015-05-18 04:26:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * internal flag to enable parser debugging | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var bool | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public $_parserdebug = false; | 
					
						
							| 
									
										
										
										
											2015-01-01 22:27:45 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-17 21:52:32 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * This object type (Smarty = 1, template = 2, data = 4) | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var int | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public $_objType = 1; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-19 00:58:47 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Debug object | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var Smarty_Internal_Debug | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public $_debug = null; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-23 08:03:39 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Directory separator | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public $ds = DIRECTORY_SEPARATOR; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-10 21:57:06 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * removed properties | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2015-12-16 22:32:07 +01:00
										 |  |  |      * @var string[] | 
					
						
							| 
									
										
										
										
											2015-08-10 21:57:06 +02:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-01-01 18:28:27 +01:00
										 |  |  |     private $obsoleteProperties = array('resource_caching', 'template_resource_caching', 'direct_access_security', | 
					
						
							|  |  |  |                                         '_dir_perms', '_file_perms', 'plugin_search_order', | 
					
						
							|  |  |  |                                         'inheritance_merge_compiled_includes', 'resource_cache_mode',); | 
					
						
							| 
									
										
										
										
											2015-08-10 21:57:06 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-16 22:32:07 +01:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2015-12-22 23:49:25 +01:00
										 |  |  |      * List of private properties which will call getter/setter on a direct access | 
					
						
							| 
									
										
										
										
											2015-12-16 22:32:07 +01:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2015-12-22 23:49:25 +01:00
										 |  |  |      * @var string[] | 
					
						
							| 
									
										
										
										
											2015-12-16 22:32:07 +01:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-12-22 23:49:25 +01:00
										 |  |  |     private $accessMap = array('template_dir' => 'TemplateDir', 'config_dir' => 'ConfigDir', | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |                                'plugins_dir' => 'PluginsDir', 'compile_dir' => 'CompileDir', | 
					
						
							|  |  |  |                                'cache_dir' => 'CacheDir',); | 
					
						
							| 
									
										
										
										
											2015-08-17 21:52:32 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /**#@-*/ | 
					
						
							| 
									
										
										
										
											2009-10-31 00:44:58 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Initialize new Smarty object | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |     public function __construct() | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-10-24 05:02:24 +02:00
										 |  |  |         parent::__construct(); | 
					
						
							| 
									
										
										
										
											2009-04-10 15:52:59 +00:00
										 |  |  |         if (is_callable('mb_internal_encoding')) { | 
					
						
							| 
									
										
										
										
											2011-12-18 18:20:09 +00:00
										 |  |  |             mb_internal_encoding(Smarty::$_CHARSET); | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |         } | 
					
						
							|  |  |  |         $this->start_time = microtime(true); | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-21 17:19:39 +01:00
										 |  |  |         if (isset($_SERVER[ 'SCRIPT_NAME' ])) { | 
					
						
							|  |  |  |             Smarty::$global_tpl_vars[ 'SCRIPT_NAME' ] = new Smarty_Variable($_SERVER[ 'SCRIPT_NAME' ]); | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2014-11-09 10:15:16 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         // Check if we're running on windows
 | 
					
						
							|  |  |  |         Smarty::$_IS_WINDOWS = strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'; | 
					
						
							|  |  |  |         // let PCRE (preg_*) treat strings as ISO-8859-1 if we're not dealing with UTF-8
 | 
					
						
							|  |  |  |         if (Smarty::$_CHARSET !== 'UTF-8') { | 
					
						
							|  |  |  |             Smarty::$_UTF8_MODIFIER = ''; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2011-11-18 15:32:17 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-30 17:05:37 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Check if a template resource exists | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * @param  string $resource_name template name | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @return boolean status | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function templateExists($resource_name) | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-08-23 05:15:05 +02:00
										 |  |  |         // create source object
 | 
					
						
							|  |  |  |         $source = Smarty_Template_Source::load(null, $this, $resource_name); | 
					
						
							|  |  |  |         return $source->exists; | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-11-11 21:34:36 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Loads security class and enables security | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2013-07-14 22:15:45 +00:00
										 |  |  |      * @param  string|Smarty_Security $security_class if a string is used, it must be class-name | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2013-07-14 22:15:45 +00:00
										 |  |  |      * @return Smarty                 current Smarty instance for chaining | 
					
						
							|  |  |  |      * @throws SmartyException        when an invalid class name is provided | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2010-11-11 21:34:36 +00:00
										 |  |  |     public function enableSecurity($security_class = null) | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-06-28 01:38:52 +02:00
										 |  |  |         Smarty_Security::enableSecurity($this, $security_class); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         return $this; | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Disable security | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @return Smarty current Smarty instance for chaining | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2010-11-11 21:34:36 +00:00
										 |  |  |     public function disableSecurity() | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         $this->security_policy = null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $this; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Set template directory | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2013-07-14 22:15:45 +00:00
										 |  |  |      * @param  string|array $template_dir directory(s) of template sources | 
					
						
							| 
									
										
										
										
											2015-06-29 02:41:42 +02:00
										 |  |  |      * @param bool          $isConfig     true for config_dir | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |      * @return \Smarty current Smarty instance for chaining | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |     public function setTemplateDir($template_dir, $isConfig = false) | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |         if ($isConfig) { | 
					
						
							|  |  |  |             $this->config_dir = array(); | 
					
						
							|  |  |  |             $this->_processedConfigDir = array(); | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $this->template_dir = array(); | 
					
						
							|  |  |  |             $this->_processedTemplateDir = array(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         $this->addTemplateDir($template_dir, null, $isConfig); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         return $this; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Add template directory(s) | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * @param  string|array $template_dir directory(s) of template sources | 
					
						
							|  |  |  |      * @param  string       $key          of the array element to assign the template dir to | 
					
						
							| 
									
										
										
										
											2015-06-29 02:41:42 +02:00
										 |  |  |      * @param bool          $isConfig     true for config_dir | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2013-07-14 22:15:45 +00:00
										 |  |  |      * @return Smarty          current Smarty instance for chaining | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |     public function addTemplateDir($template_dir, $key = null, $isConfig = false) | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |         if ($isConfig) { | 
					
						
							|  |  |  |             $processed = &$this->_processedConfigDir; | 
					
						
							|  |  |  |             $dir = &$this->config_dir; | 
					
						
							|  |  |  |             $this->_configDirNormalized = false; | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $processed = &$this->_processedTemplateDir; | 
					
						
							|  |  |  |             $dir = &$this->template_dir; | 
					
						
							|  |  |  |             $this->_templateDirNormalized = false; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         if (is_array($template_dir)) { | 
					
						
							|  |  |  |             foreach ($template_dir as $k => $v) { | 
					
						
							|  |  |  |                 if (is_int($k)) { | 
					
						
							|  |  |  |                     // indexes are not merged but appended
 | 
					
						
							|  |  |  |                     $dir[] = $v; | 
					
						
							|  |  |  |                 } else { | 
					
						
							|  |  |  |                     // string indexes are overridden
 | 
					
						
							|  |  |  |                     $dir[ $k ] = $v; | 
					
						
							|  |  |  |                     unset($processed[ $key ]); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             if ($key !== null) { | 
					
						
							|  |  |  |                 // override directory at specified index
 | 
					
						
							|  |  |  |                 $dir[ $key ] = $template_dir; | 
					
						
							|  |  |  |                 unset($processed[ $key ]); | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 // append new directory
 | 
					
						
							|  |  |  |                 $dir[] = $template_dir; | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         return $this; | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-11-11 21:34:36 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Get template directories | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2015-06-29 02:41:42 +02:00
										 |  |  |      * @param mixed $index    index of directory to get, null to get all | 
					
						
							|  |  |  |      * @param bool  $isConfig true for config_dir | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |      * @return array list of template directories, or directory of $index | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |     public function getTemplateDir($index = null, $isConfig = false) | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |         if ($isConfig) { | 
					
						
							|  |  |  |             $dir = &$this->config_dir; | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $dir = &$this->template_dir; | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |         if ($isConfig ? !$this->_configDirNormalized : !$this->_templateDirNormalized) { | 
					
						
							|  |  |  |             $this->_nomalizeTemplateConfig($isConfig); | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         if ($index !== null) { | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |             return isset($dir[ $index ]) ? $dir[ $index ] : null; | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |         return $dir; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Set config directory | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * @param $config_dir | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2013-07-14 22:15:45 +00:00
										 |  |  |      * @return Smarty       current Smarty instance for chaining | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function setConfigDir($config_dir) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |         return $this->setTemplateDir($config_dir, true); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Add config directory(s) | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2014-11-01 22:42:34 +01:00
										 |  |  |      * @param string|array $config_dir directory(s) of config sources | 
					
						
							|  |  |  |      * @param mixed        $key        key of the array element to assign the config dir to | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @return Smarty current Smarty instance for chaining | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |     public function addConfigDir($config_dir, $key = null) | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |         return $this->addTemplateDir($config_dir, $key, true); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Get config directory | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * @param mixed $index index of directory to get, null to get all | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |      * @return array configuration directory | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |     public function getConfigDir($index = null) | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |         return $this->getTemplateDir($index, true); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Set plugins directory | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2013-07-14 22:15:45 +00:00
										 |  |  |      * @param  string|array $plugins_dir directory(s) of plugins | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2013-07-14 22:15:45 +00:00
										 |  |  |      * @return Smarty       current Smarty instance for chaining | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function setPluginsDir($plugins_dir) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |         $this->plugins_dir = (array) $plugins_dir; | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |         $this->_pluginsDirNormalized = false; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         return $this; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Adds directory of plugin files | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |      * @param null|array $plugins_dir | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @return Smarty current Smarty instance for chaining | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function addPluginsDir($plugins_dir) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |         if (empty($this->plugins_dir)) { | 
					
						
							|  |  |  |             $this->plugins_dir[] = SMARTY_PLUGINS_DIR; | 
					
						
							| 
									
										
										
										
											2015-06-14 03:30:31 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |         $this->plugins_dir = array_merge($this->plugins_dir, (array) $plugins_dir); | 
					
						
							|  |  |  |         $this->_pluginsDirNormalized = false; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         return $this; | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Get plugin directories | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return array list of plugin directories | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function getPluginsDir() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |         if (empty($this->plugins_dir)) { | 
					
						
							|  |  |  |             $this->plugins_dir[] = SMARTY_PLUGINS_DIR; | 
					
						
							|  |  |  |             $this->_pluginsDirNormalized = false; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         if (!$this->_pluginsDirNormalized) { | 
					
						
							|  |  |  |             if (!is_array($this->plugins_dir)) { | 
					
						
							|  |  |  |                 $this->plugins_dir = (array) $this->plugins_dir; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             foreach ($this->plugins_dir as $k => $v) { | 
					
						
							| 
									
										
										
										
											2016-08-23 08:03:39 +02:00
										 |  |  |                 $this->plugins_dir[ $k ] = $this->_realpath(rtrim($v, "/\\") . $this->ds, true); | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |             } | 
					
						
							| 
									
										
										
										
											2015-12-21 17:19:39 +01:00
										 |  |  |             $this->_cache[ 'plugin_files' ] = array(); | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |             $this->_pluginsDirNormalized = true; | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |         } | 
					
						
							|  |  |  |         return $this->plugins_dir; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-11-11 21:34:36 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-27 20:46:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2013-07-14 22:15:45 +00:00
										 |  |  |      * @param  string $compile_dir directory to store compiled templates in | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @return Smarty current Smarty instance for chaining | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function setCompileDir($compile_dir) | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-12-22 23:49:25 +01:00
										 |  |  |         $this->_normalizeDir('compile_dir', $compile_dir); | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |         $this->_compileDirNormalized = true; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         return $this; | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Get compiled directory | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return string path to compiled templates | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function getCompileDir() | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |         if (!$this->_compileDirNormalized) { | 
					
						
							| 
									
										
										
										
											2015-12-22 23:49:25 +01:00
										 |  |  |             $this->_normalizeDir('compile_dir', $this->compile_dir); | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |             $this->_compileDirNormalized = true; | 
					
						
							| 
									
										
										
										
											2016-09-19 14:59:49 +02:00
										 |  |  |             if ($this->_isNewRelease($this->compile_dir)) { | 
					
						
							|  |  |  |                 $this->clearCompiledTemplate(); | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         return $this->compile_dir; | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Set cache directory | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2013-07-14 22:15:45 +00:00
										 |  |  |      * @param  string $cache_dir directory to store cached templates in | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @return Smarty current Smarty instance for chaining | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function setCacheDir($cache_dir) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-12-22 23:49:25 +01:00
										 |  |  |         $this->_normalizeDir('cache_dir', $cache_dir); | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |         $this->_cacheDirNormalized = true; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         return $this; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Get cache directory | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return string path of cache directory | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function getCacheDir() | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |         if (!$this->_cacheDirNormalized) { | 
					
						
							| 
									
										
										
										
											2015-12-22 23:49:25 +01:00
										 |  |  |             $this->_normalizeDir('cache_dir', $this->cache_dir); | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |             $this->_cacheDirNormalized = true; | 
					
						
							| 
									
										
										
										
											2016-09-19 14:59:49 +02:00
										 |  |  |             if ($this->_isNewRelease($this->cache_dir)) { | 
					
						
							|  |  |  |                 $this->clearAllCache(); | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         return $this->cache_dir; | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-22 23:49:25 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Normalize and set directory string | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string $dirName cache_dir or compile_dir | 
					
						
							|  |  |  |      * @param string $dir     filepath of folder | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     private function _normalizeDir($dirName, $dir) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-08-23 08:03:39 +02:00
										 |  |  |         $this->{$dirName} = $this->_realpath(rtrim($dir, "/\\") . $this->ds, true); | 
					
						
							| 
									
										
										
										
											2015-12-22 23:49:25 +01:00
										 |  |  |         if (!isset(Smarty::$_muted_directories[ $this->{$dirName} ])) { | 
					
						
							|  |  |  |             Smarty::$_muted_directories[ $this->{$dirName} ] = null; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-02 10:22:36 +01:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |      * Normalize template_dir or config_dir | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param bool $isConfig true for config_dir | 
					
						
							| 
									
										
										
										
											2015-02-11 06:57:17 +01:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2015-01-02 10:22:36 +01:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |     private function _nomalizeTemplateConfig($isConfig) | 
					
						
							| 
									
										
										
										
											2015-01-02 10:22:36 +01:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |         if ($isConfig) { | 
					
						
							|  |  |  |             $processed = &$this->_processedConfigDir; | 
					
						
							|  |  |  |             $dir = &$this->config_dir; | 
					
						
							| 
									
										
										
										
											2015-01-02 10:22:36 +01:00
										 |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |             $processed = &$this->_processedTemplateDir; | 
					
						
							|  |  |  |             $dir = &$this->template_dir; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         if (!is_array($dir)) { | 
					
						
							|  |  |  |             $dir = (array) $dir; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         foreach ($dir as $k => $v) { | 
					
						
							|  |  |  |             if (!isset($processed[ $k ])) { | 
					
						
							| 
									
										
										
										
											2016-08-23 08:03:39 +02:00
										 |  |  |                 $dir[ $k ] = $v = $this->_realpath(rtrim($v, "/\\") . $this->ds, true); | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |                 $processed[ $k ] = true; | 
					
						
							| 
									
										
										
										
											2015-01-02 10:22:36 +01:00
										 |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |         $isConfig ? $this->_configDirNormalized = true : $this->_templateDirNormalized = true; | 
					
						
							|  |  |  |         $isConfig ? $this->_joined_config_dir = join('#', $this->config_dir) : | 
					
						
							|  |  |  |             $this->_joined_template_dir = join('#', $this->template_dir); | 
					
						
							| 
									
										
										
										
											2015-01-02 10:22:36 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-11-13 04:10:52 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * creates a template object | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2013-07-14 22:15:45 +00:00
										 |  |  |      * @param  string  $template   the resource handle of the template file | 
					
						
							|  |  |  |      * @param  mixed   $cache_id   cache id to be used with this template | 
					
						
							|  |  |  |      * @param  mixed   $compile_id compile id to be used with this template | 
					
						
							|  |  |  |      * @param  object  $parent     next higher level of Smarty variables | 
					
						
							|  |  |  |      * @param  boolean $do_clone   flag is Smarty object shall be cloned | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2013-07-14 22:15:45 +00:00
										 |  |  |      * @return object  template object | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function createTemplate($template, $cache_id = null, $compile_id = null, $parent = null, $do_clone = true) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2014-04-19 11:42:11 +00:00
										 |  |  |         if ($cache_id !== null && (is_object($cache_id) || is_array($cache_id))) { | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |             $parent = $cache_id; | 
					
						
							|  |  |  |             $cache_id = null; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2014-04-19 11:42:11 +00:00
										 |  |  |         if ($parent !== null && is_array($parent)) { | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |             $data = $parent; | 
					
						
							|  |  |  |             $parent = null; | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $data = null; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2016-09-15 06:43:36 +02:00
										 |  |  |         if (!$this->_templateDirNormalized) { | 
					
						
							|  |  |  |             $this->_nomalizeTemplateConfig(false); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2016-03-01 00:54:33 +01:00
										 |  |  |         $_templateId = $this->_getTemplateId($template, $cache_id, $compile_id); | 
					
						
							|  |  |  |         $tpl = null; | 
					
						
							|  |  |  |         if ($this->caching && isset($this->_cache[ 'isCached' ][ $_templateId ])) { | 
					
						
							| 
									
										
										
										
											2015-12-21 17:19:39 +01:00
										 |  |  |             $tpl = $do_clone ? clone $this->_cache[ 'isCached' ][ $_templateId ] : | 
					
						
							|  |  |  |                 $this->_cache[ 'isCached' ][ $_templateId ]; | 
					
						
							| 
									
										
										
										
											2016-03-04 17:54:10 +01:00
										 |  |  |             $tpl->tpl_vars = $tpl->config_vars = array(); | 
					
						
							| 
									
										
										
										
											2016-03-01 00:54:33 +01:00
										 |  |  |         } else if (!$do_clone && isset($this->_cache[ 'tplObjects' ][ $_templateId ])) { | 
					
						
							|  |  |  |             $tpl = clone $this->_cache[ 'tplObjects' ][ $_templateId ]; | 
					
						
							| 
									
										
										
										
											2015-08-23 01:25:57 +02:00
										 |  |  |         } else { | 
					
						
							|  |  |  |             /* @var Smarty_Internal_Template $tpl */ | 
					
						
							| 
									
										
										
										
											2016-03-01 00:54:33 +01:00
										 |  |  |             $tpl = new $this->template_class($template, $this, null, $cache_id, $compile_id, null, null); | 
					
						
							|  |  |  |             $tpl->templateId = $_templateId; | 
					
						
							| 
									
										
										
										
											2015-08-23 01:25:57 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2015-08-06 19:25:00 +02:00
										 |  |  |         if ($do_clone) { | 
					
						
							|  |  |  |             $tpl->smarty = clone $tpl->smarty; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2016-03-01 00:54:33 +01:00
										 |  |  |         $tpl->parent = $parent ? $parent : $this; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         // fill data if present
 | 
					
						
							|  |  |  |         if (!empty($data) && is_array($data)) { | 
					
						
							|  |  |  |             // set up variable values
 | 
					
						
							|  |  |  |             foreach ($data as $_key => $_val) { | 
					
						
							| 
									
										
										
										
											2015-12-21 17:19:39 +01:00
										 |  |  |                 $tpl->tpl_vars[ $_key ] = new Smarty_Variable($_val); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2015-12-13 10:16:10 +01:00
										 |  |  |         if ($this->debugging || $this->debugging_ctrl == 'URL') { | 
					
						
							| 
									
										
										
										
											2015-08-19 00:58:47 +02:00
										 |  |  |             $tpl->smarty->_debug = new Smarty_Internal_Debug(); | 
					
						
							| 
									
										
										
										
											2015-12-13 10:16:10 +01:00
										 |  |  |             // check URL debugging control
 | 
					
						
							|  |  |  |             if (!$this->debugging && $this->debugging_ctrl == 'URL') { | 
					
						
							|  |  |  |                 $tpl->smarty->_debug->debugUrl($tpl->smarty); | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2014-11-03 22:27:32 +01:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         return $tpl; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Takes unknown classes and loads plugin files for them | 
					
						
							|  |  |  |      * class name format: Smarty_PluginType_PluginName | 
					
						
							|  |  |  |      * plugin filename format: plugintype.pluginname.php | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2013-07-14 22:15:45 +00:00
										 |  |  |      * @param  string $plugin_name class plugin name to load | 
					
						
							|  |  |  |      * @param  bool   $check       check if already loaded | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							|  |  |  |      * @throws SmartyException | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @return string |boolean filepath of loaded file or false | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2010-11-13 04:10:52 +00:00
										 |  |  |     public function loadPlugin($plugin_name, $check = true) | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-10-24 05:02:24 +02:00
										 |  |  |         return $this->ext->loadPlugin->loadPlugin($this, $plugin_name, $check); | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-11-13 04:10:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-23 01:25:57 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Get unique template id | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2016-05-01 23:53:38 +02:00
										 |  |  |      * @param string                    $template_name | 
					
						
							|  |  |  |      * @param null|mixed                $cache_id | 
					
						
							|  |  |  |      * @param null|mixed                $compile_id | 
					
						
							|  |  |  |      * @param null                      $caching | 
					
						
							|  |  |  |      * @param \Smarty_Internal_Template $template | 
					
						
							| 
									
										
										
										
											2015-08-23 01:25:57 +02:00
										 |  |  |      * | 
					
						
							|  |  |  |      * @return string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |     public function _getTemplateId($template_name, $cache_id = null, $compile_id = null, $caching = null, | 
					
						
							|  |  |  |                                    Smarty_Internal_Template $template = null) | 
					
						
							| 
									
										
										
										
											2015-08-23 01:25:57 +02:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-02-25 02:53:55 +01:00
										 |  |  |         $template_name = (strpos($template_name, ':') === false) ? "{$this->default_resource_type}:{$template_name}" : | 
					
						
							|  |  |  |             $template_name; | 
					
						
							| 
									
										
										
										
											2015-08-23 01:25:57 +02:00
										 |  |  |         $cache_id = $cache_id === null ? $this->cache_id : $cache_id; | 
					
						
							|  |  |  |         $compile_id = $compile_id === null ? $this->compile_id : $compile_id; | 
					
						
							| 
									
										
										
										
											2015-10-24 22:43:19 +02:00
										 |  |  |         $caching = (int) ($caching === null ? $this->caching : $caching); | 
					
						
							| 
									
										
										
										
											2015-08-23 01:25:57 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-01 23:53:38 +02:00
										 |  |  |         if ((isset($template) && strpos($template_name, ':.') !== false) || $this->allow_ambiguous_resources) { | 
					
						
							| 
									
										
										
										
											2015-10-29 22:17:35 +01:00
										 |  |  |             $_templateId = | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |                 Smarty_Resource::getUniqueTemplateName((isset($template) ? $template : $this), $template_name) . | 
					
						
							|  |  |  |                 "#{$cache_id}#{$compile_id}#{$caching}"; | 
					
						
							| 
									
										
										
										
											2015-08-23 01:25:57 +02:00
										 |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2015-10-24 22:43:19 +02:00
										 |  |  |             $_templateId = $this->_joined_template_dir . "#{$template_name}#{$cache_id}#{$compile_id}#{$caching}"; | 
					
						
							| 
									
										
										
										
											2015-08-23 01:25:57 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2015-12-21 17:19:39 +01:00
										 |  |  |         if (isset($_templateId[ 150 ])) { | 
					
						
							| 
									
										
										
										
											2015-08-23 01:25:57 +02:00
										 |  |  |             $_templateId = sha1($_templateId); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         return $_templateId; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Normalize path | 
					
						
							|  |  |  |      *  - remove /./ and /../ | 
					
						
							| 
									
										
										
										
											2015-07-07 17:56:50 +02:00
										 |  |  |      *  - make it absolute if required | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2015-12-21 17:19:39 +01:00
										 |  |  |      * @param string $path      file path | 
					
						
							|  |  |  |      * @param bool   $realpath  if true - convert to absolute | 
					
						
							|  |  |  |      *                          false - convert to relative | 
					
						
							|  |  |  |      *                          null - keep as it is but remove /./ /../ | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |      * | 
					
						
							|  |  |  |      * @return string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-07-07 17:56:50 +02:00
										 |  |  |     public function _realpath($path, $realpath = null) | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-08-23 08:03:39 +02:00
										 |  |  |         $nds = $this->ds == '/' ? '\\' : '/'; | 
					
						
							|  |  |  |         // normalize $this->ds
 | 
					
						
							|  |  |  |         $path = str_replace($nds, $this->ds, $path); | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |         preg_match('%^(?<root>(?:[[:alpha:]]:[\\\\]|/|[\\\\]{2}[[:alpha:]]+|[[:print:]]{2,}:[/]{2}|[\\\\])?)(?<path>(?:[[:print:]]*))$%', | 
					
						
							|  |  |  |                    $path, $parts); | 
					
						
							|  |  |  |         $path = $parts[ 'path' ]; | 
					
						
							|  |  |  |         if ($parts[ 'root' ] == '\\') { | 
					
						
							|  |  |  |             $parts[ 'root' ] = substr(getcwd(), 0, 2) . $parts[ 'root' ]; | 
					
						
							| 
									
										
										
										
											2015-12-21 17:19:39 +01:00
										 |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |             if ($realpath !== null && !$parts[ 'root' ]) { | 
					
						
							| 
									
										
										
										
											2016-08-23 08:03:39 +02:00
										 |  |  |                 $path = getcwd() . $this->ds . $path; | 
					
						
							| 
									
										
										
										
											2015-12-21 17:19:39 +01:00
										 |  |  |             } | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2016-08-23 08:03:39 +02:00
										 |  |  |         // remove noop 'DIRECTORY_SEPARATOR DIRECTORY_SEPARATOR' and 'DIRECTORY_SEPARATOR.DIRECTORY_SEPARATOR' patterns
 | 
					
						
							|  |  |  |         $path = preg_replace('#([\\\\/]([.]?[\\\\/])+)#', $this->ds, $path); | 
					
						
							|  |  |  |         // resolve '..DIRECTORY_SEPARATOR' pattern, smallest first
 | 
					
						
							|  |  |  |         if (strpos($path, '..' . $this->ds) != false && | 
					
						
							| 
									
										
										
										
											2016-02-25 23:36:53 +01:00
										 |  |  |             preg_match_all('#(([.]?[\\\\/])*([.][.])[\\\\/]([.]?[\\\\/])*)+#', $path, $match) | 
					
						
							|  |  |  |         ) { | 
					
						
							|  |  |  |             $counts = array(); | 
					
						
							|  |  |  |             foreach ($match[ 0 ] as $m) { | 
					
						
							|  |  |  |                 $counts[] = (int) ((strlen($m) - 1) / 3); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             sort($counts); | 
					
						
							|  |  |  |             foreach ($counts as $count) { | 
					
						
							|  |  |  |                 $path = preg_replace('#(([\\\\/]([.]?[\\\\/])*[^\\\\/.]+){' . $count . | 
					
						
							|  |  |  |                                      '}[\\\\/]([.]?[\\\\/])*([.][.][\\\\/]([.]?[\\\\/])*){' . $count . '})(?=[^.])#', | 
					
						
							| 
									
										
										
										
											2016-08-23 08:03:39 +02:00
										 |  |  |                                      $this->ds, $path); | 
					
						
							| 
									
										
										
										
											2016-02-25 02:53:55 +01:00
										 |  |  |             } | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2016-02-25 02:53:55 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |         return $parts[ 'root' ] . $path; | 
					
						
							| 
									
										
										
										
											2015-06-21 13:11:52 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-27 03:28:26 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Empty template objects cache | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |     public function _clearTemplateCache() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->_cache[ 'isCached' ] = array(); | 
					
						
							|  |  |  |         $this->_cache[ 'tplObjects' ] = array(); | 
					
						
							| 
									
										
										
										
											2015-12-27 03:28:26 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-19 14:59:49 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * check if new release was installed | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string $dir compiled oder cache dir path | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return bool | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function _isNewRelease ($dir) { | 
					
						
							|  |  |  |         if (!is_file($file =  $dir. 'version.txt') || file_get_contents($file) !== Smarty::SMARTY_VERSION) { | 
					
						
							|  |  |  |             file_put_contents($file, Smarty::SMARTY_VERSION); | 
					
						
							|  |  |  |             return true; | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             return false; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-11 04:35:52 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Get Smarty object | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return Smarty | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function _getSmartyObj() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return $this; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-31 15:56:59 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * @param boolean $compile_check | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function setCompileCheck($compile_check) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->compile_check = $compile_check; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @param boolean $use_sub_dirs | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function setUseSubDirs($use_sub_dirs) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->use_sub_dirs = $use_sub_dirs; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @param int $error_reporting | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function setErrorReporting($error_reporting) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->error_reporting = $error_reporting; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-01-01 22:27:45 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-31 15:56:59 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * @param boolean $escape_html | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function setEscapeHtml($escape_html) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->escape_html = $escape_html; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @param boolean $auto_literal | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function setAutoLiteral($auto_literal) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->auto_literal = $auto_literal; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-15 16:58:42 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * @param boolean $force_compile | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function setForceCompile($force_compile) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->force_compile = $force_compile; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-31 15:56:59 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * @param boolean $merge_compiled_includes | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function setMergeCompiledIncludes($merge_compiled_includes) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->merge_compiled_includes = $merge_compiled_includes; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @param string $left_delimiter | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function setLeftDelimiter($left_delimiter) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->left_delimiter = $left_delimiter; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @param string $right_delimiter | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function setRightDelimiter($right_delimiter) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->right_delimiter = $right_delimiter; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @param boolean $debugging | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function setDebugging($debugging) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->debugging = $debugging; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @param boolean $config_overwrite | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function setConfigOverwrite($config_overwrite) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->config_overwrite = $config_overwrite; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @param boolean $config_booleanize | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function setConfigBooleanize($config_booleanize) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->config_booleanize = $config_booleanize; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @param boolean $config_read_hidden | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function setConfigReadHidden($config_read_hidden) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->config_read_hidden = $config_read_hidden; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @param boolean $compile_locking | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function setCompileLocking($compile_locking) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->compile_locking = $compile_locking; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-17 21:52:32 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * @param string $default_resource_type | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function setDefaultResourceType($default_resource_type) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->default_resource_type = $default_resource_type; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @param string $caching_type | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function setCachingType($caching_type) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->caching_type = $caching_type; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Test install | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param null $errors | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function testInstall(&$errors = null) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         Smarty_Internal_TestInstall::testInstall($this, $errors); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-02 09:12:01 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * <<magic>> Generic getter. | 
					
						
							|  |  |  |      * Calls the appropriate getter function. | 
					
						
							|  |  |  |      * Issues an E_USER_NOTICE if no valid getter is found. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param  string $name property name | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return mixed | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function __get($name) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-12-22 23:49:25 +01:00
										 |  |  |         if (isset($this->accessMap[ $name ])) { | 
					
						
							|  |  |  |             $method = 'get' . $this->accessMap[ $name ]; | 
					
						
							| 
									
										
										
										
											2015-12-16 22:32:07 +01:00
										 |  |  |             return $this->{$method}(); | 
					
						
							| 
									
										
										
										
											2016-01-29 01:21:00 +01:00
										 |  |  |         } elseif (isset($this->_cache[ $name ])) { | 
					
						
							|  |  |  |             return $this->_cache[ $name ]; | 
					
						
							| 
									
										
										
										
											2015-12-22 23:49:25 +01:00
										 |  |  |         } elseif (in_array($name, $this->obsoleteProperties)) { | 
					
						
							| 
									
										
										
										
											2015-08-10 21:57:06 +02:00
										 |  |  |             return null; | 
					
						
							| 
									
										
										
										
											2015-01-02 09:12:01 +01:00
										 |  |  |         } else { | 
					
						
							|  |  |  |             trigger_error('Undefined property: ' . get_class($this) . '::$' . $name, E_USER_NOTICE); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2015-12-27 07:18:35 +01:00
										 |  |  |         return null; | 
					
						
							| 
									
										
										
										
											2015-01-02 09:12:01 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * <<magic>> Generic setter. | 
					
						
							|  |  |  |      * Calls the appropriate setter function. | 
					
						
							|  |  |  |      * Issues an E_USER_NOTICE if no valid setter is found. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string $name  property name | 
					
						
							|  |  |  |      * @param mixed  $value parameter passed to setter | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function __set($name, $value) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-12-22 23:49:25 +01:00
										 |  |  |         if (isset($this->accessMap[ $name ])) { | 
					
						
							| 
									
										
										
										
											2015-12-23 00:57:52 +01:00
										 |  |  |             $method = 'set' . $this->accessMap[ $name ]; | 
					
						
							|  |  |  |             $this->{$method}($value); | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |         } elseif (in_array($name, $this->obsoleteProperties)) { | 
					
						
							| 
									
										
										
										
											2015-08-10 21:57:06 +02:00
										 |  |  |             return; | 
					
						
							| 
									
										
										
										
											2015-01-02 09:12:01 +01:00
										 |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2015-08-17 21:52:32 +02:00
										 |  |  |             if (is_object($value) && method_exists($value, $name)) { | 
					
						
							|  |  |  |                 $this->$name = $value; | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 trigger_error('Undefined property: ' . get_class($this) . '::$' . $name, E_USER_NOTICE); | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2015-01-02 09:12:01 +01:00
										 |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-21 22:02:54 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Error Handler to mute expected messages | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @link http://php.net/set_error_handler | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2013-07-14 22:15:45 +00:00
										 |  |  |      * @param  integer $errno Error level | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * @param          $errstr | 
					
						
							|  |  |  |      * @param          $errfile | 
					
						
							|  |  |  |      * @param          $errline | 
					
						
							|  |  |  |      * @param          $errcontext | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |      * @return bool|void | 
					
						
							| 
									
										
										
										
											2011-09-21 22:02:54 +00:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2013-07-15 18:18:28 +00:00
										 |  |  |     public static function mutingErrorHandler($errno, $errstr, $errfile, $errline, $errcontext) | 
					
						
							| 
									
										
										
										
											2011-09-21 22:02:54 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-09-24 15:45:30 +00:00
										 |  |  |         $_is_muted_directory = false; | 
					
						
							| 
									
										
										
										
											2011-11-18 15:32:17 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-24 15:45:30 +00:00
										 |  |  |         // add the SMARTY_DIR to the list of muted directories
 | 
					
						
							| 
									
										
										
										
											2015-12-21 17:19:39 +01:00
										 |  |  |         if (!isset(Smarty::$_muted_directories[ SMARTY_DIR ])) { | 
					
						
							| 
									
										
										
										
											2011-09-24 15:45:30 +00:00
										 |  |  |             $smarty_dir = realpath(SMARTY_DIR); | 
					
						
							| 
									
										
										
										
											2012-11-01 10:10:10 +00:00
										 |  |  |             if ($smarty_dir !== false) { | 
					
						
							| 
									
										
										
										
											2015-12-21 17:19:39 +01:00
										 |  |  |                 Smarty::$_muted_directories[ SMARTY_DIR ] = | 
					
						
							| 
									
										
										
										
											2015-10-29 22:17:35 +01:00
										 |  |  |                     array('file' => $smarty_dir, 'length' => strlen($smarty_dir),); | 
					
						
							| 
									
										
										
										
											2012-11-01 10:10:10 +00:00
										 |  |  |             } | 
					
						
							| 
									
										
										
										
											2011-09-24 15:45:30 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-11-18 15:32:17 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-24 15:45:30 +00:00
										 |  |  |         // walk the muted directories and test against $errfile
 | 
					
						
							|  |  |  |         foreach (Smarty::$_muted_directories as $key => &$dir) { | 
					
						
							|  |  |  |             if (!$dir) { | 
					
						
							|  |  |  |                 // resolve directory and length for speedy comparisons
 | 
					
						
							|  |  |  |                 $file = realpath($key); | 
					
						
							| 
									
										
										
										
											2012-11-01 10:10:10 +00:00
										 |  |  |                 if ($file === false) { | 
					
						
							|  |  |  |                     // this directory does not exist, remove and skip it
 | 
					
						
							| 
									
										
										
										
											2015-12-21 17:19:39 +01:00
										 |  |  |                     unset(Smarty::$_muted_directories[ $key ]); | 
					
						
							| 
									
										
										
										
											2012-11-01 10:10:10 +00:00
										 |  |  |                     continue; | 
					
						
							|  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2015-06-14 03:30:31 +02:00
										 |  |  |                 $dir = array('file' => $file, 'length' => strlen($file),); | 
					
						
							| 
									
										
										
										
											2011-09-24 15:45:30 +00:00
										 |  |  |             } | 
					
						
							| 
									
										
										
										
											2015-12-21 17:19:39 +01:00
										 |  |  |             if (!strncmp($errfile, $dir[ 'file' ], $dir[ 'length' ])) { | 
					
						
							| 
									
										
										
										
											2011-09-24 15:45:30 +00:00
										 |  |  |                 $_is_muted_directory = true; | 
					
						
							|  |  |  |                 break; | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2011-09-24 12:56:52 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |         // pass to next error handler if this error did not occur inside SMARTY_DIR
 | 
					
						
							| 
									
										
										
										
											2011-09-24 12:56:52 +00:00
										 |  |  |         // or the error was within smarty but masked to be ignored
 | 
					
						
							| 
									
										
										
										
											2011-09-24 15:45:30 +00:00
										 |  |  |         if (!$_is_muted_directory || ($errno && $errno & error_reporting())) { | 
					
						
							| 
									
										
										
										
											2011-09-24 12:56:52 +00:00
										 |  |  |             if (Smarty::$_previous_error_handler) { | 
					
						
							| 
									
										
										
										
											2015-10-29 22:17:35 +01:00
										 |  |  |                 return call_user_func(Smarty::$_previous_error_handler, $errno, $errstr, $errfile, $errline, | 
					
						
							|  |  |  |                                       $errcontext); | 
					
						
							| 
									
										
										
										
											2011-09-24 12:56:52 +00:00
										 |  |  |             } else { | 
					
						
							|  |  |  |                 return false; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2016-07-23 22:21:14 +02:00
										 |  |  |         return; | 
					
						
							| 
									
										
										
										
											2011-09-21 22:02:54 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2011-09-23 20:21:16 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-21 22:02:54 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Enable error handler to mute expected messages | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return void | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2013-07-15 18:18:28 +00:00
										 |  |  |     public static function muteExpectedErrors() | 
					
						
							| 
									
										
										
										
											2011-09-21 22:02:54 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-09-21 22:44:53 +00:00
										 |  |  |         /* | 
					
						
							| 
									
										
										
										
											2011-09-23 20:21:16 +00:00
										 |  |  |             error muting is done because some people implemented custom error_handlers using | 
					
						
							| 
									
										
										
										
											2011-09-21 22:44:53 +00:00
										 |  |  |             http://php.net/set_error_handler and for some reason did not understand the following paragraph: | 
					
						
							| 
									
										
										
										
											2011-09-23 20:21:16 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |                 It is important to remember that the standard PHP error handler is completely bypassed for the | 
					
						
							|  |  |  |                 error types specified by error_types unless the callback function returns FALSE. | 
					
						
							|  |  |  |                 error_reporting() settings will have no effect and your error handler will be called regardless - | 
					
						
							|  |  |  |                 however you are still able to read the current value of error_reporting and act appropriately. | 
					
						
							|  |  |  |                 Of particular note is that this value will be 0 if the statement that caused the error was | 
					
						
							|  |  |  |                 prepended by the @ error-control operator. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-21 22:44:53 +00:00
										 |  |  |             Smarty deliberately uses @filemtime() over file_exists() and filemtime() in some places. Reasons include | 
					
						
							|  |  |  |                 - @filemtime() is almost twice as fast as using an additional file_exists() | 
					
						
							| 
									
										
										
										
											2011-09-23 20:21:16 +00:00
										 |  |  |                 - between file_exists() and filemtime() a possible race condition is opened, | 
					
						
							| 
									
										
										
										
											2011-09-21 22:44:53 +00:00
										 |  |  |                   which does not exist using the simple @filemtime() approach. | 
					
						
							|  |  |  |         */ | 
					
						
							| 
									
										
										
										
											2015-06-14 03:30:31 +02:00
										 |  |  |         $error_handler = array('Smarty', 'mutingErrorHandler'); | 
					
						
							| 
									
										
										
										
											2011-09-24 12:56:52 +00:00
										 |  |  |         $previous = set_error_handler($error_handler); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // avoid dead loops
 | 
					
						
							|  |  |  |         if ($previous !== $error_handler) { | 
					
						
							|  |  |  |             Smarty::$_previous_error_handler = $previous; | 
					
						
							| 
									
										
										
										
											2011-09-21 22:02:54 +00:00
										 |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2011-09-23 20:21:16 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-21 22:02:54 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Disable error handler muting expected messages | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return void | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2013-07-15 18:18:28 +00:00
										 |  |  |     public static function unmuteExpectedErrors() | 
					
						
							| 
									
										
										
										
											2011-09-21 22:02:54 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-09-24 12:56:52 +00:00
										 |  |  |         restore_error_handler(); | 
					
						
							| 
									
										
										
										
											2011-09-21 22:02:54 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  | } |