]> git.sur5r.net Git - contagged/blob - smarty/internals/core.process_cached_inserts.php
1d78edd937a587cf793a4d74a2bd65560b440563
[contagged] / smarty / internals / core.process_cached_inserts.php
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 ?>