X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FRender%2FFriendicaSmartyEngine.php;h=36e46435fe675124c7279b3f3a03e636c325ae4a;hb=a85aa24d56e0aa0217529aaad9829ec6e7a2bc2e;hp=6fd51cf5d1a9e307920e980dc3b9cc11c1b11d19;hpb=2a00ac790f669ef5940ef2c24a9bd7ad2c3856ea;p=friendica.git diff --git a/src/Render/FriendicaSmartyEngine.php b/src/Render/FriendicaSmartyEngine.php index 6fd51cf5d1..36e46435fe 100644 --- a/src/Render/FriendicaSmartyEngine.php +++ b/src/Render/FriendicaSmartyEngine.php @@ -4,19 +4,22 @@ */ namespace Friendica\Render; -use Friendica\Core\Addon; - -define('SMARTY3_TEMPLATE_FOLDER', 'templates'); +use Friendica\Core\Hook; +/** + * Smarty implementation of the Friendica template engine interface + * + * @author Hypolite Petovan + */ class FriendicaSmartyEngine implements ITemplateEngine { static $name = "smarty3"; public function __construct() { - if (!is_writable('view/smarty3/')) { + if (!is_writable(__DIR__ . '/../../view/smarty3/')) { echo "ERROR: folder view/smarty3/ must be writable by webserver."; - killme(); + exit(); } } @@ -29,14 +32,14 @@ class FriendicaSmartyEngine implements ITemplateEngine $s = new FriendicaSmarty(); } - $r['$APP'] = get_app(); + $r['$APP'] = \get_app(); // "middleware": inject variables into templates $arr = [ "template" => basename($s->filename), "vars" => $r ]; - Addon::callHooks("template_vars", $arr); + Hook::callAll("template_vars", $arr); $r = $arr['vars']; foreach ($r as $key => $value) { @@ -51,9 +54,27 @@ class FriendicaSmartyEngine implements ITemplateEngine public function getTemplateFile($file, $root = '') { - $a = get_app(); - $template_file = get_template_file($a, SMARTY3_TEMPLATE_FOLDER . '/' . $file, $root); + $a = \get_app(); $template = new FriendicaSmarty(); + + // Make sure $root ends with a slash / + if ($root !== '' && substr($root, -1, 1) !== '/') { + $root = $root . '/'; + } + + $theme = $a->getCurrentTheme(); + $filename = $template::SMARTY3_TEMPLATE_FOLDER . '/' . $file; + + if (file_exists("{$root}view/theme/$theme/$filename")) { + $template_file = "{$root}view/theme/$theme/$filename"; + } elseif (!empty($a->theme_info['extends']) && file_exists(sprintf('%sview/theme/%s}/%s', $root, $a->theme_info['extends'], $filename))) { + $template_file = sprintf('%sview/theme/%s}/%s', $root, $a->theme_info['extends'], $filename); + } elseif (file_exists("{$root}/$filename")) { + $template_file = "{$root}/$filename"; + } else { + $template_file = "{$root}view/$filename"; + } + $template->filename = $template_file; return $template;