1: <?php
 2: /**
 3:  * Smarty Internal Plugin Nocache Insert
 4:  * Compiles the {insert} tag into the cache file
 5:  *
 6:  * @package    Smarty
 7:  * @subpackage Compiler
 8:  * @author     Uwe Tews
 9:  */
10: 
11: /**
12:  * Smarty Internal Plugin Compile Insert Class
13:  *
14:  * @package    Smarty
15:  * @subpackage Compiler
16:  */
17: class Smarty_Internal_Nocache_Insert
18: {
19:     /**
20:      * Compiles code for the {insert} tag into cache file
21:      *
22:      * @param  string                   $_function insert function name
23:      * @param  array                    $_attr     array with parameter
24:      * @param  Smarty_Internal_Template $_template template object
25:      * @param  string                   $_script   script name to load or 'null'
26:      * @param  string                   $_assign   optional variable name
27:      *
28:      * @return string                   compiled code
29:      */
30:     public static function compile($_function, $_attr, $_template, $_script, $_assign = null)
31:     {
32:         $_output = '<?php ';
33:         if ($_script != 'null') {
34:             // script which must be included
35:             // code for script file loading
36:             $_output .= "require_once '{$_script}';";
37:         }
38:         // call insert
39:         if (isset($_assign)) {
40:             $_output .= "\$_smarty_tpl->assign('{$_assign}' , {$_function} (" . var_export($_attr, true) . ",\$_smarty_tpl), true);?>";
41:         } else {
42:             $_output .= "echo {$_function}(" . var_export($_attr, true) . ",\$_smarty_tpl);?>";
43:         }
44:         $_tpl = $_template;
45:         while ($_tpl->parent instanceof Smarty_Internal_Template) {
46:             $_tpl = $_tpl->parent;
47:         }
48: 
49:         return "/*%%SmartyNocache:{$_tpl->properties['nocache_hash']}%%*/" . $_output . "/*/%%SmartyNocache:{$_tpl->properties['nocache_hash']}%%*/";
50:     }
51: }
52: