libs/sysplugins/smarty_template_source.php Quellcode

smarty_template_source.php
gehe zur Dokumentation dieser Datei
1 <?php
2 
16 {
22  public $compiler_class = null;
23 
29  public $template_lexer_class = null;
30 
36  public $template_parser_class = null;
37 
43  public $uid = null;
44 
50  public $resource = null;
51 
57  public $type = null;
58 
64  public $name = null;
65 
71  public $unique_resource = null;
72 
78  public $filepath = null;
84  public $basename = null;
85 
91  public $components = null;
92 
98  public $handler = null;
99 
105  public $smarty = null;
111  public $isConfig = false;
117  public $uncompiled = false;
118 
124  public $recompiled = false;
130  public $compileds = array();
131 
144  {
145  $this->handler = $handler; // Note: prone to circular references
146 
147  $this->recompiled = $handler->recompiled;
148  $this->uncompiled = $handler->uncompiled;
149  $this->compiler_class = $handler->compiler_class;
150  $this->template_lexer_class = $handler->template_lexer_class;
151  $this->template_parser_class = $handler->template_parser_class;
152 
153  $this->smarty = $smarty;
154  $this->resource = $resource;
155  $this->type = $type;
156  $this->name = $name;
157  }
158 
170  public static function load(Smarty_Internal_Template $_template = null, Smarty $smarty = null, $template_resource = null)
171  {
172  if ($_template) {
173  $smarty = $_template->smarty;
174  $template_resource = $_template->template_resource;
175  }
176  if (empty($template_resource)) {
177  throw new SmartyException('Missing template name');
178  }
179  // parse resource_name, load resource handler, identify unique resource name
180  list($name, $type) = Smarty_Resource::parseResourceName($template_resource, $smarty->default_resource_type);
182  // if resource is not recompiling and resource name is not dotted we can check the source cache
183  if ($smarty->resource_caching && !$resource->recompiled && !(isset($name[1]) && $name[0] == '.' && ($name[1] == '.' || $name[1] == '/'))) {
184  $unique_resource = $resource->buildUniqueResourceName($smarty, $name);
185  if (isset($smarty->source_objects[$unique_resource])) {
186  return $smarty->source_objects[$unique_resource];
187  }
188  } else {
189  $unique_resource = null;
190  }
191  // create new source object
192  $source = new Smarty_Template_Source($resource, $smarty, $template_resource, $type, $name);
193  $resource->populate($source, $_template);
194  if ((!isset($source->exists) || !$source->exists) && isset($_template->smarty->default_template_handler_func)) {
196  }
197  // on recompiling resources we are done
198  if ($smarty->resource_caching && !$resource->recompiled) {
199  // may by we have already $unique_resource
200  $is_relative = false;
201  if (!isset($unique_resource)) {
202  $is_relative = isset($name[1]) && $name[0] == '.' && ($name[1] == '.' || $name[1] == '/') &&
203  ($type == 'file' || (isset($_template->parent->source) && $_template->parent->source->type == 'extends'));
204  $unique_resource = $resource->buildUniqueResourceName($smarty, $is_relative ? $source->filepath . $name : $name);
205  }
206  $source->unique_resource = $unique_resource;
207  // save in runtime cache if not relative
208  if (!$is_relative) {
209  $smarty->source_objects[$unique_resource] = $source;
210  }
211  }
212  return $source;
213  }
214 
220  public function renderUncompiled(Smarty_Internal_Template $_template)
221  {
222  $level = ob_get_level();
223  ob_start();
224  try {
225  $this->handler->renderUncompiled($_template->source, $_template);
226  return ob_get_clean();
227  }
228  catch (Exception $e) {
229  while (ob_get_level() > $level) {
230  ob_end_clean();
231  }
232  throw $e;
233  }
234  }
235 
244  public function __set($property_name, $value)
245  {
246  switch ($property_name) {
247  // regular attributes
248  case 'timestamp':
249  case 'exists':
250  case 'content':
251  // required for extends: only
252  case 'template':
253  $this->$property_name = $value;
254  break;
255 
256  default:
257  throw new SmartyException("source property '$property_name' does not exist.");
258  }
259  }
260 
269  public function __get($property_name)
270  {
271  switch ($property_name) {
272  case 'timestamp':
273  case 'exists':
274  $this->handler->populateTimestamp($this);
275 
276  return $this->$property_name;
277 
278  case 'content':
279  return $this->content = $this->handler->getContent($this);
280 
281  default:
282  throw new SmartyException("source property '$property_name' does not exist.");
283  }
284  }
285 }




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.