| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +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  | 
					
						
							|  |  |  |  * @package Smarty | 
					
						
							|  |  |  |  * @version 3-SVN$Rev: 3286 $ | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-29 22:57:29 +00:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +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); | 
					
						
							|  |  |  | }  | 
					
						
							| 
									
										
										
										
											2009-08-29 22:57:29 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +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); | 
					
						
							| 
									
										
										
										
											2009-04-10 01:15:53 +00:00
										 |  |  | }  | 
					
						
							| 
									
										
										
										
											2009-04-06 02:53:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-30 18:10:01 +00:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +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); | 
					
						
							| 
									
										
										
										
											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
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |  * define variable scopes | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											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
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |  * define caching modes | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2009-04-26 16:56:17 +00:00
										 |  |  | 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
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |  * This determines how Smarty handles "<?php ... ?>" tags in templates. | 
					
						
							|  |  |  |  * possible values: | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2009-09-29 16:23:35 +00:00
										 |  |  | 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
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +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); | 
					
						
							| 
									
										
										
										
											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
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |  * This is the main Smarty class | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2009-12-27 15:06:49 +00:00
										 |  |  | class Smarty extends Smarty_Internal_Data { | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     // smarty version
 | 
					
						
							| 
									
										
										
										
											2009-12-27 15:06:49 +00:00
										 |  |  |     const SMARTY_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;  | 
					
						
							| 
									
										
										
										
											2010-03-31 16:23:01 +00:00
										 |  |  |     // locking concurrent compiles
 | 
					
						
							|  |  |  |     public $compile_locking = 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
 | 
					
						
							| 
									
										
										
										
											2009-12-28 03:22:57 +00:00
										 |  |  |     public $cache_lifetime = 3600;  | 
					
						
							| 
									
										
										
										
											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;  | 
					
						
							| 
									
										
										
										
											2010-07-07 22:08:10 +00:00
										 |  |  |     public $trusted_dir = array(); | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     // debug mode
 | 
					
						
							|  |  |  |     public $debugging = false; | 
					
						
							| 
									
										
										
										
											2010-04-28 20:30:27 +00:00
										 |  |  |     public $debugging_ctrl = 'NONE'; | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     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
 | 
					
						
							| 
									
										
										
										
											2010-03-23 16:51:48 +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
 | 
					
						
							| 
									
										
										
										
											2009-12-29 20:12:11 +00:00
										 |  |  |     public $template_functions = array();  | 
					
						
							| 
									
										
										
										
											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');  | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |     // internal cache resource objects
 | 
					
						
							|  |  |  |     public $cache_resource_objects = array();  | 
					
						
							|  |  |  |     // internal config properties
 | 
					
						
							|  |  |  |     public $properties = array();  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     // config type
 | 
					
						
							|  |  |  |     public $default_config_type = 'file';  | 
					
						
							|  |  |  |     // 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;  | 
					
						
							|  |  |  |     // registered plugins
 | 
					
						
							|  |  |  |     public $registered_plugins = array();  | 
					
						
							|  |  |  |     // plugin search order
 | 
					
						
							|  |  |  |     public $plugin_search_order = array('function', 'block', 'compiler', 'class');  | 
					
						
							|  |  |  |     // registered objects
 | 
					
						
							|  |  |  |     public $registered_objects = array();  | 
					
						
							| 
									
										
										
										
											2010-06-24 20:30:19 +00:00
										 |  |  |     // registered classes
 | 
					
						
							|  |  |  |     public $registered_classes = array();  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     // registered filters
 | 
					
						
							|  |  |  |     public $registered_filters = array();  | 
					
						
							| 
									
										
										
										
											2009-04-10 01:15:53 +00:00
										 |  |  |     // autoload filter
 | 
					
						
							|  |  |  |     public $autoload_filters = array();  | 
					
						
							|  |  |  |     // status of filter on variable output
 | 
					
						
							| 
									
										
										
										
											2010-01-25 19:02:34 +00:00
										 |  |  |     public $variable_filter = true;  | 
					
						
							| 
									
										
										
										
											2010-01-22 16:39:30 +00:00
										 |  |  |     // default modifier
 | 
					
						
							|  |  |  |     public $default_modifiers = array();  | 
					
						
							| 
									
										
										
										
											2009-04-10 12:33:51 +00:00
										 |  |  |     // 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
 | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  |     public $smarty = null;  | 
					
						
							| 
									
										
										
										
											2010-02-09 21:20:17 +00:00
										 |  |  |     // block tag hierarchy
 | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |     public $_tag_stack = array();  | 
					
						
							| 
									
										
										
										
											2010-09-17 18:10:10 +00:00
										 |  |  |     // flag if {block} tag is compiled for template inheritance
 | 
					
						
							|  |  |  |     public $inheritance = false; | 
					
						
							| 
									
										
										
										
											2010-02-14 16:42:39 +00:00
										 |  |  |     // plugins
 | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |     public $_plugins = array();  | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |     // generate deprecated function call notices?
 | 
					
						
							|  |  |  |     public $deprecation_notices = true; | 
					
						
							| 
									
										
										
										
											2009-10-31 00:44:58 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |      * Class constructor, initializes basic smarty properties | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function __construct() | 
					
						
							|  |  |  |     {  | 
					
						
							| 
									
										
										
										
											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
										 |  |  |         }  | 
					
						
							| 
									
										
										
										
											2010-06-20 14:37:47 +00:00
										 |  |  |         $this->start_time = microtime(true);  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |         // 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-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']; | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |             } else { | 
					
						
							| 
									
										
										
										
											2009-04-26 16:56:17 +00:00
										 |  |  |                 $_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; | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |                 } elseif (false !== strpos($_query_string, $this->smarty_debug_id . '=off')) { | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |                     // disable debugging for this browser session
 | 
					
						
							|  |  |  |                     setcookie('SMARTY_DEBUG', false); | 
					
						
							|  |  |  |                     $this->debugging = false; | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |                 } else { | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |                     // enable debugging for this page
 | 
					
						
							|  |  |  |                     $this->debugging = true; | 
					
						
							|  |  |  |                 }  | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |             } 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; | 
					
						
							|  |  |  |                 }  | 
					
						
							|  |  |  |             }  | 
					
						
							|  |  |  |         }  | 
					
						
							| 
									
										
										
										
											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']); | 
					
						
							| 
									
										
										
										
											2010-01-25 19:02:34 +00:00
										 |  |  |         }  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |      * Class destructor | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function __destruct() | 
					
						
							|  |  |  |     {  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |      * 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 | 
					
						
							|  |  |  |      * @param object $ |null $parent next higher level of Smarty variables | 
					
						
							|  |  |  |      * @return string rendered template output | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function fetch($template, $cache_id = null, $compile_id = null, $parent = null, $display = false) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											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);  | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |         // obtain data for cache modified check
 | 
					
						
							|  |  |  |         if ($this->cache_modified_check && $this->caching && $display) { | 
					
						
							|  |  |  |             $_isCached = $_template->isCached() && !$_template->has_nocache_code; | 
					
						
							|  |  |  |             if ($_isCached) { | 
					
						
							|  |  |  |                 $_gmt_mtime = gmdate('D, d M Y H:i:s', $_template->getCachedTimestamp()) . ' GMT'; | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 $_gmt_mtime = ''; | 
					
						
							|  |  |  |             }  | 
					
						
							|  |  |  |         }  | 
					
						
							| 
									
										
										
										
											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'])) { | 
					
						
							| 
									
										
										
										
											2010-03-29 15:41:01 +00:00
										 |  |  |             $_output = Smarty_Internal_Filter_Handler::runFilter('output', $_template->getRenderedTemplate(), $this, $_template); | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2009-11-14 13:02:48 +00:00
										 |  |  |             $_output = $_template->getRenderedTemplate(); | 
					
						
							|  |  |  |         }  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |         $_template->rendered_content = null; | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |         error_reporting($_smarty_old_error_level);  | 
					
						
							|  |  |  |         // display or fetch
 | 
					
						
							|  |  |  |         if ($display) { | 
					
						
							|  |  |  |             if ($this->caching && $this->cache_modified_check) { | 
					
						
							|  |  |  |                 $_last_modified_date = @substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 0, strpos($_SERVER['HTTP_IF_MODIFIED_SINCE'], 'GMT') + 3); | 
					
						
							|  |  |  |                 if ($_isCached && $_gmt_mtime == $_last_modified_date) { | 
					
						
							|  |  |  |                     if (php_sapi_name() == 'cgi') | 
					
						
							|  |  |  |                         header('Status: 304 Not Modified'); | 
					
						
							|  |  |  |                     else | 
					
						
							|  |  |  |                         header('HTTP/1.1 304 Not Modified'); | 
					
						
							|  |  |  |                 } else { | 
					
						
							|  |  |  |                     header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $_template->getCachedTimestamp()) . ' GMT'); | 
					
						
							|  |  |  |                     echo $_output; | 
					
						
							|  |  |  |                 }  | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 echo $_output; | 
					
						
							|  |  |  |             }  | 
					
						
							|  |  |  |             // debug output
 | 
					
						
							|  |  |  |             if ($this->debugging) { | 
					
						
							|  |  |  |                 Smarty_Internal_Debug::display_debug($this); | 
					
						
							|  |  |  |             }  | 
					
						
							|  |  |  |             return; | 
					
						
							|  |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2010-03-23 16:51:48 +00:00
										 |  |  |             // return fetched content
 | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |             return $_output; | 
					
						
							|  |  |  |         }  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |      * 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 | 
					
						
							|  |  |  |      * @param object $parent next higher level of Smarty variables | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function display($template, $cache_id = null, $compile_id = null, $parent = null) | 
					
						
							|  |  |  |     {  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |         // display template
 | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |         $this->fetch ($template, $cache_id, $compile_id, $parent, true); | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |      * 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 isCached($template, $cache_id = null, $compile_id = null) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |         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(); | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  |     }  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-22 16:39:30 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |      * creates a data object | 
					
						
							|  |  |  |      *  | 
					
						
							|  |  |  |      * @param object $parent next higher level of Smarty variables | 
					
						
							|  |  |  |      * @returns object data object | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function createData($parent = null) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2010-01-22 16:39:30 +00:00
										 |  |  |         return new Smarty_Data($parent, $this); | 
					
						
							|  |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |      * creates a template object | 
					
						
							|  |  |  |      *  | 
					
						
							|  |  |  |      * @param string $template the resource handle of the template file | 
					
						
							|  |  |  |      * @param object $parent next higher level of Smarty variables | 
					
						
							|  |  |  |      * @param mixed $cache_id cache id to be used with this template | 
					
						
							|  |  |  |      * @param mixed $compile_id compile id to be used with this template | 
					
						
							|  |  |  |      * @returns object template object | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function createTemplate($template, $cache_id = null, $compile_id = null, $parent = null) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2010-01-22 16:39:30 +00:00
										 |  |  |         if (is_object($cache_id) || is_array($cache_id)) { | 
					
						
							|  |  |  |             $parent = $cache_id; | 
					
						
							|  |  |  |             $cache_id = null; | 
					
						
							|  |  |  |         }  | 
					
						
							|  |  |  |         if (is_array($parent)) { | 
					
						
							|  |  |  |             $data = $parent; | 
					
						
							|  |  |  |             $parent = null; | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2010-01-22 16:39:30 +00:00
										 |  |  |             $data = null; | 
					
						
							|  |  |  |         }  | 
					
						
							|  |  |  |         if (!is_object($template)) { | 
					
						
							|  |  |  |             // we got a template resource
 | 
					
						
							|  |  |  |             // already in template cache?
 | 
					
						
							|  |  |  |             $_templateId = crc32($template . $cache_id . $compile_id); | 
					
						
							|  |  |  |             if (isset($this->template_objects[$_templateId]) && $this->caching) { | 
					
						
							|  |  |  |                 // return cached template object
 | 
					
						
							|  |  |  |                 $tpl = $this->template_objects[$_templateId]; | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |             } else { | 
					
						
							| 
									
										
										
										
											2010-01-22 16:39:30 +00:00
										 |  |  |                 // create new template object
 | 
					
						
							|  |  |  |                 $tpl = new $this->template_class($template, $this, $parent, $cache_id, $compile_id); | 
					
						
							|  |  |  |             }  | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2010-01-22 16:39:30 +00:00
										 |  |  |             // just return a copy of template class
 | 
					
						
							|  |  |  |             $tpl = $template; | 
					
						
							|  |  |  |         }  | 
					
						
							|  |  |  |         // fill data if present
 | 
					
						
							|  |  |  |         if (is_array($data)) { | 
					
						
							|  |  |  |             // set up variable values
 | 
					
						
							|  |  |  |             foreach ($data as $_key => $_val) { | 
					
						
							|  |  |  |                 $tpl->tpl_vars[$_key] = new Smarty_variable($_val); | 
					
						
							|  |  |  |             }  | 
					
						
							|  |  |  |         }  | 
					
						
							|  |  |  |         return $tpl; | 
					
						
							|  |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |      * Loads security class and enables security | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function enableSecurity() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											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; | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2010-08-13 10:39:51 +00:00
										 |  |  |             throw new SmartyException('Property security_class is not defined'); | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |         }  | 
					
						
							|  |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |      * Disable security | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function disableSecurity() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2010-03-09 21:11:21 +00:00
										 |  |  |         $this->security = false; | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-30 17:05:37 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +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; | 
					
						
							|  |  |  |     }  | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-30 17:05:37 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |      * Adds template directory(s) to existing ones | 
					
						
							|  |  |  |      *  | 
					
						
							|  |  |  |      * @param string $ |array $template_dir folder(s) of template sources | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     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; | 
					
						
							|  |  |  |     }  | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-30 17:05:37 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |      * Check if a template resource exists | 
					
						
							|  |  |  |      *  | 
					
						
							|  |  |  |      * @param string $resource_name template name | 
					
						
							|  |  |  |      * @return boolean status | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     function templateExists($resource_name) | 
					
						
							|  |  |  |     {  | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |         // create template object
 | 
					
						
							| 
									
										
										
										
											2010-07-22 19:11:38 +00:00
										 |  |  |         $save = $this->template_objects; | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |         $tpl = new $this->template_class($resource_name, $this);  | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  |         // check if it does exists
 | 
					
						
							| 
									
										
										
										
											2010-07-22 19:11:38 +00:00
										 |  |  |         $result = $tpl->isExisting(); | 
					
						
							|  |  |  |         $this->template_objects = $save; | 
					
						
							|  |  |  |         unset ($tpl); | 
					
						
							|  |  |  |         return $result; | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  |     }  | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +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 string |boolean filepath of loaded file or false | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function loadPlugin($plugin_name, $check = true) | 
					
						
							|  |  |  |     {  | 
					
						
							| 
									
										
										
										
											2009-12-27 15:06:49 +00:00
										 |  |  |         // if function or class exists, exit silently (already loaded)
 | 
					
						
							|  |  |  |         if ($check && (is_callable($plugin_name) || class_exists($plugin_name, false))) | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |             return true;  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |         // 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') { | 
					
						
							| 
									
										
										
										
											2010-08-13 10:39:51 +00:00
										 |  |  |             throw new SmartyException("plugin {$plugin_name} is not a valid name format"); | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |             return false; | 
					
						
							|  |  |  |         }  | 
					
						
							|  |  |  |         // if type is "internal", get plugin from sysplugins
 | 
					
						
							| 
									
										
										
										
											2009-05-05 17:19:33 +00:00
										 |  |  |         if ($_name_parts[1] == 'internal') { | 
					
						
							| 
									
										
										
										
											2009-12-27 15:06:49 +00:00
										 |  |  |             $file = SMARTY_SYSPLUGINS_DIR . $_plugin_name . '.php'; | 
					
						
							|  |  |  |             if (file_exists($file)) { | 
					
						
							|  |  |  |                 require_once($file); | 
					
						
							|  |  |  |                 return $file; | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |             } else { | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |                 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-12-27 15:06:49 +00:00
										 |  |  |             $file = $_plugin_dir . $_plugin_filename; | 
					
						
							|  |  |  |             if (file_exists($file)) { | 
					
						
							|  |  |  |                 require_once($file); | 
					
						
							|  |  |  |                 return $file; | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |             }  | 
					
						
							|  |  |  |         }  | 
					
						
							|  |  |  |         // no plugin loaded
 | 
					
						
							|  |  |  |         return false; | 
					
						
							|  |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |      * load a filter of specified type and name | 
					
						
							|  |  |  |      *  | 
					
						
							|  |  |  |      * @param string $type filter type | 
					
						
							|  |  |  |      * @param string $name filter name | 
					
						
							|  |  |  |      * @return bool  | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     function loadFilter($type, $name) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |         $_plugin = "smarty_{$type}filter_{$name}"; | 
					
						
							|  |  |  |         $_filter_name = $_plugin; | 
					
						
							|  |  |  |         if ($this->loadPlugin($_plugin)) { | 
					
						
							|  |  |  |             if (class_exists($_plugin, false)) { | 
					
						
							|  |  |  |                 $_plugin = array($_plugin, 'execute'); | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  |             }  | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |             if (is_callable($_plugin)) { | 
					
						
							|  |  |  |                 return $this->registered_filters[$type][$_filter_name] = $_plugin; | 
					
						
							|  |  |  |             }  | 
					
						
							|  |  |  |         }  | 
					
						
							| 
									
										
										
										
											2010-08-13 10:39:51 +00:00
										 |  |  |         throw new SmartyException("{$type}filter \"{$name}\" not callable"); | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |         return false; | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |      * 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) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |         $this->exception_handler = $handler; | 
					
						
							|  |  |  |         return set_exception_handler($handler); | 
					
						
							|  |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-27 20:46:56 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |      * trigger Smarty error | 
					
						
							|  |  |  |      *  | 
					
						
							|  |  |  |      * @param string $error_msg  | 
					
						
							|  |  |  |      * @param integer $error_type  | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function trigger_error($error_msg, $error_type = E_USER_WARNING) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2010-08-13 10:39:51 +00:00
										 |  |  |         throw new SmartyException("Smarty error: $error_msg"); | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |      * Return internal filter name | 
					
						
							|  |  |  |      *  | 
					
						
							|  |  |  |      * @param callback $function_name  | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function _get_filter_name($function_name) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  |         if (is_array($function_name)) { | 
					
						
							|  |  |  |             $_class_name = (is_object($function_name[0]) ? | 
					
						
							|  |  |  |                 get_class($function_name[0]) : $function_name[0]); | 
					
						
							|  |  |  |             return $_class_name . '_' . $function_name[1]; | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  |             return $function_name; | 
					
						
							|  |  |  |         }  | 
					
						
							|  |  |  |     }  | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |      * Adds directory of plugin files | 
					
						
							|  |  |  |      *  | 
					
						
							|  |  |  |      * @param object $smarty  | 
					
						
							|  |  |  |      * @param string $ |array $ plugins folder | 
					
						
							|  |  |  |      * @return  | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     function addPluginsDir($plugins_dir) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |         $this->plugins_dir = array_merge((array)$this->plugins_dir, (array)$plugins_dir); | 
					
						
							|  |  |  |         $this->plugins_dir = array_unique($this->plugins_dir); | 
					
						
							|  |  |  |         return; | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +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 | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     function getGlobal($varname = null) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |         if (isset($varname)) { | 
					
						
							|  |  |  |             if (isset($this->global_tpl_vars[$varname])) { | 
					
						
							|  |  |  |                 return $this->global_tpl_vars[$varname]->value; | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |             } else { | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |                 return ''; | 
					
						
							| 
									
										
										
										
											2009-12-27 15:06:49 +00:00
										 |  |  |             }  | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |             $_result = array(); | 
					
						
							|  |  |  |             foreach ($this->global_tpl_vars AS $key => $var) { | 
					
						
							|  |  |  |                 $_result[$key] = $var->value; | 
					
						
							| 
									
										
										
										
											2009-11-27 20:46:56 +00:00
										 |  |  |             }  | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |             return $_result; | 
					
						
							| 
									
										
										
										
											2009-11-27 20:46:56 +00:00
										 |  |  |         }  | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  |     }  | 
					
						
							| 
									
										
										
										
											2009-11-27 20:46:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-01 21:11:42 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |      * return a reference to a registered object | 
					
						
							|  |  |  |      *  | 
					
						
							|  |  |  |      * @param string $name object name | 
					
						
							|  |  |  |      * @return object  | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     function getRegisteredObject($name) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |         if (!isset($this->registered_objects[$name])) | 
					
						
							| 
									
										
										
										
											2010-08-13 10:39:51 +00:00
										 |  |  |             throw new SmartyException("'$name' is not a registered object"); | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |         if (!is_object($this->registered_objects[$name][0])) | 
					
						
							| 
									
										
										
										
											2010-08-13 10:39:51 +00:00
										 |  |  |             throw new SmartyException("registered '$name' is not an object"); | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |         return $this->registered_objects[$name][0]; | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  |     }  | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |      * return name of debugging template | 
					
						
							|  |  |  |      *  | 
					
						
							|  |  |  |      * @return string  | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     function getDebugTemplate() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |         return $this->debug_tpl; | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  |     }  | 
					
						
							| 
									
										
										
										
											2009-09-01 21:11:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |      * set the debug template | 
					
						
							|  |  |  |      *  | 
					
						
							|  |  |  |      * @param string $tpl_name  | 
					
						
							|  |  |  |      * @return bool  | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     function setDebugTemplate($tpl_name) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |         return $this->debug_tpl = $tpl_name; | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |      * lazy loads (valid) property objects | 
					
						
							|  |  |  |      *  | 
					
						
							|  |  |  |      * @param string $name property name | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function __get($name) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if (in_array($name, array('register', 'unregister', 'utility', 'cache'))) { | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  |             $class = "Smarty_Internal_" . ucfirst($name); | 
					
						
							| 
									
										
										
										
											2010-02-20 21:48:19 +00:00
										 |  |  |             $this->$name = new $class($this); | 
					
						
							|  |  |  |             return $this->$name; | 
					
						
							|  |  |  |         } else if ($name == '_version') { | 
					
						
							|  |  |  |             // Smarty 2 BC
 | 
					
						
							|  |  |  |             $this->_version = self::SMARTY_VERSION; | 
					
						
							|  |  |  |             return $this->_version; | 
					
						
							| 
									
										
										
										
											2010-03-23 16:51:48 +00:00
										 |  |  |         }  | 
					
						
							| 
									
										
										
										
											2010-02-20 21:48:19 +00:00
										 |  |  |         return null; | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +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) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |         static $camel_func; | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |         if (!isset($camel_func)) | 
					
						
							|  |  |  |             $camel_func = create_function('$c', 'return "_" . strtolower($c[1]);');  | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |         // PHP4 call to constructor?
 | 
					
						
							|  |  |  |         if (strtolower($name) == 'smarty') { | 
					
						
							| 
									
										
										
										
											2010-08-13 10:39:51 +00:00
										 |  |  |             throw new SmartyException('Please use parent::__construct() to call parent constuctor'); | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |             return false; | 
					
						
							|  |  |  |         }  | 
					
						
							|  |  |  |         // see if this is a set/get for a property
 | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  |         $first3 = strtolower(substr($name, 0, 3)); | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |         if (in_array($first3, array('set', 'get')) && substr($name, 3, 1) !== '_') { | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  |             // try to keep case correct for future PHP 6.0 case-sensitive class methods
 | 
					
						
							|  |  |  |             // lcfirst() not available < PHP 5.3.0, so improvise
 | 
					
						
							|  |  |  |             $property_name = strtolower(substr($name, 3, 1)) . substr($name, 4);  | 
					
						
							|  |  |  |             // convert camel case to underscored name
 | 
					
						
							|  |  |  |             $property_name = preg_replace_callback('/([A-Z])/', $camel_func, $property_name); | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |             if (!property_exists($this, $property_name)) { | 
					
						
							| 
									
										
										
										
											2010-08-13 10:39:51 +00:00
										 |  |  |                 throw new SmartyException("property '$property_name' does not exist."); | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  |                 return false; | 
					
						
							|  |  |  |             }  | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |             if ($first3 == 'get') | 
					
						
							|  |  |  |                 return $this->$property_name; | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  |             else | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |                 return $this->$property_name = $args[0]; | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  |         }  | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |         // Smarty Backward Compatible wrapper
 | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +00:00
										 |  |  |         if (!isset($this->wrapper)) { | 
					
						
							| 
									
										
										
										
											2010-02-07 22:21:37 +00:00
										 |  |  |             $this->wrapper = new Smarty_Internal_Wrapper($this); | 
					
						
							|  |  |  |         }  | 
					
						
							| 
									
										
										
										
											2010-02-06 22:11:10 +00:00
										 |  |  |         return $this->wrapper->convert($name, $args); | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     }  | 
					
						
							|  |  |  | }  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-17 15:39:51 +00:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Autoloader | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2010-02-26 12:58:36 +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
										 |  |  |     }  | 
					
						
							|  |  |  | }  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-17 15:39:51 +00:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Smarty exception class | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2010-08-13 10:39:51 +00:00
										 |  |  | Class SmartyException extends Exception { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-17 15:39:51 +00:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Smarty compiler exception class | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2010-08-13 10:39:51 +00:00
										 |  |  | Class SmartyCompilerException extends SmartyException  { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-09 21:11:21 +00:00
										 |  |  | ?>
 |