public function decodeProperties($properties, $cache = false)
    {
        $this->has_nocache_code = $properties['has_nocache_code'];
        $this->properties['nocache_hash'] = $properties['nocache_hash'];
        if (isset($properties['cache_lifetime'])) {
            $this->properties['cache_lifetime'] = $properties['cache_lifetime'];
        }
        if (isset($properties['file_dependency'])) {
            $this->properties['file_dependency'] = array_merge($this->properties['file_dependency'], $properties['file_dependency']);
        }
        if (!empty($properties['function'])) {
            $this->properties['function'] = array_merge($this->properties['function'], $properties['function']);
            $this->smarty->template_functions = array_merge($this->smarty->template_functions, $properties['function']);
        }
        $this->properties['version'] = (isset($properties['version'])) ? $properties['version'] : '';
        $this->properties['unifunc'] = $properties['unifunc'];
        // check file dependencies at compiled code
        $is_valid = true;
        if ($this->properties['version'] != Smarty::SMARTY_VERSION) {
            $is_valid = false;
        } else if (((!$cache && $this->smarty->compile_check && empty($this->compiled->_properties) && !$this->compiled->isCompiled) || $cache && ($this->smarty->compile_check === true || $this->smarty->compile_check === Smarty::COMPILECHECK_ON)) && !empty($this->properties['file_dependency'])) {
            foreach ($this->properties['file_dependency'] as $_file_to_check) {
                if ($_file_to_check[2] == 'file' || $_file_to_check[2] == 'php') {
                    if ($this->source->filepath == $_file_to_check[0] && isset($this->source->timestamp)) {
                        // do not recheck current template
                        $mtime = $this->source->timestamp;
                    } else {
                        // file and php types can be checked without loading the respective resource handlers
                        $mtime = filemtime($_file_to_check[0]);
                    }
                } elseif ($_file_to_check[2] == 'string') {
                    continue;
                } else {
                    $source = Smarty_Resource::source(null, $this->smarty, $_file_to_check[0]);
                    $mtime = $source->timestamp;
                }
                if ($mtime > $_file_to_check[1]) {
                    $is_valid = false;
                    break;
                }
            }
        }
        if ($cache) {
            $this->cached->valid = $is_valid;
        } else {
            $this->mustCompile = !$is_valid;
        }
        // store data in reusable Smarty_Template_Compiled
        if (!$cache) {
            $this->compiled->_properties = $properties;
        }
        return $is_valid;
    }
public function decodeProperties($properties, $cache = false)
    {
        $this->has_nocache_code = $properties['has_nocache_code'];
        $this->properties['nocache_hash'] = $properties['nocache_hash'];
        if (isset($properties['cache_lifetime'])) {
            $this->properties['cache_lifetime'] = $properties['cache_lifetime'];
        }
        if (isset($properties['file_dependency'])) {
            $this->properties['file_dependency'] = array_merge($this->properties['file_dependency'], $properties['file_dependency']);
        }
        if (!empty($properties['function'])) {
            $this->properties['function'] = array_merge($this->properties['function'], $properties['function']);
            $this->smarty->template_functions = array_merge($this->smarty->template_functions, $properties['function']);
        }
        $this->properties['version'] = (isset($properties['version'])) ? $properties['version'] : '';
        $this->properties['unifunc'] = $properties['unifunc'];
        // check file dependencies at compiled code
        $is_valid = true;
        if ($this->properties['version'] != Smarty::SMARTY_VERSION) {
            $is_valid = false;
        } else if (((!$cache && $this->smarty->compile_check && empty($this->compiled->_properties) && !$this->compiled->isCompiled) || $cache && ($this->smarty->compile_check === true || $this->smarty->compile_check === Smarty::COMPILECHECK_ON)) && !empty($this->properties['file_dependency'])) {
            foreach ($this->properties['file_dependency'] as $_file_to_check) {
                if ($_file_to_check[2] == 'file' || $_file_to_check[2] == 'php') {
                    if ($this->source->filepath == $_file_to_check[0] && isset($this->source->timestamp)) {
                        // do not recheck current template
                        $mtime = $this->source->timestamp;
                    } else {
                        // file and php types can be checked without loading the respective resource handlers
                        $mtime = filemtime($_file_to_check[0]);
                    }
                } elseif ($_file_to_check[2] == 'string') {
                    continue;
                } else {
                    $source = Smarty_Resource::source(null, $this->smarty, $_file_to_check[0]);
                    $mtime = $source->timestamp;
                }
                if ($mtime > $_file_to_check[1]) {
                    $is_valid = false;
                    break;
                }
            }
        }
        if ($cache) {
            $this->cached->valid = $is_valid;
        } else {
            $this->mustCompile = !$is_valid;
        }
        // store data in reusable Smarty_Template_Compiled
        if (!$cache) {
            $this->compiled->_properties = $properties;
        }
        return $is_valid;
    }
public function decodeProperties ( $ properties , $ cache = false ) { $ this -> has_nocache_code = $ properties [ 'has_nocache_code' ] ; $ this -> properties [ 'nocache_hash' ] = $ properties [ 'nocache_hash' ] ; if ( isset ( $ properties [ 'cache_lifetime' ] ) ) { $ this -> properties [ 'cache_lifetime' ] = $ properties [ 'cache_lifetime' ] ; } if ( isset ( $ properties [ 'file_dependency' ] ) ) { $ this -> properties [ 'file_dependency' ] = array_merge ( $ this -> properties [ 'file_dependency' ] , $ properties [ 'file_dependency' ] ) ; } if ( ! empty ( $ properties [ 'function' ] ) ) { $ this -> properties [ 'function' ] = array_merge ( $ this -> properties [ 'function' ] , $ properties [ 'function' ] ) ; $ this -> smarty -> template_functions = array_merge ( $ this -> smarty -> template_functions , $ properties [ 'function' ] ) ; } $ this -> properties [ 'version' ] = ( isset ( $ properties [ 'version' ] ) ) ? $ properties [ 'version' ] : '' ; $ this -> properties [ 'unifunc' ] = $ properties [ 'unifunc' ] ; // check file dependencies at compiled code $ is_valid = true ; if ( $ this -> properties [ 'version' ] != Smarty :: SMARTY_VERSION ) { $ is_valid = false ; } else if ( ( ( ! $ cache && $ this -> smarty -> compile_check && empty ( $ this -> compiled -> _properties ) && ! $ this -> compiled -> isCompiled ) || $ cache && ( $ this -> smarty -> compile_check === true || $ this -> smarty -> compile_check === Smarty :: COMPILECHECK_ON ) ) && ! empty ( $ this -> properties [ 'file_dependency' ] ) ) { foreach ( $ this -> properties [ 'file_dependency' ] as $ _file_to_check ) { if ( $ _file_to_check [ 2 ] == 'file' || $ _file_to_check [ 2 ] == 'php' ) { if ( $ this -> source -> filepath == $ _file_to_check [ 0 ] && isset ( $ this -> source -> timestamp ) ) { // do not recheck current template $ mtime = $ this -> source -> timestamp ; } else { // file and php types can be checked without loading the respective resource handlers $ mtime = filemtime ( $ _file_to_check [ 0 ] ) ; } } elseif ( $ _file_to_check [ 2 ] == 'string' ) { continue ; } else { $ source = Smarty_Resource :: source ( null , $ this -> smarty , $ _file_to_check [ 0 ] ) ; $ mtime = $ source -> timestamp ; } if ( $ mtime > $ _file_to_check [ 1 ] ) { $ is_valid = false ; break ; } } } if ( $ cache ) { $ this -> cached -> valid = $ is_valid ; } else { $ this -> mustCompile = ! $ is_valid ; } // store data in reusable Smarty_Template_Compiled if ( ! $ cache ) { $ this -> compiled -> _properties = $ properties ; } return $ is_valid ; }
This function is executed automatically when a compiled or cached template file is included

- Decode saved properties from compiled template and cache files
- Check if compiled or cache file is valid

@param array $properties     special template properties
@param bool  $cache          flag if called from cache file
@return bool                 flag if compiled or cache file is valid
This function is executed automatically when a compiled or cached template file is included