| 
									
										
										
										
											2015-08-17 21:52:32 +02:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Smarty Method AppendByRef | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Smarty::appendByRef() method | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @package    Smarty | 
					
						
							|  |  |  |  * @subpackage PluginsInternal | 
					
						
							|  |  |  |  * @author     Uwe Tews | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | class Smarty_Internal_Method_AppendByRef | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * appends values to template variables by reference | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @api  Smarty::appendByRef() | 
					
						
							|  |  |  |      * @link http://www.smarty.net/docs/en/api.append.by.ref.tpl | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data | 
					
						
							|  |  |  |      * @param  string                                                 $tpl_var the template variable name | 
					
						
							|  |  |  |      * @param  mixed                                                  &$value  the referenced value to append | 
					
						
							|  |  |  |      * @param  bool                                                   $merge   flag if array elements shall be merged | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public static function appendByRef(Smarty_Internal_Data $data, $tpl_var, &$value, $merge = false) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											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 ])) { | 
					
						
							|  |  |  |                 $data->tpl_vars[ $tpl_var ] = new Smarty_Variable(); | 
					
						
							| 
									
										
										
										
											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)) { | 
					
						
							|  |  |  |                 settype($data->tpl_vars[ $tpl_var ]->value, 'array'); | 
					
						
							| 
									
										
										
										
											2015-08-17 21:52:32 +02:00
										 |  |  |             } | 
					
						
							|  |  |  |             if ($merge && is_array($value)) { | 
					
						
							|  |  |  |                 foreach ($value as $_key => $_val) { | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |                     $data->tpl_vars[ $tpl_var ]->value[ $_key ] = &$value[ $_key ]; | 
					
						
							| 
									
										
										
										
											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; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |