| 
									
										
										
										
											2015-08-17 21:52:32 +02:00
										 |  |  | <?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) { | 
					
						
							| 
									
										
										
										
											2017-11-06 01:02:56 +01:00
										 |  |  |                 if ($_key !== '') { | 
					
						
							| 
									
										
										
										
											2015-10-29 22:17:35 +01:00
										 |  |  |                     $this->append($data, $_key, $_val, $merge, $nocache); | 
					
						
							| 
									
										
										
										
											2015-08-17 21:52:32 +02:00
										 |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2017-11-06 01:02:56 +01:00
										 |  |  |             if ($tpl_var !== '' && isset($value)) { | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |                 if (!isset($data->tpl_vars[ $tpl_var ])) { | 
					
						
							| 
									
										
										
										
											2015-10-24 05:02:24 +02:00
										 |  |  |                     $tpl_var_inst = $data->ext->getTemplateVars->_getVariable($data, $tpl_var, null, true, false); | 
					
						
							| 
									
										
										
										
											2015-08-17 21:52:32 +02:00
										 |  |  |                     if ($tpl_var_inst instanceof Smarty_Undefined_Variable) { | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |                         $data->tpl_vars[ $tpl_var ] = new Smarty_Variable(null, $nocache); | 
					
						
							| 
									
										
										
										
											2015-08-17 21:52:32 +02:00
										 |  |  |                     } else { | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |                         $data->tpl_vars[ $tpl_var ] = clone $tpl_var_inst; | 
					
						
							| 
									
										
										
										
											2015-08-17 21:52:32 +02:00
										 |  |  |                     } | 
					
						
							|  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |                 if (!(is_array($data->tpl_vars[ $tpl_var ]->value) || | 
					
						
							|  |  |  |                       $data->tpl_vars[ $tpl_var ]->value instanceof ArrayAccess) | 
					
						
							| 
									
										
										
										
											2015-08-17 21:52:32 +02:00
										 |  |  |                 ) { | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |                     settype($data->tpl_vars[ $tpl_var ]->value, 'array'); | 
					
						
							| 
									
										
										
										
											2015-08-17 21:52:32 +02:00
										 |  |  |                 } | 
					
						
							|  |  |  |                 if ($merge && is_array($value)) { | 
					
						
							|  |  |  |                     foreach ($value as $_mkey => $_mval) { | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |                         $data->tpl_vars[ $tpl_var ]->value[ $_mkey ] = $_mval; | 
					
						
							| 
									
										
										
										
											2015-08-17 21:52:32 +02:00
										 |  |  |                     } | 
					
						
							|  |  |  |                 } else { | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |                     $data->tpl_vars[ $tpl_var ]->value[] = $value; | 
					
						
							| 
									
										
										
										
											2015-08-17 21:52:32 +02:00
										 |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2016-09-11 04:35:52 +02:00
										 |  |  |             if ($data->_isTplObj() && $data->scope) { | 
					
						
							| 
									
										
										
										
											2016-02-09 23:27:07 +01:00
										 |  |  |                 $data->ext->_updateScope->_updateScope($data, $tpl_var); | 
					
						
							| 
									
										
										
										
											2015-10-29 22:17:35 +01:00
										 |  |  |             } | 
					
						
							| 
									
										
										
										
											2015-08-17 21:52:32 +02:00
										 |  |  |         } | 
					
						
							|  |  |  |         return $data; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |