libs/sysplugins/smarty_internal_compile_include_php.php Quellcode

smarty_internal_compile_include_php.php
gehe zur Dokumentation dieser Datei
1 <?php
18 {
25  public $required_attributes = array('file');
32  public $shorttag_order = array('file');
39  public $optional_attributes = array('once', 'assign');
40 
50  public function compile($args, $compiler)
51  {
52  if (!($compiler->smarty instanceof SmartyBC)) {
53  throw new SmartyException("{include_php} is deprecated, use SmartyBC class to enable");
54  }
55  // check and get attributes
56  $_attr = $this->getAttributes($compiler, $args);
57 
61  $_smarty_tpl = $compiler->template;
62  $_filepath = false;
63  eval('$_file = ' . $_attr['file'] . ';');
64  if (!isset($compiler->smarty->security_policy) && file_exists($_file)) {
65  $_filepath = $_file;
66  } else {
67  if (isset($compiler->smarty->security_policy)) {
68  $_dir = $compiler->smarty->security_policy->trusted_dir;
69  } else {
70  $_dir = $compiler->smarty->trusted_dir;
71  }
72  if (!empty($_dir)) {
73  foreach ((array) $_dir as $_script_dir) {
74  $_script_dir = rtrim($_script_dir, '/\\') . DS;
75  if (file_exists($_script_dir . $_file)) {
76  $_filepath = $_script_dir . $_file;
77  break;
78  }
79  }
80  }
81  }
82  if ($_filepath == false) {
83  $compiler->trigger_template_error("{include_php} file '{$_file}' is not readable", $compiler->lex->taglineno);
84  }
85 
86  if (isset($compiler->smarty->security_policy)) {
87  $compiler->smarty->security_policy->isTrustedPHPDir($_filepath);
88  }
89 
90  if (isset($_attr['assign'])) {
91  // output will be stored in a smarty variable instead of being displayed
92  $_assign = $_attr['assign'];
93  }
94  $_once = '_once';
95  if (isset($_attr['once'])) {
96  if ($_attr['once'] == 'false') {
97  $_once = '';
98  }
99  }
100 
101  if (isset($_assign)) {
102  return "<?php ob_start(); include{$_once} ('{$_filepath}'); \$_smarty_tpl->assign({$_assign},ob_get_contents()); ob_end_clean();?>";
103  } else {
104  return "<?php include{$_once} ('{$_filepath}');?>\n";
105  }
106  }
107 }




Korrekturen, Hinweise und Ergänzungen

Bitte scheuen Sie sich nicht und melden Sie, was auf dieser Seite sachlich falsch oder irreführend ist, was ergänzt werden sollte, was fehlt usw. Dazu bitte oben aus dem Menü Seite den Eintrag Support Forum wählen. Es ist eine kostenlose Anmeldung erforderlich, um Anmerkungen zu posten. Unpassende Postings, Spam usw. werden kommentarlos entfernt.