smarty/internals/core.process_cached_inserts.php
changeset 0 c63de9eb7045
equal deleted inserted replaced
-1:000000000000 0:c63de9eb7045
       
     1 <?php
       
     2 /**
       
     3  * Smarty plugin
       
     4  * @package Smarty
       
     5  * @subpackage plugins
       
     6  */
       
     7 
       
     8 /**
       
     9  * Replace cached inserts with the actual results
       
    10  *
       
    11  * @param string $results
       
    12  * @return string
       
    13  */
       
    14 function smarty_core_process_cached_inserts($params, &$smarty)
       
    15 {
       
    16     preg_match_all('!'.$smarty->_smarty_md5.'{insert_cache (.*)}'.$smarty->_smarty_md5.'!Uis',
       
    17                    $params['results'], $match);
       
    18     list($cached_inserts, $insert_args) = $match;
       
    19 
       
    20     for ($i = 0, $for_max = count($cached_inserts); $i < $for_max; $i++) {
       
    21         if ($smarty->debugging) {
       
    22             $_params = array();
       
    23             require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
       
    24             $debug_start_time = smarty_core_get_microtime($_params, $smarty);
       
    25         }
       
    26 
       
    27         $args = unserialize($insert_args[$i]);
       
    28         $name = $args['name'];
       
    29 
       
    30         if (isset($args['script'])) {
       
    31             $_params = array('resource_name' => $smarty->_dequote($args['script']));
       
    32             require_once(SMARTY_CORE_DIR . 'core.get_php_resource.php');
       
    33             if(!smarty_core_get_php_resource($_params, $smarty)) {
       
    34                 return false;
       
    35             }
       
    36             $resource_type = $_params['resource_type'];
       
    37             $php_resource = $_params['php_resource'];
       
    38 
       
    39 
       
    40             if ($resource_type == 'file') {
       
    41                 $smarty->_include($php_resource, true);
       
    42             } else {
       
    43                 $smarty->_eval($php_resource);
       
    44             }
       
    45         }
       
    46 
       
    47         $function_name = $smarty->_plugins['insert'][$name][0];
       
    48         if (empty($args['assign'])) {
       
    49             $replace = $function_name($args, $smarty);
       
    50         } else {
       
    51             $smarty->assign($args['assign'], $function_name($args, $smarty));
       
    52             $replace = '';
       
    53         }
       
    54 
       
    55         $params['results'] = substr_replace($params['results'], $replace, strpos($params['results'], $cached_inserts[$i]), strlen($cached_inserts[$i]));
       
    56         if ($smarty->debugging) {
       
    57             $_params = array();
       
    58             require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
       
    59             $smarty->_smarty_debug_info[] = array('type'      => 'insert',
       
    60                                                 'filename'  => 'insert_'.$name,
       
    61                                                 'depth'     => $smarty->_inclusion_depth,
       
    62                                                 'exec_time' => smarty_core_get_microtime($_params, $smarty) - $debug_start_time);
       
    63         }
       
    64     }
       
    65 
       
    66     return $params['results'];
       
    67 }
       
    68 
       
    69 /* vim: set expandtab: */
       
    70 
       
    71 ?>