2 namespace wcf\system\template
;
3 use wcf\system\io\AtomicWriter
;
6 * Compiles template source into valid PHP code.
9 * @copyright 2001-2015 WoltLab GmbH
10 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
11 * @package com.woltlab.wcf
12 * @subpackage system.template
13 * @category Community Framework
15 class TemplateCompiler
extends TemplateScriptingCompiler
{
17 * Compiles the source of a template.
19 * @param string $templateName
20 * @param string $sourceContent
21 * @param string $compiledFilename
22 * @param array $metaData
24 public function compile($templateName, $sourceContent, $compiledFilename, $metaData) {
25 $writer = new AtomicWriter($compiledFilename);
26 // build fileheader for template
27 $writer->write("<?php\n/**\n * WoltLab Community Framework\n * Template: ".$templateName."\n * Compiled at: ".gmdate('r')."\n * \n * DO NOT EDIT THIS FILE\n */\n\$this->v['tpl']['template'] = '".addcslashes($templateName, "'\\")."';\n?>\n");
30 $compiledContent = $this->compileString($templateName, $sourceContent, $metaData);
31 $writer->write($compiledContent['template']);
33 // write meta data to file
34 $this->saveMetaData($templateName, $metaData['filename'], $compiledContent['meta']);
41 * Saves meta data for given template.
43 * @param string $templateName
44 * @param string $filename
45 * @param string $content
47 public function saveMetaData($templateName, $filename, $content) {
48 $writer = new AtomicWriter($filename);
49 $writer->write("<?php exit; /* meta data for template: ".$templateName." (generated at ".gmdate('r').") DO NOT EDIT THIS FILE */ ?>\n");
50 $writer->write(serialize($content));
56 * Returns the name of the current template.
60 public function getCurrentTemplate() {
61 return $this->getCurrentIdentifier();