]> git.mxchange.org Git - friendica.git/blobdiff - src/Render/FriendicaSmartyEngine.php
spelling: preview
[friendica.git] / src / Render / FriendicaSmartyEngine.php
index c64fd29e523e31f639e6cfd6c115d385a77a75a8..5d7ed6c0c94dbb353e01f07c8d16925c5543421c 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2022, the Friendica project
+ * @copyright Copyright (C) 2010-2023, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -31,7 +31,7 @@ use Friendica\Util\Strings;
  */
 final class FriendicaSmartyEngine extends TemplateEngine
 {
-       static $name = "smarty3";
+       static $name = 'smarty3';
 
        const FILE_PREFIX = 'file:';
        const STRING_PREFIX = 'string:';
@@ -44,25 +44,16 @@ final class FriendicaSmartyEngine extends TemplateEngine
         */
        public function __construct(string $theme, array $theme_info)
        {
-               $this->theme = $theme;
+               $this->theme      = $theme;
                $this->theme_info = $theme_info;
-               $this->smarty = new FriendicaSmarty($this->theme, $this->theme_info);
-
-               /*
-                * Enable sub-directory splitting for reducing directory descriptor
-                * size. The default behavior is to put all compiled/cached files into
-                * one single directory. Under Linux and EXT4 (and maybe other FS) this
-                * will increase the descriptor's size (which contains information
-                * about entries inside the described directory. If the descriptor is
-                * getting to big, the system will slow down as it has to read the
-                * whole directory descriptor all over again (unless you have tons of
-                * RAM available + have enabled caching inode tables (aka.
-                * "descriptors"). Still it won't hurt you.
-                */
-               $this->smarty->setUseSubDirs(true);
-
-               if (!is_writable(DI::basePath() . '/view/smarty3')) {
-                       $admin_message = DI::l10n()->t('The folder view/smarty3/ must be writable by webserver.');
+
+               $work_dir     = DI::config()->get('smarty3', 'config_dir');
+               $use_sub_dirs = DI::config()->get('smarty3', 'use_sub_dirs');
+
+               $this->smarty = new FriendicaSmarty($this->theme, $this->theme_info, $work_dir, $use_sub_dirs);
+
+               if (!is_writable($work_dir)) {
+                       $admin_message = DI::l10n()->t('The folder %s must be writable by webserver.', $work_dir);
                        DI::logger()->critical($admin_message);
                        $message = DI::app()->isSiteAdmin() ?
                                $admin_message :
@@ -90,7 +81,7 @@ final class FriendicaSmartyEngine extends TemplateEngine
 
                // "middleware": inject variables into templates
                $arr = [
-                       'template' => basename($this->smarty->filename),
+                       'template' => basename($this->smarty->filename ?? ''),
                        'vars' => $vars
                ];
                Hook::callAll('template_vars', $arr);