| 
									
										
										
										
											2015-08-09 20:43:04 +02:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Smarty Template Resource Base Object | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @package    Smarty | 
					
						
							|  |  |  |  * @subpackage TemplateResources | 
					
						
							|  |  |  |  * @author     Rodney Rehm | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | abstract class Smarty_Template_Resource_Base | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Compiled Filepath | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public $filepath = null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Compiled Timestamp | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var integer | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public $timestamp = null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Compiled Existence | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public $exists = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Template Compile Id (Smarty_Internal_Template::$compile_id) | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public $compile_id = null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Compiled Content Loaded | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var boolean | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public $processed = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * unique function name for compiled template code | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public $unifunc = ''; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * flag if template does contain nocache code sections | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var bool | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public $has_nocache_code = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * resource file dependency | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public $file_dependency = array(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2015-08-15 18:25:06 +02:00
										 |  |  |      * Content buffer | 
					
						
							| 
									
										
										
										
											2015-08-09 20:43:04 +02:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2015-08-15 18:25:06 +02:00
										 |  |  |      * @var string | 
					
						
							| 
									
										
										
										
											2015-08-09 20:43:04 +02:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-08-15 18:25:06 +02:00
										 |  |  |     public $content = null; | 
					
						
							| 
									
										
										
										
											2015-08-09 20:43:04 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * required plugins | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public $required_plugins = array(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-15 18:25:06 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Known template functions | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public $tpl_function = array(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-18 02:55:53 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Included subtemplates | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public $includes = array(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-09 20:43:04 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Process resource | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param Smarty_Internal_Template $_template template object | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     abstract public function process(Smarty_Internal_Template $_template); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-23 01:25:57 +02:00
										 |  |  |      /** | 
					
						
							|  |  |  |      * get rendered template content by calling compiled or cached template code | 
					
						
							| 
									
										
										
										
											2015-08-09 20:43:04 +02:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2015-08-23 01:25:57 +02:00
										 |  |  |      * @param string $unifunc function with template code | 
					
						
							| 
									
										
										
										
											2015-08-09 20:43:04 +02:00
										 |  |  |      * | 
					
						
							|  |  |  |      * @return string | 
					
						
							| 
									
										
										
										
											2015-08-23 01:25:57 +02:00
										 |  |  |      * @throws \Exception | 
					
						
							| 
									
										
										
										
											2015-08-09 20:43:04 +02:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-08-23 01:25:57 +02:00
										 |  |  |     public function getRenderedTemplateCode(Smarty_Internal_Template $_template, $unifunc = null) | 
					
						
							| 
									
										
										
										
											2015-08-09 20:43:04 +02:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-08-23 01:25:57 +02:00
										 |  |  |         $unifunc = isset($unifunc) ? $unifunc : $this->unifunc; | 
					
						
							|  |  |  |         $level = ob_get_level(); | 
					
						
							|  |  |  |         try { | 
					
						
							|  |  |  |             if (empty($unifunc) || !is_callable($unifunc)) { | 
					
						
							|  |  |  |                 throw new SmartyException("Invalid compiled template for '{$_template->template_resource}'"); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             if (isset($_template->smarty->security_policy)) { | 
					
						
							|  |  |  |                 $_template->smarty->security_policy->startTemplate($_template); | 
					
						
							| 
									
										
										
										
											2015-08-09 20:43:04 +02:00
										 |  |  |             } | 
					
						
							| 
									
										
										
										
											2015-08-23 01:25:57 +02:00
										 |  |  |             //
 | 
					
						
							|  |  |  |             // render compiled or saved template code
 | 
					
						
							|  |  |  |             //
 | 
					
						
							|  |  |  |             $unifunc($_template); | 
					
						
							|  |  |  |             // any unclosed {capture} tags ?
 | 
					
						
							| 
									
										
										
										
											2015-08-23 13:24:24 +02:00
										 |  |  |             if (isset($_template->_cache['capture_stack'][0])) { | 
					
						
							| 
									
										
										
										
											2015-08-23 01:25:57 +02:00
										 |  |  |                 $_template->capture_error(); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             if (isset($_template->smarty->security_policy)) { | 
					
						
							|  |  |  |                 $_template->smarty->security_policy->exitTemplate(); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             return null; | 
					
						
							| 
									
										
										
										
											2015-08-09 20:43:04 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2015-08-23 01:25:57 +02:00
										 |  |  |         catch (Exception $e) { | 
					
						
							|  |  |  |             while (ob_get_level() > $level) { | 
					
						
							|  |  |  |                 ob_end_clean(); | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2015-08-23 13:24:24 +02:00
										 |  |  |              if (isset($_template->smarty->security_policy)) { | 
					
						
							| 
									
										
										
										
											2015-08-23 01:25:57 +02:00
										 |  |  |                 $_template->smarty->security_policy->exitTemplate(); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             throw $e; | 
					
						
							| 
									
										
										
										
											2015-08-09 20:43:04 +02:00
										 |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Get compiled time stamp | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return int | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function getTimeStamp() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if ($this->exists && !isset($this->timestamp)) { | 
					
						
							|  |  |  |             $this->timestamp = @filemtime($this->filepath); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         return $this->timestamp; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |