| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  | * Project:     Smarty: the PHP compiling template engine | 
					
						
							|  |  |  | * File:        Smarty.class.php | 
					
						
							| 
									
										
										
										
											2009-10-29 13:39:02 +00:00
										 |  |  | * SVN:         $Id$ | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | *  | 
					
						
							|  |  |  | * This library is free software; you can redistribute it and/or | 
					
						
							|  |  |  | * modify it under the terms of the GNU Lesser General Public | 
					
						
							|  |  |  | * License as published by the Free Software Foundation; either | 
					
						
							|  |  |  | * version 2.1 of the License, or (at your option) any later version. | 
					
						
							|  |  |  | *  | 
					
						
							|  |  |  | * 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  | 
					
						
							|  |  |  | * @package Smarty | 
					
						
							| 
									
										
										
										
											2009-10-29 13:39:02 +00:00
										 |  |  | * @version 3-SVN$Rev: 3286 $ | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-29 22:57:29 +00:00
										 |  |  | /** | 
					
						
							|  |  |  | * define shorthand directory separator constant | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | if (!defined('DS')) { | 
					
						
							| 
									
										
										
										
											2009-09-01 21:11:42 +00:00
										 |  |  |     define('DS', DIRECTORY_SEPARATOR); | 
					
						
							|  |  |  | }  | 
					
						
							| 
									
										
										
										
											2009-08-29 22:57:29 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | /** | 
					
						
							|  |  |  | * set SMARTY_DIR to absolute path to Smarty library files. | 
					
						
							| 
									
										
										
										
											2009-08-30 18:10:01 +00:00
										 |  |  | * 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); | 
					
						
							| 
									
										
										
										
											2009-04-10 01:15:53 +00:00
										 |  |  | }  | 
					
						
							| 
									
										
										
										
											2009-04-06 02:53:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-30 18:10:01 +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. | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | if (!defined('SMARTY_SYSPLUGINS_DIR')) { | 
					
						
							| 
									
										
										
										
											2009-09-01 21:11:42 +00:00
										 |  |  |     define('SMARTY_SYSPLUGINS_DIR', SMARTY_DIR . 'sysplugins' . DS); | 
					
						
							| 
									
										
										
										
											2009-08-30 18:10:01 +00:00
										 |  |  | }  | 
					
						
							| 
									
										
										
										
											2009-09-19 13:22:32 +00:00
										 |  |  | if (!defined('SMARTY_PLUGINS_DIR')) { | 
					
						
							|  |  |  |     define('SMARTY_PLUGINS_DIR', SMARTY_DIR . 'plugins' . DS); | 
					
						
							|  |  |  | }  | 
					
						
							|  |  |  | if (!defined('SMARTY_RESOURCE_CHAR_SET')) { | 
					
						
							|  |  |  |     define('SMARTY_RESOURCE_CHAR_SET', 'UTF-8'); | 
					
						
							|  |  |  | }  | 
					
						
							| 
									
										
										
										
											2009-11-17 17:46:03 +00:00
										 |  |  | if (!defined('SMARTY_RESOURCE_DATE_FORMAT')) { | 
					
						
							|  |  |  |     define('SMARTY_RESOURCE_DATE_FORMAT', '%b %e, %Y'); | 
					
						
							|  |  |  | }  | 
					
						
							| 
									
										
										
										
											2009-11-27 20:46:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-06 02:53:09 +00:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2009-04-10 01:15:53 +00:00
										 |  |  | * define variable scopes | 
					
						
							| 
									
										
										
										
											2009-04-06 02:53:09 +00:00
										 |  |  | */ | 
					
						
							| 
									
										
										
										
											2009-04-10 01:15:53 +00:00
										 |  |  | define('SMARTY_LOCAL_SCOPE', 0); | 
					
						
							|  |  |  | define('SMARTY_PARENT_SCOPE', 1); | 
					
						
							|  |  |  | define('SMARTY_ROOT_SCOPE', 2); | 
					
						
							| 
									
										
										
										
											2009-04-10 12:33:51 +00:00
										 |  |  | define('SMARTY_GLOBAL_SCOPE', 3); | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-26 16:56:17 +00:00
										 |  |  | /** | 
					
						
							|  |  |  | * define caching modes | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | define('SMARTY_CACHING_OFF', 0); | 
					
						
							|  |  |  | define('SMARTY_CACHING_LIFETIME_CURRENT', 1); | 
					
						
							| 
									
										
										
										
											2009-10-31 00:44:58 +00:00
										 |  |  | define('SMARTY_CACHING_LIFETIME_SAVED', 2); | 
					
						
							| 
									
										
										
										
											2009-04-26 16:56:17 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-29 16:23:35 +00:00
										 |  |  | /** | 
					
						
							|  |  |  | * This determines how Smarty handles "<?php ... ?>" tags in templates. | 
					
						
							|  |  |  | * possible values: | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | define('SMARTY_PHP_PASSTHRU', 0); //-> print tags as plain text
 | 
					
						
							|  |  |  | define('SMARTY_PHP_QUOTE', 1); //-> escape tags as entities
 | 
					
						
							|  |  |  | define('SMARTY_PHP_REMOVE', 2); //-> escape tags as entities
 | 
					
						
							|  |  |  | define('SMARTY_PHP_ALLOW', 3); //-> escape tags as entities
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2009-10-21 09:49:43 +00:00
										 |  |  | * register the class autoloader | 
					
						
							| 
									
										
										
										
											2009-10-31 00:44:58 +00:00
										 |  |  | */ | 
					
						
							| 
									
										
										
										
											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); | 
					
						
							| 
									
										
										
										
											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(); | 
					
						
							|  |  |  |     }  | 
					
						
							|  |  |  | } else { | 
					
						
							|  |  |  |     spl_autoload_register('smartyAutoload'); | 
					
						
							| 
									
										
										
										
											2009-11-14 13:02:48 +00:00
										 |  |  | }  | 
					
						
							| 
									
										
										
										
											2009-11-06 16:51:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | /** | 
					
						
							|  |  |  | * This is the main Smarty class | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | class Smarty extends Smarty_Internal_TemplateBase { | 
					
						
							|  |  |  |     // smarty version
 | 
					
						
							| 
									
										
										
										
											2009-11-03 20:38:38 +00:00
										 |  |  |     public static $_version = 'Smarty3-SVN$Rev: 3286 $';  | 
					
						
							| 
									
										
										
										
											2009-09-19 13:22:32 +00:00
										 |  |  |     // auto literal on delimiters with whitspace
 | 
					
						
							|  |  |  |     public $auto_literal = true;  | 
					
						
							| 
									
										
										
										
											2009-10-31 00:44:58 +00:00
										 |  |  |     // display error on not assigned variables
 | 
					
						
							|  |  |  |     public $error_unassigned = false;  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     // template directory
 | 
					
						
							| 
									
										
										
										
											2009-04-10 01:15:53 +00:00
										 |  |  |     public $template_dir = null;  | 
					
						
							| 
									
										
										
										
											2009-04-03 15:59:40 +00:00
										 |  |  |     // default template handler
 | 
					
						
							|  |  |  |     public $default_template_handler_func = null;  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     // compile directory
 | 
					
						
							|  |  |  |     public $compile_dir = null;  | 
					
						
							|  |  |  |     // plugins directory
 | 
					
						
							|  |  |  |     public $plugins_dir = null;  | 
					
						
							|  |  |  |     // cache directory
 | 
					
						
							|  |  |  |     public $cache_dir = null;  | 
					
						
							|  |  |  |     // config directory
 | 
					
						
							|  |  |  |     public $config_dir = null;  | 
					
						
							|  |  |  |     // force template compiling?
 | 
					
						
							|  |  |  |     public $force_compile = false;  | 
					
						
							| 
									
										
										
										
											2009-03-31 14:20:10 +00:00
										 |  |  |     // check template for modifications?
 | 
					
						
							|  |  |  |     public $compile_check = true;  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     // use sub dirs for compiled/cached files?
 | 
					
						
							|  |  |  |     public $use_sub_dirs = false;  | 
					
						
							|  |  |  |     // compile_error?
 | 
					
						
							|  |  |  |     public $compile_error = false;  | 
					
						
							|  |  |  |     // caching enabled
 | 
					
						
							|  |  |  |     public $caching = false;  | 
					
						
							| 
									
										
										
										
											2009-10-13 19:44:38 +00:00
										 |  |  |     // merge compiled includea
 | 
					
						
							| 
									
										
										
										
											2009-11-18 17:25:18 +00:00
										 |  |  |     public $merge_compiled_includes = false;  | 
					
						
							| 
									
										
										
										
											2009-09-01 21:11:42 +00:00
										 |  |  |     // cache lifetime
 | 
					
						
							|  |  |  |     public $cache_lifetime = 0;  | 
					
						
							| 
									
										
										
										
											2009-08-27 14:59:28 +00:00
										 |  |  |     // force cache file creation
 | 
					
						
							|  |  |  |     public $force_cache = false;  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     // cache_id
 | 
					
						
							|  |  |  |     public $cache_id = null;  | 
					
						
							|  |  |  |     // compile_id
 | 
					
						
							|  |  |  |     public $compile_id = null;  | 
					
						
							|  |  |  |     // template delimiters
 | 
					
						
							|  |  |  |     public $left_delimiter = "{"; | 
					
						
							|  |  |  |     public $right_delimiter = "}";  | 
					
						
							|  |  |  |     // security
 | 
					
						
							| 
									
										
										
										
											2009-11-03 20:38:38 +00:00
										 |  |  |     public $security_class = 'Smarty_Security'; | 
					
						
							| 
									
										
										
										
											2009-09-29 16:23:35 +00:00
										 |  |  |     public $php_handling = SMARTY_PHP_PASSTHRU; | 
					
						
							| 
									
										
										
										
											2009-09-30 22:03:41 +00:00
										 |  |  |     public $allow_php_tag = false; | 
					
						
							|  |  |  |     public $allow_php_templates = false; | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     public $security = false; | 
					
						
							|  |  |  |     public $security_policy = null; | 
					
						
							|  |  |  |     public $security_handler = null; | 
					
						
							|  |  |  |     public $direct_access_security = true;  | 
					
						
							|  |  |  |     // debug mode
 | 
					
						
							|  |  |  |     public $debugging = false; | 
					
						
							|  |  |  |     public $debugging_ctrl = 'URL'; | 
					
						
							|  |  |  |     public $smarty_debug_id = 'SMARTY_DEBUG'; | 
					
						
							| 
									
										
										
										
											2009-08-08 17:28:23 +00:00
										 |  |  |     public $debug_tpl = null;  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     // When set, smarty does uses this value as error_reporting-level.
 | 
					
						
							| 
									
										
										
										
											2009-05-06 07:46:08 +00:00
										 |  |  |     public $error_reporting = null;  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     // config var settings
 | 
					
						
							|  |  |  |     public $config_overwrite = true; //Controls whether variables with the same name overwrite each other.
 | 
					
						
							|  |  |  |     public $config_booleanize = true; //Controls whether config values of on/true/yes and off/false/no get converted to boolean
 | 
					
						
							| 
									
										
										
										
											2009-11-27 20:46:56 +00:00
										 |  |  |     public $config_read_hidden = true; //Controls whether hidden config sections/vars are read from the file.                                            
 | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     // config vars
 | 
					
						
							|  |  |  |     public $config_vars = array();  | 
					
						
							|  |  |  |     // assigned tpl vars
 | 
					
						
							|  |  |  |     public $tpl_vars = array();  | 
					
						
							|  |  |  |     // assigned global tpl vars
 | 
					
						
							|  |  |  |     public $global_tpl_vars = array();  | 
					
						
							|  |  |  |     // dummy parent object
 | 
					
						
							| 
									
										
										
										
											2009-05-05 17:19:33 +00:00
										 |  |  |     public $parent = null;  | 
					
						
							| 
									
										
										
										
											2009-04-30 17:39:17 +00:00
										 |  |  |     // global template functions
 | 
					
						
							|  |  |  |     public $template_functions = null;  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     // resource type used if none given
 | 
					
						
							|  |  |  |     public $default_resource_type = 'file';  | 
					
						
							|  |  |  |     // caching type
 | 
					
						
							| 
									
										
										
										
											2009-11-27 20:46:56 +00:00
										 |  |  |     public $caching_type = 'file';  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     // internal cache resource types
 | 
					
						
							| 
									
										
										
										
											2009-11-27 20:46:56 +00:00
										 |  |  |     public $cache_resource_types = array('file');  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     // config type
 | 
					
						
							|  |  |  |     public $default_config_type = 'file';  | 
					
						
							|  |  |  |     // class used for cacher
 | 
					
						
							|  |  |  |     public $cacher_class = 'Smarty_Internal_Cacher_InlineCode';  | 
					
						
							| 
									
										
										
										
											2009-08-29 22:57:29 +00:00
										 |  |  |     // exception handler: array('ExceptionClass','ExceptionMethod');
 | 
					
						
							| 
									
										
										
										
											2009-09-01 21:11:42 +00:00
										 |  |  |     public $exception_handler = null;  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     // cached template objects
 | 
					
						
							| 
									
										
										
										
											2009-05-05 17:19:33 +00:00
										 |  |  |     public $template_objects = null;  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     // check If-Modified-Since headers
 | 
					
						
							|  |  |  |     public $cache_modified_check = false;  | 
					
						
							| 
									
										
										
										
											2009-10-04 18:12:30 +00:00
										 |  |  |     // cached objects
 | 
					
						
							| 
									
										
										
										
											2009-10-13 19:44:38 +00:00
										 |  |  |     public $resource_objects = array();  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     // registered plugins
 | 
					
						
							|  |  |  |     public $registered_plugins = array();  | 
					
						
							|  |  |  |     // plugin search order
 | 
					
						
							|  |  |  |     public $plugin_search_order = array('function', 'block', 'compiler', 'class');  | 
					
						
							|  |  |  |     // plugin handler object
 | 
					
						
							|  |  |  |     public $plugin_handler = null;  | 
					
						
							| 
									
										
										
										
											2009-04-03 15:59:40 +00:00
										 |  |  |     // default plugin handler
 | 
					
						
							|  |  |  |     public $default_plugin_handler_func = null;  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     // registered objects
 | 
					
						
							|  |  |  |     public $registered_objects = array();  | 
					
						
							|  |  |  |     // registered filters
 | 
					
						
							|  |  |  |     public $registered_filters = array();  | 
					
						
							|  |  |  |     // filter handler
 | 
					
						
							|  |  |  |     public $filter_handler = null;  | 
					
						
							| 
									
										
										
										
											2009-04-10 01:15:53 +00:00
										 |  |  |     // autoload filter
 | 
					
						
							|  |  |  |     public $autoload_filters = array();  | 
					
						
							|  |  |  |     // status of filter on variable output
 | 
					
						
							| 
									
										
										
										
											2009-04-10 12:33:51 +00:00
										 |  |  |     public $variable_filter = true;  | 
					
						
							|  |  |  |     // global internal smarty  vars
 | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     public $_smarty_vars = array();  | 
					
						
							|  |  |  |     // start time for execution time calculation
 | 
					
						
							| 
									
										
										
										
											2009-10-31 00:44:58 +00:00
										 |  |  |     public $start_time = 0;  | 
					
						
							|  |  |  |     // default file permissions
 | 
					
						
							|  |  |  |     public $_file_perms = 0644;  | 
					
						
							|  |  |  |     // default dir permissions
 | 
					
						
							| 
									
										
										
										
											2009-11-03 20:38:38 +00:00
										 |  |  |     public $_dir_perms = 0771;  | 
					
						
							| 
									
										
										
										
											2009-11-03 15:51:29 +00:00
										 |  |  |     // smarty object reference
 | 
					
						
							|  |  |  |     public $smarty = null; | 
					
						
							| 
									
										
										
										
											2009-10-31 00:44:58 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |     * Class constructor, initializes basic smarty properties | 
					
						
							|  |  |  |     */ | 
					
						
							| 
									
										
										
										
											2009-09-29 16:23:35 +00:00
										 |  |  |     public function __construct() | 
					
						
							| 
									
										
										
										
											2009-10-31 00:44:58 +00:00
										 |  |  |     {  | 
					
						
							| 
									
										
										
										
											2009-11-03 15:51:29 +00:00
										 |  |  |         // self reference needed by other classes methods
 | 
					
						
							| 
									
										
										
										
											2009-09-19 13:22:32 +00:00
										 |  |  |         $this->smarty = $this; | 
					
						
							| 
									
										
										
										
											2009-09-29 16:23:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-10 15:52:59 +00:00
										 |  |  |         if (is_callable('mb_internal_encoding')) { | 
					
						
							| 
									
										
										
										
											2009-09-19 13:22:32 +00:00
										 |  |  |             mb_internal_encoding(SMARTY_RESOURCE_CHAR_SET); | 
					
						
							| 
									
										
										
										
											2009-04-10 15:52:59 +00:00
										 |  |  |         }  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |         $this->start_time = $this->_get_time();  | 
					
						
							|  |  |  |         // set exception handler
 | 
					
						
							| 
									
										
										
										
											2009-08-29 22:57:29 +00:00
										 |  |  |         if (!empty($this->exception_handler)) | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |             set_exception_handler($this->exception_handler);  | 
					
						
							|  |  |  |         // set default dirs
 | 
					
						
							| 
									
										
										
										
											2009-08-29 22:57:29 +00:00
										 |  |  |         $this->template_dir = array('.' . DS . 'templates' . DS); | 
					
						
							|  |  |  |         $this->compile_dir = '.' . DS . 'templates_c' . DS; | 
					
						
							| 
									
										
										
										
											2009-09-19 13:22:32 +00:00
										 |  |  |         $this->plugins_dir = array(SMARTY_PLUGINS_DIR); | 
					
						
							| 
									
										
										
										
											2009-08-29 22:57:29 +00:00
										 |  |  |         $this->cache_dir = '.' . DS . 'cache' . DS; | 
					
						
							|  |  |  |         $this->config_dir = '.' . DS . 'configs' . DS; | 
					
						
							| 
									
										
										
										
											2009-10-31 00:44:58 +00:00
										 |  |  |         $this->debug_tpl = SMARTY_DIR . 'debug.tpl'; | 
					
						
							| 
									
										
										
										
											2009-08-08 17:28:23 +00:00
										 |  |  |         $this->plugin_handler = new Smarty_Internal_Plugin_Handler($this); | 
					
						
							|  |  |  |         $this->filter_handler = new Smarty_Internal_Run_Filter($this); | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |         if (!$this->debugging && $this->debugging_ctrl == 'URL') { | 
					
						
							| 
									
										
										
										
											2009-04-26 16:56:17 +00:00
										 |  |  |             if (isset($_SERVER['QUERY_STRING'])) { | 
					
						
							|  |  |  |                 $_query_string = $_SERVER['QUERY_STRING']; | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 $_query_string = ''; | 
					
						
							|  |  |  |             }  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |             if (false !== strpos($_query_string, $this->smarty_debug_id)) { | 
					
						
							|  |  |  |                 if (false !== strpos($_query_string, $this->smarty_debug_id . '=on')) { | 
					
						
							|  |  |  |                     // enable debugging for this browser session
 | 
					
						
							|  |  |  |                     setcookie('SMARTY_DEBUG', true); | 
					
						
							|  |  |  |                     $this->debugging = true; | 
					
						
							|  |  |  |                 } elseif (false !== strpos($_query_string, $this->smarty_debug_id . '=off')) { | 
					
						
							|  |  |  |                     // disable debugging for this browser session
 | 
					
						
							|  |  |  |                     setcookie('SMARTY_DEBUG', false); | 
					
						
							|  |  |  |                     $this->debugging = false; | 
					
						
							|  |  |  |                 } else { | 
					
						
							|  |  |  |                     // enable debugging for this page
 | 
					
						
							|  |  |  |                     $this->debugging = true; | 
					
						
							|  |  |  |                 }  | 
					
						
							|  |  |  |             } else { | 
					
						
							| 
									
										
										
										
											2009-06-22 14:23:21 +00:00
										 |  |  |                 if (isset($_COOKIE['SMARTY_DEBUG'])) { | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |                     $this->debugging = true; | 
					
						
							|  |  |  |                 }  | 
					
						
							|  |  |  |             }  | 
					
						
							|  |  |  |         }  | 
					
						
							| 
									
										
										
										
											2009-08-24 19:26:31 +00:00
										 |  |  |         $this->assign_global('SCRIPT_NAME', $_SERVER['SCRIPT_NAME']); | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |     * Class destructor | 
					
						
							|  |  |  |     */ | 
					
						
							|  |  |  |     public function __destruct() | 
					
						
							|  |  |  |     {  | 
					
						
							|  |  |  |         // restore to previous exception handler, if any
 | 
					
						
							| 
									
										
										
										
											2009-08-29 22:57:29 +00:00
										 |  |  |         if (!empty($this->exception_handler)) | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |             restore_exception_handler(); | 
					
						
							|  |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |     * fetches a rendered Smarty template | 
					
						
							|  |  |  |     *  | 
					
						
							|  |  |  |     * @param string $template the resource handle of the template file or template object | 
					
						
							|  |  |  |     * @param mixed $cache_id cache id to be used with this template | 
					
						
							|  |  |  |     * @param mixed $compile_id compile id to be used with this template | 
					
						
							| 
									
										
										
										
											2009-09-29 20:36:29 +00:00
										 |  |  |     * @param object $ |null $parent next higher level of Smarty variables | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     * @return string rendered template output | 
					
						
							|  |  |  |     */ | 
					
						
							| 
									
										
										
										
											2009-09-19 13:22:32 +00:00
										 |  |  |     public function fetch($template, $cache_id = null, $compile_id = null, $parent = null) | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-09-29 20:36:29 +00:00
										 |  |  |         if (is_object($cache_id)) { | 
					
						
							|  |  |  |             $parent = $cache_id; | 
					
						
							|  |  |  |             $cache_id = null; | 
					
						
							|  |  |  |         }  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |         if ($parent === null) { | 
					
						
							|  |  |  |             // get default Smarty data object
 | 
					
						
							|  |  |  |             $parent = $this; | 
					
						
							|  |  |  |         }  | 
					
						
							|  |  |  |         // create template object if necessary
 | 
					
						
							|  |  |  |         ($template instanceof $this->template_class)? $_template = $template : | 
					
						
							| 
									
										
										
										
											2009-09-19 13:22:32 +00:00
										 |  |  |         $_template = $this->createTemplate ($template, $cache_id, $compile_id, $parent); | 
					
						
							| 
									
										
										
										
											2009-03-22 22:35:10 +00:00
										 |  |  |         $_smarty_old_error_level = $this->debugging ? error_reporting() : error_reporting(isset($this->error_reporting) | 
					
						
							|  |  |  |             ? $this->error_reporting : error_reporting() &~E_NOTICE);  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |         // return redered template
 | 
					
						
							| 
									
										
										
										
											2009-11-14 13:02:48 +00:00
										 |  |  |         if (isset($this->autoload_filters['output']) || isset($this->registered_filters['output'])) { | 
					
						
							|  |  |  |             $_output = $this->filter_handler->execute('output', $_template->getRenderedTemplate()); | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $_output = $_template->getRenderedTemplate(); | 
					
						
							|  |  |  |         }  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |         $_template->rendered_content = null; | 
					
						
							| 
									
										
										
										
											2009-03-22 22:35:10 +00:00
										 |  |  |         error_reporting($_smarty_old_error_level); | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |         return $_output; | 
					
						
							|  |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |     * displays a Smarty template | 
					
						
							|  |  |  |     *  | 
					
						
							|  |  |  |     * @param string $ |object $template the resource handle of the template file  or template object | 
					
						
							|  |  |  |     * @param mixed $cache_id cache id to be used with this template | 
					
						
							|  |  |  |     * @param mixed $compile_id compile id to be used with this template | 
					
						
							| 
									
										
										
										
											2009-09-29 20:36:29 +00:00
										 |  |  |     * @param object $parent next higher level of Smarty variables | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     */ | 
					
						
							| 
									
										
										
										
											2009-09-19 13:22:32 +00:00
										 |  |  |     public function display($template, $cache_id = null, $compile_id = null, $parent = null) | 
					
						
							| 
									
										
										
										
											2009-11-27 20:46:56 +00:00
										 |  |  |     {  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |         // display template
 | 
					
						
							| 
									
										
										
										
											2009-09-19 13:22:32 +00:00
										 |  |  |         echo $this->fetch ($template, $cache_id, $compile_id, $parent);  | 
					
						
							| 
									
										
										
										
											2009-10-13 19:44:38 +00:00
										 |  |  |         // debug output
 | 
					
						
							| 
									
										
										
										
											2009-11-11 22:09:06 +00:00
										 |  |  |         if ($this->debugging) { | 
					
						
							|  |  |  |             Smarty_Internal_Debug::display_debug($this); | 
					
						
							|  |  |  |         }  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |         return true; | 
					
						
							|  |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |     * test if cache i valid | 
					
						
							|  |  |  |     *  | 
					
						
							|  |  |  |     * @param string $ |object $template the resource handle of the template file or template object | 
					
						
							|  |  |  |     * @param mixed $cache_id cache id to be used with this template | 
					
						
							|  |  |  |     * @param mixed $compile_id compile id to be used with this template | 
					
						
							|  |  |  |     * @return boolean cache status | 
					
						
							|  |  |  |     */ | 
					
						
							|  |  |  |     public function is_cached($template, $cache_id = null, $compile_id = null) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if (!($template instanceof $this->template_class)) { | 
					
						
							| 
									
										
										
										
											2009-09-20 02:02:44 +00:00
										 |  |  |             $template = $this->createTemplate ($template, $cache_id, $compile_id, $this); | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |         }  | 
					
						
							|  |  |  |         // return cache status of template
 | 
					
						
							|  |  |  |         return $template->isCached(); | 
					
						
							|  |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2009-11-03 20:38:38 +00:00
										 |  |  |     * Loads security class and enables security | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     */ | 
					
						
							| 
									
										
										
										
											2009-11-03 20:38:38 +00:00
										 |  |  |     public function enableSecurity() | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-11-03 20:38:38 +00:00
										 |  |  |         if (isset($this->security_class)) { | 
					
						
							|  |  |  |             $this->security_policy = new $this->security_class; | 
					
						
							| 
									
										
										
										
											2009-08-08 17:28:23 +00:00
										 |  |  |             $this->security_handler = new Smarty_Internal_Security_Handler($this); | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |             $this->security = true; | 
					
						
							|  |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2009-11-03 20:38:38 +00:00
										 |  |  |             throw new Exception('Property security_class is not defined'); | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |         }  | 
					
						
							|  |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-30 17:05:37 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |     * Set template directory | 
					
						
							|  |  |  |     *  | 
					
						
							|  |  |  |     * @param string $ |array $template_dir folder(s) of template sorces | 
					
						
							|  |  |  |     */ | 
					
						
							|  |  |  |     public function setTemplateDir($template_dir) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-04-29 17:56:56 +00:00
										 |  |  |         $this->template_dir = (array)$template_dir; | 
					
						
							| 
									
										
										
										
											2009-03-30 17:05:37 +00:00
										 |  |  |         return; | 
					
						
							|  |  |  |     }  | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |     * Adds template directory(s) to existing ones | 
					
						
							|  |  |  |     *  | 
					
						
							| 
									
										
										
										
											2009-03-31 14:20:10 +00:00
										 |  |  |     * @param string $ |array $template_dir folder(s) of template sources | 
					
						
							| 
									
										
										
										
											2009-03-30 17:05:37 +00:00
										 |  |  |     */ | 
					
						
							|  |  |  |     public function addTemplateDir($template_dir) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-04-29 17:56:56 +00:00
										 |  |  |         $this->template_dir = array_merge((array)$this->template_dir, (array)$template_dir); | 
					
						
							|  |  |  |         $this->template_dir = array_unique($this->template_dir); | 
					
						
							| 
									
										
										
										
											2009-03-30 17:05:37 +00:00
										 |  |  |         return; | 
					
						
							|  |  |  |     }  | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |     * Set compile directory | 
					
						
							|  |  |  |     *  | 
					
						
							|  |  |  |     * @param string $compile_dir folder of compiled template sources | 
					
						
							|  |  |  |     */ | 
					
						
							|  |  |  |     public function setCompileDir($compile_dir) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-04-29 17:56:56 +00:00
										 |  |  |         $this->compile_dir = $compile_dir; | 
					
						
							| 
									
										
										
										
											2009-03-30 17:05:37 +00:00
										 |  |  |         return; | 
					
						
							|  |  |  |     }  | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |     * Set cache directory | 
					
						
							|  |  |  |     *  | 
					
						
							|  |  |  |     * @param string $cache_dir folder of cache files | 
					
						
							|  |  |  |     */ | 
					
						
							|  |  |  |     public function setCacheDir($cache_dir) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-04-29 17:56:56 +00:00
										 |  |  |         $this->cache_dir = $cache_dir; | 
					
						
							| 
									
										
										
										
											2009-03-30 17:05:37 +00:00
										 |  |  |         return; | 
					
						
							|  |  |  |     }  | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |     * Enable Caching | 
					
						
							|  |  |  |     */ | 
					
						
							|  |  |  |     public function enableCaching() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-11-30 17:52:13 +00:00
										 |  |  |         $this->caching = SMARTY_CACHING_LIFETIME_CURRENT; | 
					
						
							| 
									
										
										
										
											2009-03-30 17:05:37 +00:00
										 |  |  |         return; | 
					
						
							|  |  |  |     }  | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |     * Set caching life time | 
					
						
							| 
									
										
										
										
											2009-03-31 14:20:10 +00:00
										 |  |  |     *  | 
					
						
							| 
									
										
										
										
											2009-03-30 17:05:37 +00:00
										 |  |  |     * @param integer $lifetime lifetime of cached file in seconds | 
					
						
							|  |  |  |     */ | 
					
						
							| 
									
										
										
										
											2009-09-19 13:22:32 +00:00
										 |  |  |     public function setCacheLifetime($lifetime) | 
					
						
							| 
									
										
										
										
											2009-03-30 17:05:37 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-09-01 22:04:30 +00:00
										 |  |  |         $this->cache_lifetime = $lifetime; | 
					
						
							| 
									
										
										
										
											2009-03-30 17:05:37 +00:00
										 |  |  |         return; | 
					
						
							|  |  |  |     }  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +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 | 
					
						
							|  |  |  |     * @return boolean  | 
					
						
							|  |  |  |     */ | 
					
						
							|  |  |  |     public function loadPlugin($plugin_name) | 
					
						
							|  |  |  |     {  | 
					
						
							|  |  |  |         // if class exists, exit silently (already loaded)
 | 
					
						
							|  |  |  |         if (class_exists($plugin_name, false)) | 
					
						
							|  |  |  |             return true;  | 
					
						
							|  |  |  |         // if callable as function, exit silently (already loaded)
 | 
					
						
							|  |  |  |         if (is_callable($plugin_name)) | 
					
						
							|  |  |  |             return true;  | 
					
						
							|  |  |  |         // Plugin name is expected to be: Smarty_[Type]_[Name]
 | 
					
						
							| 
									
										
										
										
											2009-10-31 00:44:58 +00:00
										 |  |  |         $_plugin_name = strtolower($plugin_name); | 
					
						
							|  |  |  |         $_name_parts = explode('_', $_plugin_name, 3);  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |         // class name must have three parts to be valid plugin
 | 
					
						
							| 
									
										
										
										
											2009-05-05 17:19:33 +00:00
										 |  |  |         if (count($_name_parts) < 3 || $_name_parts[0] !== 'smarty') { | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |             throw new Exception("plugin {$plugin_name} is not a valid name format"); | 
					
						
							|  |  |  |             return false; | 
					
						
							|  |  |  |         }  | 
					
						
							|  |  |  |         // if type is "internal", get plugin from sysplugins
 | 
					
						
							| 
									
										
										
										
											2009-05-05 17:19:33 +00:00
										 |  |  |         if ($_name_parts[1] == 'internal') { | 
					
						
							| 
									
										
										
										
											2009-11-03 20:38:38 +00:00
										 |  |  |             if (file_exists(SMARTY_SYSPLUGINS_DIR . $_plugin_name . '.php')) { | 
					
						
							|  |  |  |                 require_once(SMARTY_SYSPLUGINS_DIR . $_plugin_name . '.php'); | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |                 return true; | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 return false; | 
					
						
							|  |  |  |             }  | 
					
						
							|  |  |  |         }  | 
					
						
							| 
									
										
										
										
											2009-10-31 00:44:58 +00:00
										 |  |  |         // plugin filename is expected to be: [type].[name].php
 | 
					
						
							| 
									
										
										
										
											2009-11-03 20:38:38 +00:00
										 |  |  |         $_plugin_filename = "{$_name_parts[1]}.{$_name_parts[2]}.php";  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |         // loop through plugin dirs and find the plugin
 | 
					
						
							| 
									
										
										
										
											2009-05-05 17:19:33 +00:00
										 |  |  |         foreach((array)$this->plugins_dir as $_plugin_dir) { | 
					
						
							| 
									
										
										
										
											2009-08-08 17:28:23 +00:00
										 |  |  |             if (strpos('/\\', substr($_plugin_dir, -1)) === false) { | 
					
						
							| 
									
										
										
										
											2009-08-29 22:57:29 +00:00
										 |  |  |                 $_plugin_dir .= DS; | 
					
						
							| 
									
										
										
										
											2009-05-06 07:46:08 +00:00
										 |  |  |             }  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-05 17:19:33 +00:00
										 |  |  |             if (file_exists($_plugin_dir . $_plugin_filename)) { | 
					
						
							|  |  |  |                 require_once($_plugin_dir . $_plugin_filename); | 
					
						
							|  |  |  |                 return true; | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |             }  | 
					
						
							|  |  |  |         }  | 
					
						
							|  |  |  |         // no plugin loaded
 | 
					
						
							|  |  |  |         return false; | 
					
						
							|  |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |     * Sets the exception handler for Smarty. | 
					
						
							|  |  |  |     *  | 
					
						
							|  |  |  |     * @param mixed $handler function name or array with object/method names | 
					
						
							|  |  |  |     * @return string previous exception handler | 
					
						
							|  |  |  |     */ | 
					
						
							|  |  |  |     public function setExceptionHandler($handler) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->exception_handler = $handler; | 
					
						
							|  |  |  |         return set_exception_handler($handler); | 
					
						
							|  |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-27 20:46:56 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |     * Loads cache resource. | 
					
						
							|  |  |  |     *  | 
					
						
							|  |  |  |     * @return object of cache resource | 
					
						
							|  |  |  |     */ | 
					
						
							|  |  |  |     public function loadCacheResource($type = null) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if (!isset($type)) { | 
					
						
							|  |  |  |             $type = $this->caching_type; | 
					
						
							|  |  |  |         }  | 
					
						
							|  |  |  |         // already loaded?
 | 
					
						
							|  |  |  |         if (isset($this->cache_resource_objects[$type])) { | 
					
						
							|  |  |  |             return $this->cache_resource_objects[$type]; | 
					
						
							|  |  |  |         }  | 
					
						
							|  |  |  |         if (in_array($type, $this->cache_resource_types)) { | 
					
						
							|  |  |  |             $cache_resource_class = 'Smarty_Internal_CacheResource_' . ucfirst($type); | 
					
						
							|  |  |  |             return $this->cache_resource_objects[$type] = new $cache_resource_class($this); | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             // try plugins dir
 | 
					
						
							|  |  |  |             $cache_resource_class = 'Smarty_CacheResource_' . ucfirst($type); | 
					
						
							|  |  |  |             if ($this->loadPlugin($cache_resource_class)) { | 
					
						
							|  |  |  |                 return $this->cache_resource_objects[$type] = new $cache_resource_class($this); | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 throw new Exception("Unable to load cache resource '{$type}'"); | 
					
						
							|  |  |  |             }  | 
					
						
							|  |  |  |         }  | 
					
						
							|  |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-01 21:11:42 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |     * trigger Smarty error | 
					
						
							|  |  |  |     *  | 
					
						
							|  |  |  |     * @param string $error_msg  | 
					
						
							|  |  |  |     * @param integer $error_type  | 
					
						
							|  |  |  |     */ | 
					
						
							|  |  |  |     public function trigger_error($error_msg, $error_type = E_USER_WARNING) | 
					
						
							| 
									
										
										
										
											2009-10-13 19:44:38 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-09-01 21:11:42 +00:00
										 |  |  |         throw new Exception("Smarty error: $error_msg"); | 
					
						
							|  |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |     * Takes unknown class methods and lazy loads sysplugin files for them | 
					
						
							|  |  |  |     * class name format: Smarty_Method_MethodName | 
					
						
							|  |  |  |     * plugin filename format: method.methodname.php | 
					
						
							|  |  |  |     *  | 
					
						
							|  |  |  |     * @param string $name unknown methode name | 
					
						
							|  |  |  |     * @param array $args aurgument array | 
					
						
							|  |  |  |     */ | 
					
						
							|  |  |  |     public function __call($name, $args) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-11-03 20:38:38 +00:00
										 |  |  |         $name = strtolower($name); | 
					
						
							|  |  |  |         if ($name == 'smarty') { | 
					
						
							| 
									
										
										
										
											2009-11-02 23:04:10 +00:00
										 |  |  |             throw new Exception('Please use parent::__construct() to call parent constuctor'); | 
					
						
							| 
									
										
										
										
											2009-11-03 20:38:38 +00:00
										 |  |  |         }  | 
					
						
							|  |  |  |         $function_name = 'smarty_method_' . $name; | 
					
						
							|  |  |  |         if (!is_callable($function_name)) { | 
					
						
							|  |  |  |             if (!file_exists(SMARTY_SYSPLUGINS_DIR . $function_name . '.php')) { | 
					
						
							|  |  |  |                 throw new Exception('Undefined Smarty method "' . $name . '"'); | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |             }  | 
					
						
							| 
									
										
										
										
											2009-11-03 20:38:38 +00:00
										 |  |  |             require_once(SMARTY_SYSPLUGINS_DIR . $function_name . '.php'); | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |         }  | 
					
						
							| 
									
										
										
										
											2009-11-03 20:38:38 +00:00
										 |  |  |         return call_user_func_array($function_name, array_merge(array($this), $args)); | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     }  | 
					
						
							|  |  |  | }  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-21 09:49:43 +00:00
										 |  |  | function smartyAutoload($class) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-10-31 00:44:58 +00:00
										 |  |  |     $_class = strtolower($class); | 
					
						
							| 
									
										
										
										
											2009-11-06 17:40:20 +00:00
										 |  |  |     if (substr($_class, 0, 16) === 'smarty_internal_' || $_class == 'smarty_security') { | 
					
						
							| 
									
										
										
										
											2009-10-31 00:44:58 +00:00
										 |  |  |         include SMARTY_SYSPLUGINS_DIR . $_class . '.php'; | 
					
						
							| 
									
										
										
										
											2009-10-21 09:49:43 +00:00
										 |  |  |     }  | 
					
						
							|  |  |  | }  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | ?>
 |