1<?php
2/**
3 * Smarty Internal Plugin Compile Make_Nocache
4 * Compiles the {make_nocache} tag
5 *
6 * @package    Smarty
7 * @subpackage Compiler
8 * @author     Uwe Tews
9 */
10
11/**
12 * Smarty Internal Plugin Compile Make_Nocache Class
13 *
14 * @package    Smarty
15 * @subpackage Compiler
16 */
17class Smarty_Internal_Compile_Make_Nocache extends Smarty_Internal_CompileBase
18{
19    /**
20     * Attribute definition: Overwrites base class.
21     *
22     * @var array
23     * @see Smarty_Internal_CompileBase
24     */
25    public $option_flags = array();
26
27    /**
28     * Array of names of required attribute required by tag
29     *
30     * @var array
31     */
32    public $required_attributes = array('var');
33
34    /**
35     * Shorttag attribute order defined by its names
36     *
37     * @var array
38     */
39    public $shorttag_order = array('var');
40
41    /**
42     * Compiles code for the {make_nocache} tag
43     *
44     * @param array                                 $args     array with attributes from parser
45     * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
46     *
47     * @return string compiled code
48     */
49    public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
50    {
51        // check and get attributes
52        $_attr = $this->getAttributes($compiler, $args);
53        if ($compiler->template->caching) {
54            $output = "<?php \$_smarty_tpl->smarty->ext->_make_nocache->save(\$_smarty_tpl, {$_attr[ 'var' ]});\n?>\n";
55            $compiler->template->compiled->has_nocache_code = true;
56            $compiler->suppressNocacheProcessing = true;
57            return $output;
58        } else {
59            return true;
60        }
61    }
62}
63