mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-10-31 12:21:36 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			74 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /**
 | |
|  * Smarty Method Append
 | |
|  *
 | |
|  * Smarty::append() method
 | |
|  *
 | |
|  * @package    Smarty
 | |
|  * @subpackage PluginsInternal
 | |
|  * @author     Uwe Tews
 | |
|  */
 | |
| class Smarty_Internal_Method_Append
 | |
| {
 | |
|     /**
 | |
|      * Valid for all objects
 | |
|      *
 | |
|      * @var int
 | |
|      */
 | |
|     public $objMap = 7;
 | |
| 
 | |
|     /**
 | |
|      * appends values to template variables
 | |
|      *
 | |
|      * @api  Smarty::append()
 | |
|      * @link http://www.smarty.net/docs/en/api.append.tpl
 | |
|      *
 | |
|      * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
 | |
|      * @param  array|string                                           $tpl_var the template variable name(s)
 | |
|      * @param  mixed                                                  $value   the value to append
 | |
|      * @param  bool                                                   $merge   flag if array elements shall be merged
 | |
|      * @param  bool                                                   $nocache if true any output of this variable will
 | |
|      *                                                                         be not cached
 | |
|      *
 | |
|      * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
 | |
|      */
 | |
|     public function append(Smarty_Internal_Data $data, $tpl_var, $value = null, $merge = false, $nocache = false)
 | |
|     {
 | |
|         if (is_array($tpl_var)) {
 | |
|             // $tpl_var is an array, ignore $value
 | |
|             foreach ($tpl_var as $_key => $_val) {
 | |
|                 if ($_key !== '') {
 | |
|                     $this->append($data, $_key, $_val, $merge, $nocache);
 | |
|                 }
 | |
|             }
 | |
|         } else {
 | |
|             if ($tpl_var !== '' && isset($value)) {
 | |
|                 if (!isset($data->tpl_vars[ $tpl_var ])) {
 | |
|                     $tpl_var_inst = $data->ext->getTemplateVars->_getVariable($data, $tpl_var, null, true, false);
 | |
|                     if ($tpl_var_inst instanceof Smarty_Undefined_Variable) {
 | |
|                         $data->tpl_vars[ $tpl_var ] = new Smarty_Variable(null, $nocache);
 | |
|                     } else {
 | |
|                         $data->tpl_vars[ $tpl_var ] = clone $tpl_var_inst;
 | |
|                     }
 | |
|                 }
 | |
|                 if (!(is_array($data->tpl_vars[ $tpl_var ]->value) ||
 | |
|                       $data->tpl_vars[ $tpl_var ]->value instanceof ArrayAccess)
 | |
|                 ) {
 | |
|                     settype($data->tpl_vars[ $tpl_var ]->value, 'array');
 | |
|                 }
 | |
|                 if ($merge && is_array($value)) {
 | |
|                     foreach ($value as $_mkey => $_mval) {
 | |
|                         $data->tpl_vars[ $tpl_var ]->value[ $_mkey ] = $_mval;
 | |
|                     }
 | |
|                 } else {
 | |
|                     $data->tpl_vars[ $tpl_var ]->value[] = $value;
 | |
|                 }
 | |
|             }
 | |
|             if ($data->_isTplObj() && $data->scope) {
 | |
|                 $data->ext->_updateScope->_updateScope($data, $tpl_var);
 | |
|             }
 | |
|         }
 | |
|         return $data;
 | |
|     }
 | |
| } |