[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 <?php 2 3 /** 4 * Smarty Internal Plugin Compile Insert 5 * 6 * Compiles the {insert} tag 7 * 8 * @package Smarty 9 * @subpackage Compiler 10 * @author Uwe Tews 11 */ 12 13 /** 14 * Smarty Internal Plugin Compile Insert Class 15 * 16 * @package Smarty 17 * @subpackage Compiler 18 */ 19 class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase { 20 21 /** 22 * Attribute definition: Overwrites base class. 23 * 24 * @var array 25 * @see Smarty_Internal_CompileBase 26 */ 27 public $required_attributes = array('name'); 28 /** 29 * Attribute definition: Overwrites base class. 30 * 31 * @var array 32 * @see Smarty_Internal_CompileBase 33 */ 34 public $shorttag_order = array('name'); 35 /** 36 * Attribute definition: Overwrites base class. 37 * 38 * @var array 39 * @see Smarty_Internal_CompileBase 40 */ 41 public $optional_attributes = array('_any'); 42 43 /** 44 * Compiles code for the {insert} tag 45 * 46 * @param array $args array with attributes from parser 47 * @param object $compiler compiler object 48 * @return string compiled code 49 */ 50 public function compile($args, $compiler) 51 { 52 // check and get attributes 53 $_attr = $this->getAttributes($compiler, $args); 54 // never compile as nocache code 55 $compiler->suppressNocacheProcessing = true; 56 $compiler->tag_nocache = true; 57 $_smarty_tpl = $compiler->template; 58 $_name = null; 59 $_script = null; 60 61 $_output = '<?php '; 62 // save posible attributes 63 eval('$_name = ' . $_attr['name'] . ';'); 64 if (isset($_attr['assign'])) { 65 // output will be stored in a smarty variable instead of being displayed 66 $_assign = $_attr['assign']; 67 // create variable to make shure that the compiler knows about its nocache status 68 $compiler->template->tpl_vars[trim($_attr['assign'], "'")] = new Smarty_Variable(null, true); 69 } 70 if (isset($_attr['script'])) { 71 // script which must be included 72 $_function = "smarty_insert_{$_name}"; 73 $_smarty_tpl = $compiler->template; 74 $_filepath = false; 75 eval('$_script = ' . $_attr['script'] . ';'); 76 if (!isset($compiler->smarty->security_policy) && file_exists($_script)) { 77 $_filepath = $_script; 78 } else { 79 if (isset($compiler->smarty->security_policy)) { 80 $_dir = $compiler->smarty->security_policy->trusted_dir; 81 } else { 82 $_dir = $compiler->smarty->trusted_dir; 83 } 84 if (!empty($_dir)) { 85 foreach((array)$_dir as $_script_dir) { 86 $_script_dir = rtrim($_script_dir, '/\\') . DS; 87 if (file_exists($_script_dir . $_script)) { 88 $_filepath = $_script_dir . $_script; 89 break; 90 } 91 } 92 } 93 } 94 if ($_filepath == false) { 95 $compiler->trigger_template_error("{insert} missing script file '{$_script}'", $compiler->lex->taglineno); 96 } 97 // code for script file loading 98 $_output .= "require_once '{$_filepath}' ;"; 99 require_once $_filepath; 100 if (!is_callable($_function)) { 101 $compiler->trigger_template_error(" {insert} function '{$_function}' is not callable in script file '{$_script}'", $compiler->lex->taglineno); 102 } 103 } else { 104 $_filepath = 'null'; 105 $_function = "insert_{$_name}"; 106 // function in PHP script ? 107 if (!is_callable($_function)) { 108 // try plugin 109 if (!$_function = $compiler->getPlugin($_name, 'insert')) { 110 $compiler->trigger_template_error("{insert} no function or plugin found for '{$_name}'", $compiler->lex->taglineno); 111 } 112 } 113 } 114 // delete {insert} standard attributes 115 unset($_attr['name'], $_attr['assign'], $_attr['script'], $_attr['nocache']); 116 // convert attributes into parameter array string 117 $_paramsArray = array(); 118 foreach ($_attr as $_key => $_value) { 119 $_paramsArray[] = "'$_key' => $_value"; 120 } 121 $_params = 'array(' . implode(", ", $_paramsArray) . ')'; 122 // call insert 123 if (isset($_assign)) { 124 if ($_smarty_tpl->caching) { 125 $_output .= "echo Smarty_Internal_Nocache_Insert::compile ('{$_function}',{$_params}, \$_smarty_tpl, '{$_filepath}',{$_assign});?>"; 126 } else { 127 $_output .= "\$_smarty_tpl->assign({$_assign} , {$_function} ({$_params},\$_smarty_tpl), true);?>"; 128 } 129 } else { 130 $compiler->has_output = true; 131 if ($_smarty_tpl->caching) { 132 $_output .= "echo Smarty_Internal_Nocache_Insert::compile ('{$_function}',{$_params}, \$_smarty_tpl, '{$_filepath}');?>"; 133 } else { 134 $_output .= "echo {$_function}({$_params},\$_smarty_tpl);?>"; 135 } 136 } 137 return $_output; 138 } 139 140 } 141 142 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |