3 * @file src/Render/FriendicaSmartyEngine.php
5 namespace Friendica\Render;
7 use Friendica\Core\Addon;
9 define('SMARTY3_TEMPLATE_FOLDER', 'templates');
11 class FriendicaSmartyEngine implements ITemplateEngine
13 static $name = "smarty3";
15 public function __construct()
17 if (!is_writable('view/smarty3/')) {
18 echo "<b>ERROR:</b> folder <tt>view/smarty3/</tt> must be writable by webserver.";
23 // ITemplateEngine interface
24 public function replaceMacros($s, $r)
27 if (gettype($s) === 'string') {
29 $s = new FriendicaSmarty();
32 $r['$APP'] = get_app();
34 // "middleware": inject variables into templates
36 "template" => basename($s->filename),
39 Addon::callHooks("template_vars", $arr);
42 foreach ($r as $key => $value) {
43 if ($key[0] === '$') {
44 $key = substr($key, 1);
47 $s->assign($key, $value);
49 return $s->parsed($template);
52 public function getTemplateFile($file, $root = '')
55 $template_file = get_template_file($a, SMARTY3_TEMPLATE_FOLDER . '/' . $file, $root);
56 $template = new FriendicaSmarty();
57 $template->filename = $template_file;