Fix warnings about unused local variables
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / system / template / TemplateCompiler.class.php
1 <?php
2 namespace wcf\system\template;
3 use wcf\system\io\AtomicWriter;
4
5 /**
6 * Compiles template source into valid PHP code.
7 *
8 * @author Marcel Werk
9 * @copyright 2001-2016 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
14 */
15 class TemplateCompiler extends TemplateScriptingCompiler {
16 /**
17 * Compiles the source of a template.
18 *
19 * @param string $templateName
20 * @param string $sourceContent
21 * @param string $compiledFilename
22 * @param array $metaData
23 */
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");
28
29 // include plug-ins
30 $compiledContent = $this->compileString($templateName, $sourceContent, $metaData);
31 $writer->write($compiledContent['template']);
32
33 // write meta data to file
34 $this->saveMetaData($templateName, $metaData['filename'], $compiledContent['meta']);
35
36 $writer->flush();
37 $writer->close();
38 }
39
40 /**
41 * Saves meta data for given template.
42 *
43 * @param string $templateName
44 * @param string $filename
45 * @param string $content
46 */
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));
51 $writer->flush();
52 $writer->close();
53 }
54
55 /**
56 * Returns the name of the current template.
57 *
58 * @return string
59 */
60 public function getCurrentTemplate() {
61 return $this->getCurrentIdentifier();
62 }
63 }