| 
									
										
										
										
											2009-11-06 14:35:00 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | /** | 
					
						
							| 
									
										
										
										
											2010-08-17 15:39:51 +00:00
										 |  |  |  * Smarty Internal Plugin Compile Special Smarty Variable | 
					
						
							|  |  |  |  *  | 
					
						
							|  |  |  |  * Compiles the special $smarty variables | 
					
						
							|  |  |  |  *  | 
					
						
							|  |  |  |  * @package Smarty | 
					
						
							|  |  |  |  * @subpackage Compiler | 
					
						
							|  |  |  |  * @author Uwe Tews  | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-06 14:35:00 +00:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2010-08-17 15:39:51 +00:00
										 |  |  |  * Smarty Internal Plugin Compile special Smarty Variable Class | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2009-12-27 15:06:49 +00:00
										 |  |  | class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_CompileBase { | 
					
						
							| 
									
										
										
										
											2009-11-06 14:35:00 +00:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2010-08-17 15:39:51 +00:00
										 |  |  |      * Compiles code for the speical $smarty variables | 
					
						
							|  |  |  |      *  | 
					
						
							|  |  |  |      * @param array $args array with attributes from parser | 
					
						
							|  |  |  |      * @param object $compiler compiler object | 
					
						
							|  |  |  |      * @return string compiled code | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2009-11-06 14:35:00 +00:00
										 |  |  |     public function compile($args, $compiler) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-12-04 15:44:47 +00:00
										 |  |  |         $_index = explode(',', str_replace(array(']['), array(','), substr($args, 1, strlen($args)-2))); | 
					
						
							| 
									
										
										
										
											2009-11-06 14:35:00 +00:00
										 |  |  |         $compiled_ref = ' '; | 
					
						
							| 
									
										
										
										
											2009-12-04 15:44:47 +00:00
										 |  |  |         $variable = trim($_index[0], "'"); | 
					
						
							|  |  |  |         switch ($variable) { | 
					
						
							| 
									
										
										
										
											2009-11-06 14:35:00 +00:00
										 |  |  |             case 'foreach': | 
					
						
							|  |  |  |                 return "\$_smarty_tpl->getVariable('smarty')->value$args"; | 
					
						
							|  |  |  |             case 'section': | 
					
						
							|  |  |  |                 return "\$_smarty_tpl->getVariable('smarty')->value$args"; | 
					
						
							|  |  |  |             case 'capture': | 
					
						
							|  |  |  |                 return "\$_smarty_tpl->smarty->_smarty_vars$args"; | 
					
						
							|  |  |  |             case 'now': | 
					
						
							|  |  |  |                 return 'time()'; | 
					
						
							| 
									
										
										
										
											2010-01-14 19:12:14 +00:00
										 |  |  |             case 'cookies': | 
					
						
							|  |  |  |                 if ($compiler->smarty->security && !$compiler->smarty->security_policy->allow_super_globals) { | 
					
						
							|  |  |  |                     $compiler->trigger_template_error("(secure mode) super globals not permitted"); | 
					
						
							|  |  |  |                     break; | 
					
						
							|  |  |  |                 }  | 
					
						
							|  |  |  |                 $compiled_ref = '$_COOKIE'; | 
					
						
							|  |  |  |                 break; | 
					
						
							| 
									
										
										
										
											2009-11-06 14:35:00 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |             case 'get': | 
					
						
							|  |  |  |             case 'post': | 
					
						
							|  |  |  |             case 'env': | 
					
						
							|  |  |  |             case 'server': | 
					
						
							|  |  |  |             case 'session': | 
					
						
							|  |  |  |             case 'request': | 
					
						
							| 
									
										
										
										
											2009-12-04 15:44:47 +00:00
										 |  |  |                 if ($compiler->smarty->security && !$compiler->smarty->security_policy->allow_super_globals) { | 
					
						
							|  |  |  |                     $compiler->trigger_template_error("(secure mode) super globals not permitted"); | 
					
						
							|  |  |  |                     break; | 
					
						
							|  |  |  |                 }  | 
					
						
							| 
									
										
										
										
											2010-01-14 19:12:14 +00:00
										 |  |  |                 $compiled_ref = '$_'.strtoupper($variable); | 
					
						
							| 
									
										
										
										
											2009-11-06 14:35:00 +00:00
										 |  |  |                 break; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             case 'template': | 
					
						
							| 
									
										
										
										
											2010-09-17 18:10:10 +00:00
										 |  |  |                 if ($compiler->smarty->inheritance) { | 
					
						
							|  |  |  |                 	$ptr = $compiler->template->parent; | 
					
						
							|  |  |  |                 } else { | 
					
						
							|  |  |  |                 	$ptr = $compiler->template; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 $_template_name = $ptr->template_resource; | 
					
						
							| 
									
										
										
										
											2009-11-06 14:35:00 +00:00
										 |  |  |                 return "'$_template_name'"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             case 'current_dir': | 
					
						
							| 
									
										
										
										
											2010-09-17 18:10:10 +00:00
										 |  |  |                 if ($compiler->smarty->inheritance) { | 
					
						
							|  |  |  |                 	$ptr = $compiler->template->parent; | 
					
						
							|  |  |  |                 } else { | 
					
						
							|  |  |  |                 	$ptr = $compiler->template; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 $_template_dir_name = dirname($ptr->getTemplateFilepath()); | 
					
						
							| 
									
										
										
										
											2009-11-06 14:35:00 +00:00
										 |  |  |                 return "'$_template_dir_name'"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             case 'version': | 
					
						
							| 
									
										
										
										
											2009-12-27 15:06:49 +00:00
										 |  |  |                 $_version = Smarty::SMARTY_VERSION; | 
					
						
							| 
									
										
										
										
											2009-11-06 14:35:00 +00:00
										 |  |  |                 return "'$_version'"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             case 'const': | 
					
						
							|  |  |  |                 if ($compiler->smarty->security && !$compiler->smarty->security_policy->allow_constants) { | 
					
						
							|  |  |  |                     $compiler->trigger_template_error("(secure mode) constants not permitted"); | 
					
						
							|  |  |  |                     break; | 
					
						
							|  |  |  |                 }  | 
					
						
							|  |  |  |                 return '@' . trim($_index[1], "'"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             case 'config': | 
					
						
							|  |  |  |                 return "\$_smarty_tpl->getConfigVariable($_index[1])"; | 
					
						
							|  |  |  |             case 'ldelim': | 
					
						
							|  |  |  |                 $_ldelim = $compiler->smarty->left_delimiter; | 
					
						
							|  |  |  |                 return "'$_ldelim'"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             case 'rdelim': | 
					
						
							|  |  |  |                 $_rdelim = $compiler->smarty->right_delimiter; | 
					
						
							|  |  |  |                 return "'$_rdelim'"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             default: | 
					
						
							| 
									
										
										
										
											2009-12-27 15:06:49 +00:00
										 |  |  |                 $compiler->trigger_template_error('$smarty.' . trim($_index[0], "'") . ' is invalid'); | 
					
						
							| 
									
										
										
										
											2009-11-06 14:35:00 +00:00
										 |  |  |                 break; | 
					
						
							|  |  |  |         }  | 
					
						
							|  |  |  |         if (isset($_index[1])) { | 
					
						
							|  |  |  |             array_shift($_index); | 
					
						
							|  |  |  |             foreach ($_index as $_ind) { | 
					
						
							|  |  |  |                 $compiled_ref = $compiled_ref . "[$_ind]"; | 
					
						
							|  |  |  |             }  | 
					
						
							|  |  |  |         }  | 
					
						
							|  |  |  |         return $compiled_ref; | 
					
						
							|  |  |  |     }  | 
					
						
							|  |  |  | }  | 
					
						
							| 
									
										
										
										
											2009-12-04 15:44:47 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-15 14:08:56 +00:00
										 |  |  | ?>
 |