"Fossies" - the Fresh Open Source Software Archive

Member "smarty-3.1.34/libs/sysplugins/smarty_internal_runtime_codeframe.php" (28 Feb 2019, 4089 Bytes) of package /linux/www/smarty-3.1.34.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) PHP source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "smarty_internal_runtime_codeframe.php" see the Fossies "Dox" file reference documentation and the last Fossies "Diffs" side-by-side code changes report: 3.1.32_vs_3.1.33.

    1 <?php
    2 /**
    3  * Smarty Internal Extension
    4  * This file contains the Smarty template extension to create a code frame
    5  *
    6  * @package    Smarty
    7  * @subpackage Template
    8  * @author     Uwe Tews
    9  */
   10 
   11 /**
   12  * Class Smarty_Internal_Extension_CodeFrame
   13  * Create code frame for compiled and cached templates
   14  */
   15 class Smarty_Internal_Runtime_CodeFrame
   16 {
   17     /**
   18      * Create code frame for compiled and cached templates
   19      *
   20      * @param Smarty_Internal_Template              $_template
   21      * @param string                                $content   optional template content
   22      * @param string                                $functions compiled template function and block code
   23      * @param bool                                  $cache     flag for cache file
   24      * @param \Smarty_Internal_TemplateCompilerBase $compiler
   25      *
   26      * @return string
   27      */
   28     public function create(
   29         Smarty_Internal_Template $_template,
   30         $content = '',
   31         $functions = '',
   32         $cache = false,
   33         Smarty_Internal_TemplateCompilerBase $compiler = null
   34     ) {
   35         // build property code
   36         $properties[ 'version' ] = Smarty::SMARTY_VERSION;
   37         $properties[ 'unifunc' ] = 'content_' . str_replace(array('.', ','), '_', uniqid('', true));
   38         if (!$cache) {
   39             $properties[ 'has_nocache_code' ] = $_template->compiled->has_nocache_code;
   40             $properties[ 'file_dependency' ] = $_template->compiled->file_dependency;
   41             $properties[ 'includes' ] = $_template->compiled->includes;
   42         } else {
   43             $properties[ 'has_nocache_code' ] = $_template->cached->has_nocache_code;
   44             $properties[ 'file_dependency' ] = $_template->cached->file_dependency;
   45             $properties[ 'cache_lifetime' ] = $_template->cache_lifetime;
   46         }
   47         $output = "<?php\n";
   48         $output .= "/* Smarty version {$properties[ 'version' ]}, created on " . strftime("%Y-%m-%d %H:%M:%S") .
   49                    "\n  from '" . str_replace('*/', '* /', $_template->source->filepath) . "' */\n\n";
   50         $output .= "/* @var Smarty_Internal_Template \$_smarty_tpl */\n";
   51         $dec = "\$_smarty_tpl->_decodeProperties(\$_smarty_tpl, " . var_export($properties, true) . ',' .
   52                ($cache ? 'true' : 'false') . ')';
   53         $output .= "if ({$dec}) {\n";
   54         $output .= "function {$properties['unifunc']} (Smarty_Internal_Template \$_smarty_tpl) {\n";
   55         if (!$cache && !empty($compiler->tpl_function)) {
   56             $output .= '$_smarty_tpl->smarty->ext->_tplFunction->registerTplFunctions($_smarty_tpl, ';
   57             $output .= var_export($compiler->tpl_function, true);
   58             $output .= ");\n";
   59         }
   60         if ($cache && isset($_template->smarty->ext->_tplFunction)) {
   61             $output .= "\$_smarty_tpl->smarty->ext->_tplFunction->registerTplFunctions(\$_smarty_tpl, " .
   62                        var_export($_template->smarty->ext->_tplFunction->getTplFunction($_template), true) . ");\n";
   63         }
   64         $output .= "?>";
   65         $output .= $content;
   66         $output .= "<?php }\n?>";
   67         $output .= $functions;
   68         $output .= "<?php }\n";
   69         // remove unneeded PHP tags
   70         if (preg_match('/\s*\?>[\n]?<\?php\s*/', $output)) {
   71             $curr_split = preg_split(
   72                 '/\s*\?>[\n]?<\?php\s*/',
   73                 $output
   74             );
   75             preg_match_all(
   76                 '/\s*\?>[\n]?<\?php\s*/',
   77                 $output,
   78                 $curr_parts
   79             );
   80             $output = '';
   81             foreach ($curr_split as $idx => $curr_output) {
   82                 $output .= $curr_output;
   83                 if (isset($curr_parts[ 0 ][ $idx ])) {
   84                     $output .= "\n";
   85                 }
   86             }
   87         }
   88         if (preg_match('/\?>\s*$/', $output)) {
   89             $curr_split = preg_split(
   90                 '/\?>\s*$/',
   91                 $output
   92             );
   93             $output = '';
   94             foreach ($curr_split as $idx => $curr_output) {
   95                 $output .= $curr_output;
   96             }
   97         }
   98         return $output;
   99     }
  100 }