| 
									
										
										
										
											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 | 
					
						
							|  |  |  |  * SVN:         $Id$ | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * 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. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * 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. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * 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 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @link http://www.smarty.net/ | 
					
						
							|  |  |  |  * @copyright 2008 New Digital Group, Inc. | 
					
						
							|  |  |  |  * @author Monte Ohrt <monte at ohrt dot com> | 
					
						
							|  |  |  |  * @author Uwe Tews | 
					
						
							|  |  |  |  * @author Rodney Rehm | 
					
						
							|  |  |  |  * @package Smarty | 
					
						
							|  |  |  |  * @version 3.1-DEV | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-29 22:57:29 +00:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |  * define shorthand directory separator constant | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2009-08-29 22:57:29 +00:00
										 |  |  | if (!defined('DS')) { | 
					
						
							| 
									
										
										
										
											2009-09-01 21:11:42 +00:00
										 |  |  |     define('DS', DIRECTORY_SEPARATOR); | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2009-08-29 22:57:29 +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')) { | 
					
						
							| 
									
										
										
										
											2009-08-29 22:57:29 +00:00
										 |  |  |     define('SMARTY_DIR', dirname(__FILE__) . DS); | 
					
						
							| 
									
										
										
										
											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')) { | 
					
						
							| 
									
										
										
										
											2009-09-01 21:11:42 +00:00
										 |  |  |     define('SMARTY_SYSPLUGINS_DIR', SMARTY_DIR . 'sysplugins' . DS); | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2009-09-19 13:22:32 +00:00
										 |  |  | if (!defined('SMARTY_PLUGINS_DIR')) { | 
					
						
							|  |  |  |     define('SMARTY_PLUGINS_DIR', SMARTY_DIR . 'plugins' . DS); | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  | if (!defined('SMARTY_MBSTRING')) { | 
					
						
							|  |  |  |     define('SMARTY_MBSTRING', function_exists('mb_strlen')); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2009-11-17 17:46:03 +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
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |  * register the class autoloader | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2009-11-09 17:26:59 +00:00
										 |  |  | if (!defined('SMARTY_SPL_AUTOLOAD')) { | 
					
						
							| 
									
										
										
										
											2009-11-14 13:02:48 +00:00
										 |  |  |     define('SMARTY_SPL_AUTOLOAD', 0); | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2009-11-09 17:26:59 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | if (SMARTY_SPL_AUTOLOAD && set_include_path(get_include_path() . PATH_SEPARATOR . SMARTY_SYSPLUGINS_DIR) !== false) { | 
					
						
							|  |  |  |     $registeredAutoLoadFunctions = spl_autoload_functions(); | 
					
						
							|  |  |  |     if (!isset($registeredAutoLoadFunctions['spl_autoload'])) { | 
					
						
							|  |  |  |         spl_autoload_register(); | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-11-09 17:26:59 +00:00
										 |  |  | } else { | 
					
						
							|  |  |  |     spl_autoload_register('smartyAutoload'); | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  | include_once SMARTY_SYSPLUGINS_DIR.'smarty_internal_data.php'; | 
					
						
							|  |  |  | include_once SMARTY_SYSPLUGINS_DIR.'smarty_internal_templatebase.php'; | 
					
						
							|  |  |  | include_once SMARTY_SYSPLUGINS_DIR.'smarty_internal_template.php'; | 
					
						
							|  |  |  | include_once SMARTY_SYSPLUGINS_DIR.'smarty_resource.php'; | 
					
						
							|  |  |  | include_once SMARTY_SYSPLUGINS_DIR.'smarty_internal_resource_file.php'; | 
					
						
							|  |  |  | include_once SMARTY_SYSPLUGINS_DIR.'smarty_cacheresource.php'; | 
					
						
							|  |  |  | include_once SMARTY_SYSPLUGINS_DIR.'smarty_internal_cacheresource_file.php'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |  * This is the main Smarty class | 
					
						
							|  |  |  |  * @package Smarty | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  | class Smarty extends Smarty_Internal_TemplateBase { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /**#@+
 | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-12-01 15:34:04 +00:00
										 |  |  |     const SMARTY_VERSION = 'Smarty-3.1-DEV'; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * define variable scopes | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     const SCOPE_LOCAL = 0; | 
					
						
							|  |  |  |     const SCOPE_PARENT = 1; | 
					
						
							|  |  |  |     const SCOPE_ROOT = 2; | 
					
						
							|  |  |  |     const SCOPE_GLOBAL = 3; | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * define caching modes | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     const CACHING_OFF = 0; | 
					
						
							|  |  |  |     const CACHING_LIFETIME_CURRENT = 1; | 
					
						
							|  |  |  |     const CACHING_LIFETIME_SAVED = 2; | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * define compile check modes | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     const COMPILECHECK_OFF = 0; | 
					
						
							|  |  |  |     const COMPILECHECK_ON = 1; | 
					
						
							|  |  |  |     const COMPILECHECK_CACHEMISS = 2; | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											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
 | 
					
						
							|  |  |  |     const PHP_QUOTE = 1; //-> escape tags as entities
 | 
					
						
							|  |  |  |     const PHP_REMOVE = 2; //-> escape tags as entities
 | 
					
						
							|  |  |  |     const PHP_ALLOW = 3; //-> escape tags as entities
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * filter types | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     const FILTER_POST = 'post'; | 
					
						
							|  |  |  |     const FILTER_PRE = 'pre'; | 
					
						
							|  |  |  |     const FILTER_OUTPUT = 'output'; | 
					
						
							|  |  |  |     const FILTER_VARIABLE = 'variable'; | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * plugin types | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     const PLUGIN_FUNCTION = 'function'; | 
					
						
							|  |  |  |     const PLUGIN_BLOCK = 'block'; | 
					
						
							|  |  |  |     const PLUGIN_COMPILER = 'compiler'; | 
					
						
							|  |  |  |     const PLUGIN_MODIFIER = 'modifier'; | 
					
						
							|  |  |  |     const PLUGIN_MODIFIERCOMPILER = 'modifiercompiler'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /**#@-*/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * assigned global tpl vars | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public static $global_tpl_vars = array(); | 
					
						
							| 
									
										
										
										
											2011-11-18 15:32:17 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-21 22:02:54 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-09-24 15:45:30 +00:00
										 |  |  |      * error handler returned by set_error_hanlder() in Smarty::muteExpectedErrors() | 
					
						
							| 
									
										
										
										
											2011-09-21 22:02:54 +00:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-24 12:56:52 +00:00
										 |  |  |     public static $_previous_error_handler = null; | 
					
						
							| 
									
										
										
										
											2011-09-24 15:45:30 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * contains directories outside of SMARTY_DIR that are to be muted by muteExpectedErrors() | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public static $_muted_directories = array(); | 
					
						
							| 
									
										
										
										
											2011-12-18 18:48:07 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Flag denoting if Multibyte String functions are available | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-12-18 18:20:09 +00:00
										 |  |  |     public static $_MBSTRING = SMARTY_MBSTRING; | 
					
						
							| 
									
										
										
										
											2011-12-18 18:48:07 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * The character set to adhere to (e.g. "UTF-8") | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-12-18 18:20:09 +00:00
										 |  |  |     public static $_CHARSET = SMARTY_RESOURCE_CHAR_SET; | 
					
						
							| 
									
										
										
										
											2011-12-18 18:48:07 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * The date format to be used internally | 
					
						
							|  |  |  |      * (accepts date() and strftime()) | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-12-18 18:20:09 +00:00
										 |  |  |     public static $_DATE_FORMAT = SMARTY_RESOURCE_DATE_FORMAT; | 
					
						
							| 
									
										
										
										
											2011-12-18 18:48:07 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Flag denoting if PCRE should run in UTF-8 mode | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-12-18 18:20:09 +00:00
										 |  |  |     public static $_UTF8_MODIFIER = 'u'; | 
					
						
							|  |  |  |      | 
					
						
							| 
									
										
										
										
											2011-12-18 18:48:07 +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
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * auto literal on delimiters with whitspace | 
					
						
							|  |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $auto_literal = true; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * display error on not assigned variables | 
					
						
							|  |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $error_unassigned = false; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * look up relative filepaths in include_path | 
					
						
							|  |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public $use_include_path = false; | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * template directory | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-11-18 15:32:17 +00:00
										 |  |  |     private $template_dir = array(); | 
					
						
							| 
									
										
										
										
											2011-10-03 19:02:44 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * joined template directory string used in cache keys | 
					
						
							|  |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-10-03 19:02:44 +00:00
										 |  |  |     public $joined_template_dir = null; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * joined config directory string used in cache keys | 
					
						
							|  |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-10-13 09:50:55 +00:00
										 |  |  |     public $joined_config_dir = null; | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * default template handler | 
					
						
							|  |  |  |      * @var callable | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $default_template_handler_func = null; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * default config handler | 
					
						
							|  |  |  |      * @var callable | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public $default_config_handler_func = null; | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * default plugin handler | 
					
						
							|  |  |  |      * @var callable | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public $default_plugin_handler_func = null; | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * compile directory | 
					
						
							|  |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-11-18 15:32:17 +00:00
										 |  |  |     private $compile_dir = null; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * plugins directory | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-11-18 15:32:17 +00:00
										 |  |  |     private $plugins_dir = array(); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * cache directory | 
					
						
							|  |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-11-18 15:32:17 +00:00
										 |  |  |     private $cache_dir = null; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * config directory | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-11-18 15:32:17 +00:00
										 |  |  |     private $config_dir = array(); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * force template compiling? | 
					
						
							|  |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $force_compile = false; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * check template for modifications? | 
					
						
							|  |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $compile_check = true; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * use sub dirs for compiled/cached files? | 
					
						
							|  |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $use_sub_dirs = false; | 
					
						
							| 
									
										
										
										
											2011-10-21 18:40:16 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * allow ambiguous resources (that are made unique by the resource handler) | 
					
						
							|  |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public $allow_ambiguous_resources = false; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * caching enabled | 
					
						
							|  |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $caching = false; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * merge compiled includes | 
					
						
							|  |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $merge_compiled_includes = false; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * cache lifetime in seconds | 
					
						
							|  |  |  |      * @var integer | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $cache_lifetime = 3600; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * force cache file creation | 
					
						
							|  |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $force_cache = false; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Set this if you want different sets of cache files for the same | 
					
						
							|  |  |  |      * templates. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $cache_id = null; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Set this if you want different sets of compiled files for the same | 
					
						
							|  |  |  |      * templates. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $compile_id = null; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * template left-delimiter | 
					
						
							|  |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     public $left_delimiter = "{"; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * template right-delimiter | 
					
						
							|  |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $right_delimiter = "}"; | 
					
						
							| 
									
										
										
										
											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'; | 
					
						
							| 
									
										
										
										
											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; | 
					
						
							| 
									
										
										
										
											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; | 
					
						
							| 
									
										
										
										
											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; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Should compiled-templates be prevented from being called directly? | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * {@internal | 
					
						
							|  |  |  |      * Currently used by Smarty_Internal_Template only. | 
					
						
							|  |  |  |      * }} | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $direct_access_security = true; | 
					
						
							| 
									
										
										
										
											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; | 
					
						
							| 
									
										
										
										
											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> | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2010-04-28 20:30:27 +00:00
										 |  |  |     public $debugging_ctrl = 'NONE'; | 
					
						
							| 
									
										
										
										
											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. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var type | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     public $smarty_debug_id = 'SMARTY_DEBUG'; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Path of debug template. | 
					
						
							|  |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $debug_tpl = null; | 
					
						
							| 
									
										
										
										
											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. | 
					
						
							|  |  |  |      * @var int | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $error_reporting = null; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Internal flag for getTags() | 
					
						
							|  |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public $get_used_tags = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /**#@+
 | 
					
						
							| 
									
										
										
										
											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. | 
					
						
							|  |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public $config_overwrite = true; | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Controls whether config values of on/true/yes and off/false/no get converted to boolean. | 
					
						
							|  |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public $config_booleanize = true; | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Controls whether hidden config sections/vars are read from the file. | 
					
						
							|  |  |  |      * @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 | 
					
						
							|  |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public $compile_locking = true; | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Controls whether cache resources should emply locking mechanism | 
					
						
							|  |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public $cache_locking = false; | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * seconds to wait for acquiring a lock before ignoring the write lock | 
					
						
							|  |  |  |      * @var float | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public $locking_timeout = 10; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /**#@-*/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * global template functions | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $template_functions = array(); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * resource type used if none given | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * Must be an valid key of $registered_resources. | 
					
						
							|  |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $default_resource_type = 'file'; | 
					
						
							| 
									
										
										
										
											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'; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * internal config properties | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $properties = array(); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * config type | 
					
						
							|  |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $default_config_type = 'file'; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * cached template objects | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public $template_objects = array(); | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * check If-Modified-Since headers | 
					
						
							|  |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $cache_modified_check = false; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * registered plugins | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $registered_plugins = array(); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * plugin search order | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $plugin_search_order = array('function', 'block', 'compiler', 'class'); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * registered objects | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $registered_objects = array(); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * registered classes | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $registered_classes = array(); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * registered filters | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $registered_filters = array(); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * registered resources | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $registered_resources = array(); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * resource handler cache | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-10-15 10:46:03 +00:00
										 |  |  |     public $_resource_handlers = array(); | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * registered cache resources | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public $registered_cache_resources = array(); | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * cache resource handler cache | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-10-15 10:46:03 +00:00
										 |  |  |     public $_cacheresource_handlers = array(); | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * autoload filter | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $autoload_filters = array(); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * default modifier | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $default_modifiers = array(); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * autoescape variable output | 
					
						
							|  |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public $escape_html = false; | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * global internal smarty vars | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public static $_smarty_vars = array(); | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * start time for execution time calculation | 
					
						
							|  |  |  |      * @var int | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $start_time = 0; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * default file permissions | 
					
						
							|  |  |  |      * @var int | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $_file_perms = 0644; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * default dir permissions | 
					
						
							|  |  |  |      * @var int | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $_dir_perms = 0771; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * block tag hierarchy | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     public $_tag_stack = array(); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * self pointer to Smarty object | 
					
						
							|  |  |  |      * @var Smarty | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2010-12-05 17:21:02 +00:00
										 |  |  |     public $smarty; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * required by the compiler for BC | 
					
						
							|  |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public $_current_file = null; | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * internal flag to enable parser debugging | 
					
						
							|  |  |  |      * @var bool | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public $_parserdebug = false; | 
					
						
							| 
									
										
										
										
											2011-09-18 02:31:58 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Saved parameter of merged templates during compilation | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-18 02:31:58 +00:00
										 |  |  |     public $merged_templates_func = array(); | 
					
						
							| 
									
										
										
										
											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
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         // selfpointer needed by some other class methods
 | 
					
						
							|  |  |  |         $this->smarty = $this; | 
					
						
							| 
									
										
										
										
											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); | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |         // set default dirs
 | 
					
						
							| 
									
										
										
										
											2011-09-24 15:45:30 +00:00
										 |  |  |         $this->setTemplateDir('.' . DS . 'templates' . DS) | 
					
						
							|  |  |  |             ->setCompileDir('.' . DS . 'templates_c' . DS) | 
					
						
							|  |  |  |             ->setPluginsDir(SMARTY_PLUGINS_DIR) | 
					
						
							|  |  |  |             ->setCacheDir('.' . DS . 'cache' . DS) | 
					
						
							|  |  |  |             ->setConfigDir('.' . DS . 'configs' . DS); | 
					
						
							| 
									
										
										
										
											2011-11-18 15:32:17 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         $this->debug_tpl = 'file:' . dirname(__FILE__) . '/debug.tpl'; | 
					
						
							| 
									
										
										
										
											2010-01-25 19:02:34 +00:00
										 |  |  |         if (isset($_SERVER['SCRIPT_NAME'])) { | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |             $this->assignGlobal('SCRIPT_NAME', $_SERVER['SCRIPT_NAME']); | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2011-11-18 15:32:17 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Class destructor | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |     public function __destruct() | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         // intentionally left blank
 | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * <<magic>> set selfpointer on cloned object | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function __clone() | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         $this->smarty = $this; | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00: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 | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function __get($name) | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         $allowed = array( | 
					
						
							|  |  |  |         'template_dir' => 'getTemplateDir', | 
					
						
							|  |  |  |         'config_dir' => 'getConfigDir', | 
					
						
							|  |  |  |         'plugins_dir' => 'getPluginsDir', | 
					
						
							|  |  |  |         'compile_dir' => 'getCompileDir', | 
					
						
							|  |  |  |         'cache_dir' => 'getCacheDir', | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (isset($allowed[$name])) { | 
					
						
							|  |  |  |             return $this->{$allowed[$name]}(); | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             trigger_error('Undefined property: '. get_class($this) .'::$'. $name, E_USER_NOTICE); | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-22 16:39:30 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00: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 | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function __set($name, $value) | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         $allowed = array( | 
					
						
							|  |  |  |         'template_dir' => 'setTemplateDir', | 
					
						
							|  |  |  |         'config_dir' => 'setConfigDir', | 
					
						
							|  |  |  |         'plugins_dir' => 'setPluginsDir', | 
					
						
							|  |  |  |         'compile_dir' => 'setCompileDir', | 
					
						
							|  |  |  |         'cache_dir' => 'setCacheDir', | 
					
						
							|  |  |  |         ); | 
					
						
							| 
									
										
										
										
											2010-01-22 16:39:30 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         if (isset($allowed[$name])) { | 
					
						
							|  |  |  |             $this->{$allowed[$name]}($value); | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |             trigger_error('Undefined property: ' . get_class($this) . '::$' . $name, E_USER_NOTICE); | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-30 17:05:37 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Check if a template resource exists | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string $resource_name template name | 
					
						
							|  |  |  |      * @return boolean status | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function templateExists($resource_name) | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |         // create template object
 | 
					
						
							| 
									
										
										
										
											2010-07-22 19:11:38 +00:00
										 |  |  |         $save = $this->template_objects; | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |         $tpl = new $this->template_class($resource_name, $this); | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  |         // check if it does exists
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         $result = $tpl->source->exists; | 
					
						
							| 
									
										
										
										
											2010-07-22 19:11:38 +00:00
										 |  |  |         $this->template_objects = $save; | 
					
						
							|  |  |  |         return $result; | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Returns a single or all global  variables | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param object $smarty | 
					
						
							|  |  |  |      * @param string $varname variable name or null | 
					
						
							|  |  |  |      * @return string variable value or or array of variables | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function getGlobal($varname = null) | 
					
						
							| 
									
										
										
										
											2010-11-11 21:34:36 +00:00
										 |  |  |     { | 
					
						
							|  |  |  |         if (isset($varname)) { | 
					
						
							|  |  |  |             if (isset(self::$global_tpl_vars[$varname])) { | 
					
						
							|  |  |  |                 return self::$global_tpl_vars[$varname]->value; | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |             } else { | 
					
						
							| 
									
										
										
										
											2010-11-11 21:34:36 +00:00
										 |  |  |                 return ''; | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |             } | 
					
						
							| 
									
										
										
										
											2010-11-11 21:34:36 +00:00
										 |  |  |         } else { | 
					
						
							|  |  |  |             $_result = array(); | 
					
						
							|  |  |  |             foreach (self::$global_tpl_vars AS $key => $var) { | 
					
						
							|  |  |  |                 $_result[$key] = $var->value; | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |             } | 
					
						
							| 
									
										
										
										
											2010-11-11 21:34:36 +00:00
										 |  |  |             return $_result; | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Empty cache folder | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param integer $exp_time expiration time | 
					
						
							|  |  |  |      * @param string  $type     resource type | 
					
						
							|  |  |  |      * @return integer number of cache files deleted | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2010-11-11 21:34:36 +00:00
										 |  |  |     function clearAllCache($exp_time = null, $type = null) | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         // load cache resource and call clearAll
 | 
					
						
							|  |  |  |         $_cache_resource = Smarty_CacheResource::load($this, $type); | 
					
						
							|  |  |  |         Smarty_CacheResource::invalidLoadedCache($this); | 
					
						
							| 
									
										
										
										
											2011-09-24 12:56:52 +00:00
										 |  |  |         return $_cache_resource->clearAll($this, $exp_time); | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-11-11 21:34:36 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Empty cache for a specific template | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string  $template_name template name | 
					
						
							|  |  |  |      * @param string  $cache_id      cache id | 
					
						
							|  |  |  |      * @param string  $compile_id    compile id | 
					
						
							|  |  |  |      * @param integer $exp_time      expiration time | 
					
						
							|  |  |  |      * @param string  $type          resource type | 
					
						
							|  |  |  |      * @return integer number of cache files deleted | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function clearCache($template_name, $cache_id = null, $compile_id = null, $exp_time = null, $type = null) | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         // load cache resource and call clear
 | 
					
						
							|  |  |  |         $_cache_resource = Smarty_CacheResource::load($this, $type); | 
					
						
							|  |  |  |         Smarty_CacheResource::invalidLoadedCache($this); | 
					
						
							| 
									
										
										
										
											2011-09-24 12:56:52 +00:00
										 |  |  |         return $_cache_resource->clear($this, $template_name, $cache_id, $compile_id, $exp_time); | 
					
						
							| 
									
										
										
										
											2010-11-11 21:34:36 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Loads security class and enables security | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string|Smarty_Security $security_class if a string is used, it must be class-name | 
					
						
							|  |  |  |      * @return Smarty current Smarty instance for chaining | 
					
						
							|  |  |  |      * @throws SmartyException when an invalid class name is provided | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2010-11-11 21:34:36 +00:00
										 |  |  |     public function enableSecurity($security_class = null) | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         if ($security_class instanceof Smarty_Security) { | 
					
						
							|  |  |  |             $this->security_policy = $security_class; | 
					
						
							|  |  |  |             return $this; | 
					
						
							|  |  |  |         } elseif (is_object($security_class)) { | 
					
						
							|  |  |  |             throw new SmartyException("Class '" . get_class($security_class) . "' must extend Smarty_Security."); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         if ($security_class == null) { | 
					
						
							|  |  |  |             $security_class = $this->security_class; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         if (!class_exists($security_class)) { | 
					
						
							| 
									
										
										
										
											2010-11-11 21:34:36 +00:00
										 |  |  |             throw new SmartyException("Security class '$security_class' is not defined"); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         } elseif ($security_class !== 'Smarty_Security' && !is_subclass_of($security_class, 'Smarty_Security')) { | 
					
						
							|  |  |  |             throw new SmartyException("Class '$security_class' must extend Smarty_Security."); | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $this->security_policy = new $security_class($this); | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  |      * @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 | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string|array $template_dir directory(s) of template sources | 
					
						
							|  |  |  |      * @return Smarty current Smarty instance for chaining | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function setTemplateDir($template_dir) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->template_dir = array(); | 
					
						
							|  |  |  |         foreach ((array) $template_dir as $k => $v) { | 
					
						
							|  |  |  |             $this->template_dir[$k] = rtrim($v, '/\\') . DS; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-03 19:02:44 +00:00
										 |  |  |         $this->joined_template_dir = join(DIRECTORY_SEPARATOR, $this->template_dir); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         return $this; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Add template directory(s) | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string|array $template_dir directory(s) of template sources | 
					
						
							|  |  |  |      * @param string       $key          of the array element to assign the template dir to | 
					
						
							|  |  |  |      * @return Smarty current Smarty instance for chaining | 
					
						
							|  |  |  |      * @throws SmartyException when the given template directory is not valid | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function addTemplateDir($template_dir, $key=null) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // make sure we're dealing with an array
 | 
					
						
							|  |  |  |         $this->template_dir = (array) $this->template_dir; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (is_array($template_dir)) { | 
					
						
							|  |  |  |             foreach ($template_dir as $k => $v) { | 
					
						
							|  |  |  |                 if (is_int($k)) { | 
					
						
							|  |  |  |                     // indexes are not merged but appended
 | 
					
						
							|  |  |  |                     $this->template_dir[] = rtrim($v, '/\\') . DS; | 
					
						
							|  |  |  |                 } else { | 
					
						
							|  |  |  |                     // string indexes are overridden
 | 
					
						
							|  |  |  |                     $this->template_dir[$k] = rtrim($v, '/\\') . DS; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } elseif ($key !== null) { | 
					
						
							|  |  |  |             // override directory at specified index
 | 
					
						
							|  |  |  |             $this->template_dir[$key] = rtrim($template_dir, '/\\') . DS; | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             // append new directory
 | 
					
						
							|  |  |  |             $this->template_dir[] = rtrim($template_dir, '/\\') . DS; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-10-03 19:02:44 +00:00
										 |  |  |         $this->joined_template_dir = join(DIRECTORY_SEPARATOR, $this->template_dir); | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param mixed index of directory to get, null to get all | 
					
						
							|  |  |  |      * @return array|string list of template directories, or directory of $index | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function getTemplateDir($index=null) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if ($index !== null) { | 
					
						
							|  |  |  |             return isset($this->template_dir[$index]) ? $this->template_dir[$index] : null; | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-23 20:21:16 +00:00
										 |  |  |         return (array)$this->template_dir; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Set config directory | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string|array $template_dir directory(s) of configuration sources | 
					
						
							|  |  |  |      * @return Smarty current Smarty instance for chaining | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function setConfigDir($config_dir) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->config_dir = array(); | 
					
						
							|  |  |  |         foreach ((array) $config_dir as $k => $v) { | 
					
						
							|  |  |  |             $this->config_dir[$k] = rtrim($v, '/\\') . DS; | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-11-18 15:32:17 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-13 09:50:55 +00:00
										 |  |  |         $this->joined_config_dir = join(DIRECTORY_SEPARATOR, $this->config_dir); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         return $this; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Add config directory(s) | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string|array $config_dir directory(s) of config sources | 
					
						
							|  |  |  |      * @param string key of the array element to assign the config dir to | 
					
						
							|  |  |  |      * @return Smarty current Smarty instance for chaining | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function addConfigDir($config_dir, $key=null) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // make sure we're dealing with an array
 | 
					
						
							|  |  |  |         $this->config_dir = (array) $this->config_dir; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (is_array($config_dir)) { | 
					
						
							|  |  |  |             foreach ($config_dir as $k => $v) { | 
					
						
							|  |  |  |                 if (is_int($k)) { | 
					
						
							|  |  |  |                     // indexes are not merged but appended
 | 
					
						
							|  |  |  |                     $this->config_dir[] = rtrim($v, '/\\') . DS; | 
					
						
							|  |  |  |                 } else { | 
					
						
							|  |  |  |                     // string indexes are overridden
 | 
					
						
							|  |  |  |                     $this->config_dir[$k] = rtrim($v, '/\\') . DS; | 
					
						
							|  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |             } | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         } elseif( $key !== null ) { | 
					
						
							|  |  |  |             // override directory at specified index
 | 
					
						
							|  |  |  |             $this->config_dir[$key] = rtrim($config_dir, '/\\') . DS; | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             // append new directory
 | 
					
						
							|  |  |  |             $this->config_dir[] = rtrim($config_dir, '/\\') . DS; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-11-18 15:32:17 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-13 09:50:55 +00:00
										 |  |  |         $this->joined_config_dir = join(DIRECTORY_SEPARATOR, $this->config_dir); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         return $this; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Get config directory | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param mixed index of directory to get, null to get all | 
					
						
							|  |  |  |      * @return array|string configuration directory | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function getConfigDir($index=null) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if ($index !== null) { | 
					
						
							|  |  |  |             return isset($this->config_dir[$index]) ? $this->config_dir[$index] : null; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-23 20:21:16 +00:00
										 |  |  |         return (array)$this->config_dir; | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Set plugins directory | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string|array $plugins_dir directory(s) of plugins | 
					
						
							|  |  |  |      * @return Smarty current Smarty instance for chaining | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function setPluginsDir($plugins_dir) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->plugins_dir = array(); | 
					
						
							|  |  |  |         foreach ((array)$plugins_dir as $k => $v) { | 
					
						
							|  |  |  |             $this->plugins_dir[$k] = rtrim($v, '/\\') . DS; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $this; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Adds directory of plugin files | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param object $smarty | 
					
						
							|  |  |  |      * @param string $ |array $ plugins folder | 
					
						
							|  |  |  |      * @return Smarty current Smarty instance for chaining | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function addPluginsDir($plugins_dir) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // make sure we're dealing with an array
 | 
					
						
							|  |  |  |         $this->plugins_dir = (array) $this->plugins_dir; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (is_array($plugins_dir)) { | 
					
						
							|  |  |  |             foreach ($plugins_dir as $k => $v) { | 
					
						
							|  |  |  |                 if (is_int($k)) { | 
					
						
							|  |  |  |                     // indexes are not merged but appended
 | 
					
						
							|  |  |  |                     $this->plugins_dir[] = rtrim($v, '/\\') . DS; | 
					
						
							|  |  |  |                 } else { | 
					
						
							|  |  |  |                     // string indexes are overridden
 | 
					
						
							|  |  |  |                     $this->plugins_dir[$k] = rtrim($v, '/\\') . DS; | 
					
						
							|  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |             } | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         } else { | 
					
						
							|  |  |  |             // append new directory
 | 
					
						
							|  |  |  |             $this->plugins_dir[] = rtrim($plugins_dir, '/\\') . DS; | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $this->plugins_dir = array_unique($this->plugins_dir); | 
					
						
							|  |  |  |         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() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-09-23 20:21:16 +00:00
										 |  |  |         return (array)$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
										 |  |  |      * Set compile directory | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string $compile_dir directory to store compiled templates in | 
					
						
							|  |  |  |      * @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
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         $this->compile_dir = rtrim($compile_dir, '/\\') . DS; | 
					
						
							| 
									
										
										
										
											2011-09-24 15:45:30 +00:00
										 |  |  |         if (!isset(Smarty::$_muted_directories[$this->compile_dir])) { | 
					
						
							|  |  |  |             Smarty::$_muted_directories[$this->compile_dir] = null; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											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
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string $cache_dir directory to store cached templates in | 
					
						
							|  |  |  |      * @return Smarty current Smarty instance for chaining | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function setCacheDir($cache_dir) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->cache_dir = rtrim($cache_dir, '/\\') . DS; | 
					
						
							| 
									
										
										
										
											2011-09-24 15:45:30 +00:00
										 |  |  |         if (!isset(Smarty::$_muted_directories[$this->cache_dir])) { | 
					
						
							|  |  |  |             Smarty::$_muted_directories[$this->cache_dir] = null; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											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
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Set default modifiers | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param array|string $modifiers modifier or list of modifiers to set | 
					
						
							|  |  |  |      * @return Smarty current Smarty instance for chaining | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function setDefaultModifiers($modifiers) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->default_modifiers = (array) $modifiers; | 
					
						
							|  |  |  |         return $this; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-11-27 20:46:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-01 21:11:42 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Add default modifiers | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param array|string $modifiers modifier or list of modifiers to add | 
					
						
							|  |  |  |      * @return Smarty current Smarty instance for chaining | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function addDefaultModifiers($modifiers) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if (is_array($modifiers)) { | 
					
						
							|  |  |  |             $this->default_modifiers = array_merge($this->default_modifiers, $modifiers); | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $this->default_modifiers[] = $modifiers; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $this; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Get default modifiers | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return array list of default modifiers | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function getDefaultModifiers() | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         return $this->default_modifiers; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Set autoload filters | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param array $filters filters to load automatically | 
					
						
							|  |  |  |      * @param string $type "pre", "output", … specify the filter type to set. Defaults to none treating $filters' keys as the appropriate types | 
					
						
							|  |  |  |      * @return Smarty current Smarty instance for chaining | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function setAutoloadFilters($filters, $type=null) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if ($type !== null) { | 
					
						
							|  |  |  |             $this->autoload_filters[$type] = (array) $filters; | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $this->autoload_filters = (array) $filters; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											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-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Add autoload filters | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param array $filters filters to load automatically | 
					
						
							|  |  |  |      * @param string $type "pre", "output", … specify the filter type to set. Defaults to none treating $filters' keys as the appropriate types | 
					
						
							|  |  |  |      * @return Smarty current Smarty instance for chaining | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function addAutoloadFilters($filters, $type=null) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if ($type !== null) { | 
					
						
							|  |  |  |             if (!empty($this->autoload_filters[$type])) { | 
					
						
							|  |  |  |                 $this->autoload_filters[$type] = array_merge($this->autoload_filters[$type], (array) $filters); | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 $this->autoload_filters[$type] = (array) $filters; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             foreach ((array) $filters as $key => $value) { | 
					
						
							|  |  |  |                 if (!empty($this->autoload_filters[$key])) { | 
					
						
							|  |  |  |                     $this->autoload_filters[$key] = array_merge($this->autoload_filters[$key], (array) $value); | 
					
						
							|  |  |  |                 } else { | 
					
						
							|  |  |  |                     $this->autoload_filters[$key] = (array) $value; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $this; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-11-11 21:34:36 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Get autoload filters | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string $type type of filter to get autoloads for. Defaults to all autoload filters | 
					
						
							|  |  |  |      * @return array array( 'type1' => array( 'filter1', 'filter2', … ) ) or array( 'filter1', 'filter2', …) if $type was specified | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function getAutoloadFilters($type=null) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if ($type !== null) { | 
					
						
							|  |  |  |             return isset($this->autoload_filters[$type]) ? $this->autoload_filters[$type] : array(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $this->autoload_filters; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * return name of debugging template | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function getDebugTemplate() | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |         return $this->debug_tpl; | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-09-01 21:11:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * set the debug template | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string $tpl_name | 
					
						
							|  |  |  |      * @return Smarty current Smarty instance for chaining | 
					
						
							|  |  |  |      * @throws SmartyException if file is not readable | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function setDebugTemplate($tpl_name) | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         if (!is_readable($tpl_name)) { | 
					
						
							|  |  |  |             throw new SmartyException("Unknown file '{$tpl_name}'"); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         $this->debug_tpl = $tpl_name; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $this; | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-11-13 04:10:52 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * creates a template object | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @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 | 
					
						
							|  |  |  |      * @return object template object | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function createTemplate($template, $cache_id = null, $compile_id = null, $parent = null, $do_clone = true) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if (!empty($cache_id) && (is_object($cache_id) || is_array($cache_id))) { | 
					
						
							|  |  |  |             $parent = $cache_id; | 
					
						
							|  |  |  |             $cache_id = null; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         if (!empty($parent) && is_array($parent)) { | 
					
						
							|  |  |  |             $data = $parent; | 
					
						
							|  |  |  |             $parent = null; | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $data = null; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         // default to cache_id and compile_id of Smarty object
 | 
					
						
							|  |  |  |         $cache_id = $cache_id === null ? $this->cache_id : $cache_id; | 
					
						
							|  |  |  |         $compile_id = $compile_id === null ? $this->compile_id : $compile_id; | 
					
						
							|  |  |  |         // already in template cache?
 | 
					
						
							| 
									
										
										
										
											2011-10-21 18:40:16 +00:00
										 |  |  |         if ($this->allow_ambiguous_resources) { | 
					
						
							|  |  |  |             $_templateId = Smarty_Resource::getUniqueTemplateName($this, $template) . $cache_id . $compile_id; | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $_templateId = $this->joined_template_dir . '#' . $template . $cache_id . $compile_id; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-10-21 12:10:41 +00:00
										 |  |  |         if (isset($_templateId[150])) { | 
					
						
							|  |  |  |             $_templateId = sha1($_templateId); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         if ($do_clone) { | 
					
						
							|  |  |  |             if (isset($this->template_objects[$_templateId])) { | 
					
						
							|  |  |  |                 // return cached template object
 | 
					
						
							|  |  |  |                 $tpl = clone $this->template_objects[$_templateId]; | 
					
						
							|  |  |  |                 $tpl->smarty = clone $tpl->smarty; | 
					
						
							|  |  |  |                 $tpl->parent = $parent; | 
					
						
							| 
									
										
										
										
											2011-11-24 21:08:26 +00:00
										 |  |  |                 $tpl->tpl_vars = array(); | 
					
						
							|  |  |  |                 $tpl->config_vars = array(); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |             } else { | 
					
						
							|  |  |  |                 $tpl = new $this->template_class($template, clone $this, $parent, $cache_id, $compile_id); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             if (isset($this->template_objects[$_templateId])) { | 
					
						
							|  |  |  |                 // return cached template object
 | 
					
						
							|  |  |  |                 $tpl = $this->template_objects[$_templateId]; | 
					
						
							| 
									
										
										
										
											2011-11-24 21:08:26 +00:00
										 |  |  |                 $tpl->parent = $parent; | 
					
						
							|  |  |  |                 $tpl->tpl_vars = array(); | 
					
						
							|  |  |  |                 $tpl->config_vars = array(); | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |             } else { | 
					
						
							|  |  |  |                 $tpl = new $this->template_class($template, $this, $parent, $cache_id, $compile_id); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         // fill data if present
 | 
					
						
							|  |  |  |         if (!empty($data) && is_array($data)) { | 
					
						
							|  |  |  |             // set up variable values
 | 
					
						
							|  |  |  |             foreach ($data as $_key => $_val) { | 
					
						
							|  |  |  |                 $tpl->tpl_vars[$_key] = new Smarty_variable($_val); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         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 | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string $plugin_name    class plugin name to load | 
					
						
							|  |  |  |      * @param bool   $check          check if already loaded | 
					
						
							|  |  |  |      * @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
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2010-11-13 04:10:52 +00:00
										 |  |  |         // if function or class exists, exit silently (already loaded)
 | 
					
						
							| 
									
										
										
										
											2011-10-14 16:22:00 +00:00
										 |  |  |         if ($check && (is_callable($plugin_name) || class_exists($plugin_name, false))) { | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |             return true; | 
					
						
							| 
									
										
										
										
											2011-10-14 16:22:00 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2010-11-13 04:10:52 +00:00
										 |  |  |         // Plugin name is expected to be: Smarty_[Type]_[Name]
 | 
					
						
							| 
									
										
										
										
											2011-09-21 19:06:16 +00:00
										 |  |  |         $_name_parts = explode('_', $plugin_name, 3); | 
					
						
							| 
									
										
										
										
											2010-11-13 04:10:52 +00:00
										 |  |  |         // class name must have three parts to be valid plugin
 | 
					
						
							| 
									
										
										
										
											2011-09-21 22:02:54 +00:00
										 |  |  |         // count($_name_parts) < 3 === !isset($_name_parts[2])
 | 
					
						
							|  |  |  |         if (!isset($_name_parts[2]) || strtolower($_name_parts[0]) !== 'smarty') { | 
					
						
							| 
									
										
										
										
											2010-11-13 04:10:52 +00:00
										 |  |  |             throw new SmartyException("plugin {$plugin_name} is not a valid name format"); | 
					
						
							|  |  |  |             return false; | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2010-11-13 04:10:52 +00:00
										 |  |  |         // if type is "internal", get plugin from sysplugins
 | 
					
						
							| 
									
										
										
										
											2011-09-21 19:06:16 +00:00
										 |  |  |         if (strtolower($_name_parts[1]) == 'internal') { | 
					
						
							|  |  |  |             $file = SMARTY_SYSPLUGINS_DIR . strtolower($plugin_name) . '.php'; | 
					
						
							| 
									
										
										
										
											2010-11-13 04:10:52 +00:00
										 |  |  |             if (file_exists($file)) { | 
					
						
							|  |  |  |                 require_once($file); | 
					
						
							|  |  |  |                 return $file; | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 return false; | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2010-11-13 04:10:52 +00:00
										 |  |  |         // plugin filename is expected to be: [type].[name].php
 | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |         $_plugin_filename = "{$_name_parts[1]}.{$_name_parts[2]}.php"; | 
					
						
							| 
									
										
										
										
											2012-02-06 20:45:10 +00:00
										 |  |  |          | 
					
						
							|  |  |  |         $_stream_resolve_include_path = function_exists('stream_resolve_include_path'); | 
					
						
							| 
									
										
										
										
											2011-10-14 16:22:00 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-11-13 04:10:52 +00:00
										 |  |  |         // loop through plugin dirs and find the plugin
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         foreach($this->getPluginsDir() as $_plugin_dir) { | 
					
						
							| 
									
										
										
										
											2011-09-21 22:02:54 +00:00
										 |  |  |             $names = array( | 
					
						
							| 
									
										
										
										
											2011-09-21 22:45:21 +00:00
										 |  |  |                 $_plugin_dir . $_plugin_filename, | 
					
						
							| 
									
										
										
										
											2011-09-21 22:02:54 +00:00
										 |  |  |                 $_plugin_dir . strtolower($_plugin_filename), | 
					
						
							|  |  |  |             ); | 
					
						
							| 
									
										
										
										
											2011-09-21 19:06:16 +00:00
										 |  |  |             foreach ($names as $file) { | 
					
						
							|  |  |  |                 if (file_exists($file)) { | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |                     require_once($file); | 
					
						
							|  |  |  |                     return $file; | 
					
						
							|  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2011-09-21 19:06:16 +00:00
										 |  |  |                 if ($this->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_plugin_dir)) { | 
					
						
							|  |  |  |                     // try PHP include_path
 | 
					
						
							| 
									
										
										
										
											2012-02-06 20:45:10 +00:00
										 |  |  |                     if ($_stream_resolve_include_path) { | 
					
						
							|  |  |  |                         $file = stream_resolve_include_path($file); | 
					
						
							|  |  |  |                     } else { | 
					
						
							|  |  |  |                         $file = Smarty_Internal_Get_Include_Path::getIncludePath($file); | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                      | 
					
						
							|  |  |  |                     if ($file !== false) { | 
					
						
							| 
									
										
										
										
											2011-09-21 19:06:16 +00:00
										 |  |  |                         require_once($file); | 
					
						
							|  |  |  |                         return $file; | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |             } | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2010-11-13 04:10:52 +00:00
										 |  |  |         // no plugin loaded
 | 
					
						
							|  |  |  |         return false; | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-11-13 04:10:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Compile all template files | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string $extension file extension | 
					
						
							|  |  |  |      * @param bool $force_compile force all to recompile | 
					
						
							|  |  |  |      * @param int $time_limit | 
					
						
							|  |  |  |      * @param int $max_errors | 
					
						
							|  |  |  |      * @return integer number of template files recompiled | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function compileAllTemplates($extention = '.tpl', $force_compile = false, $time_limit = 0, $max_errors = null) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return Smarty_Internal_Utility::compileAllTemplates($extention, $force_compile, $time_limit, $max_errors, $this); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Compile all config files | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string $extension file extension | 
					
						
							|  |  |  |      * @param bool $force_compile force all to recompile | 
					
						
							|  |  |  |      * @param int $time_limit | 
					
						
							|  |  |  |      * @param int $max_errors | 
					
						
							|  |  |  |      * @return integer number of template files recompiled | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function compileAllConfig($extention = '.conf', $force_compile = false, $time_limit = 0, $max_errors = null) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return Smarty_Internal_Utility::compileAllConfig($extention, $force_compile, $time_limit, $max_errors, $this); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Delete compiled template file | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string $resource_name template name | 
					
						
							|  |  |  |      * @param string $compile_id compile id | 
					
						
							|  |  |  |      * @param integer $exp_time expiration time | 
					
						
							|  |  |  |      * @return integer number of template files deleted | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function clearCompiledTemplate($resource_name = null, $compile_id = null, $exp_time = null) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return Smarty_Internal_Utility::clearCompiledTemplate($resource_name, $compile_id, $exp_time, $this); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-26 18:09:31 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |      * Return array of tag/attributes of all tags used by an template | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param object $templae template object | 
					
						
							|  |  |  |      * @return array of tag/attributes | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-07-26 18:09:31 +00:00
										 |  |  |     public function getTags(Smarty_Internal_Template $template) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return Smarty_Internal_Utility::getTags($template); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |      * Run installation test | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param array $errors Array to write errors into, rather than outputting them | 
					
						
							|  |  |  |      * @return boolean true if setup is fine, false if something is wrong | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function testInstall(&$errors=null) | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         return Smarty_Internal_Utility::testInstall($this, $errors); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2011-09-23 20:21:16 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-21 22:02:54 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Error Handler to mute expected messages | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @link http://php.net/set_error_handler | 
					
						
							|  |  |  |      * @param integer $errno Error level | 
					
						
							|  |  |  |      * @return boolean | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-09-24 12:56:52 +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
 | 
					
						
							|  |  |  |         if (!isset(Smarty::$_muted_directories[SMARTY_DIR])) { | 
					
						
							|  |  |  |             $smarty_dir = realpath(SMARTY_DIR); | 
					
						
							|  |  |  |             Smarty::$_muted_directories[SMARTY_DIR] = array( | 
					
						
							|  |  |  |                 'file' => $smarty_dir, | 
					
						
							|  |  |  |                 'length' => strlen($smarty_dir), | 
					
						
							|  |  |  |             ); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											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); | 
					
						
							|  |  |  |                 $dir = array( | 
					
						
							|  |  |  |                     'file' => $file, | 
					
						
							|  |  |  |                     'length' => strlen($file), | 
					
						
							|  |  |  |                 ); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             if (!strncmp($errfile, $dir['file'], $dir['length'])) { | 
					
						
							|  |  |  |                 $_is_muted_directory = true; | 
					
						
							|  |  |  |                 break; | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2011-09-24 12:56:52 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-09-24 14:12:36 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-24 12:56:52 +00:00
										 |  |  |         // pass to next error handler if this error did not occur inside SMARTY_DIR
 | 
					
						
							|  |  |  |         // 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) { | 
					
						
							|  |  |  |                 return call_user_func(Smarty::$_previous_error_handler, $errno, $errstr, $errfile, $errline, $errcontext); | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 return false; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public static function muteExpectedErrors() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											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. | 
					
						
							|  |  |  |         */ | 
					
						
							| 
									
										
										
										
											2011-09-24 12:56:52 +00:00
										 |  |  |         $error_handler = array('Smarty', 'mutingErrorHandler'); | 
					
						
							|  |  |  |         $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 | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public static function unmuteExpectedErrors() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											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
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-18 18:48:07 +00:00
										 |  |  | // let PCRE (preg_*) treat strings as ISO-8859-1 if we're not dealing with UTF-8
 | 
					
						
							| 
									
										
										
										
											2011-12-18 18:20:09 +00:00
										 |  |  | if (Smarty::$_CHARSET !== 'UTF-8') { | 
					
						
							|  |  |  |     Smarty::$_UTF8_MODIFIER = ''; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-17 15:39:51 +00:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |  * Smarty exception class | 
					
						
							|  |  |  |  * @package Smarty | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  | class SmartyException extends Exception { | 
					
						
							| 
									
										
										
										
											2011-04-22 02:19:14 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2009-10-21 09:49:43 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-17 15:39:51 +00:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |  * Smarty compiler exception class | 
					
						
							|  |  |  |  * @package Smarty | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  | class SmartyCompilerException extends SmartyException  { | 
					
						
							| 
									
										
										
										
											2010-08-13 10:39:51 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-17 15:39:51 +00:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2011-12-18 16:55:28 +00:00
										 |  |  |  * Autoloader | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  | function smartyAutoload($class) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     $_class = strtolower($class); | 
					
						
							| 
									
										
										
										
											2011-09-21 22:10:52 +00:00
										 |  |  |     $_classes = array( | 
					
						
							|  |  |  |         'smarty_config_source' => true, | 
					
						
							|  |  |  |         'smarty_config_compiled' => true, | 
					
						
							|  |  |  |         'smarty_security' => true, | 
					
						
							|  |  |  |         'smarty_cacheresource' => true, | 
					
						
							|  |  |  |         'smarty_cacheresource_custom' => true, | 
					
						
							|  |  |  |         'smarty_cacheresource_keyvaluestore' => true, | 
					
						
							|  |  |  |         'smarty_resource' => true, | 
					
						
							|  |  |  |         'smarty_resource_custom' => true, | 
					
						
							|  |  |  |         'smarty_resource_uncompiled' => true, | 
					
						
							|  |  |  |         'smarty_resource_recompiled' => true, | 
					
						
							|  |  |  |     ); | 
					
						
							| 
									
										
										
										
											2011-09-23 20:21:16 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-21 22:10:52 +00:00
										 |  |  |     if (!strncmp($_class, 'smarty_internal_', 16) || isset($_classes[$_class])) { | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         include SMARTY_SYSPLUGINS_DIR . $_class . '.php'; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-08-13 10:39:51 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-19 14:32:52 +00:00
										 |  |  | ?>
 |