X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCore%2FRenderer.php;h=0a86cc6f86ffe890c4173e0b33dba508e66a8837;hb=7a39be8270c1ce56c7a2df078bfbfd310601c569;hp=40b3fb118612347c28b4f92a633643bdd40c2af3;hpb=64e89a516d1de36cc2a7d8ed89a0c4574ebb0a00;p=friendica.git diff --git a/src/Core/Renderer.php b/src/Core/Renderer.php index 40b3fb1186..0a86cc6f86 100644 --- a/src/Core/Renderer.php +++ b/src/Core/Renderer.php @@ -1,6 +1,6 @@ '', - 'videowidth' => 425, - 'videoheight' => 350, - 'force_max_items' => 0, - 'stylesheet' => '', + 'videowidth' => 425, + 'videoheight' => 350, + 'stylesheet' => '', 'template_engine' => 'smarty3', ]; private static $ldelim = [ 'internal' => '', - 'smarty3' => '{{' + 'smarty3' => '{{' ]; private static $rdelim = [ 'internal' => '', - 'smarty3' => '}}' + 'smarty3' => '}}' ]; /** @@ -71,11 +69,11 @@ class Renderer * @param string $template * @param array $vars * @return string - * @throws InternalServerErrorException + * @throws ServiceUnavailableException */ - public static function replaceMacros(string $template, array $vars = []) + public static function replaceMacros(string $template, array $vars = []): string { - $stamp1 = microtime(true); + DI::profiler()->startRecording('rendering'); // pass $baseurl to all templates if it isn't set $vars = array_merge(['$baseurl' => DI::baseUrl()->get(), '$APP' => DI::app()], $vars); @@ -86,10 +84,13 @@ class Renderer $output = $t->replaceMacros($template, $vars); } catch (Exception $e) { DI::logger()->critical($e->getMessage(), ['template' => $template, 'vars' => $vars]); - throw new InternalServerErrorException(DI::l10n()->t('Friendica can\'t display this page at the moment, please contact the administrator or check the Friendica log for errors.')); + $message = DI::app()->isSiteAdmin() ? + $e->getMessage() : + DI::l10n()->t('Friendica can\'t display this page at the moment, please contact the administrator.'); + throw new ServiceUnavailableException($message); } - DI::profiler()->saveTimestamp($stamp1, "rendering", System::callstack()); + DI::profiler()->stopRecording(); return $output; } @@ -100,22 +101,25 @@ class Renderer * @param string $file Template to load. * @param string $subDir Subdirectory (Optional) * - * @return string template. - * @throws InternalServerErrorException + * @return string Template + * @throws ServiceUnavailableException */ - public static function getMarkupTemplate($file, $subDir = '') + public static function getMarkupTemplate(string $file, string $subDir = ''): string { - $stamp1 = microtime(true); + DI::profiler()->startRecording('file'); $t = self::getTemplateEngine(); try { $template = $t->getTemplateFile($file, $subDir); } catch (Exception $e) { DI::logger()->critical($e->getMessage(), ['file' => $file, 'subDir' => $subDir]); - throw new InternalServerErrorException(DI::l10n()->t('Friendica can\'t display this page at the moment, please contact the administrator or check the Friendica log for errors.')); + $message = DI::app()->isSiteAdmin() ? + $e->getMessage() : + DI::l10n()->t('Friendica can\'t display this page at the moment, please contact the administrator.'); + throw new ServiceUnavailableException($message); } - DI::profiler()->saveTimestamp($stamp1, "file", System::callstack()); + DI::profiler()->stopRecording(); return $template; } @@ -124,9 +128,11 @@ class Renderer * Register template engine class * * @param string $class - * @throws InternalServerErrorException + * + * @return void + * @throws ServiceUnavailableException */ - public static function registerTemplateEngine($class) + public static function registerTemplateEngine(string $class) { $v = get_class_vars($class); @@ -134,8 +140,12 @@ class Renderer $name = $v['name']; self::$template_engines[$name] = $class; } else { - DI::logger()->critical(DI::l10n()->t('template engine cannot be registered without a name.'), ['class' => $class]); - throw new InternalServerErrorException(DI::l10n()->t('Friendica can\'t display this page at the moment, please contact the administrator or check the Friendica log for errors.')); + $admin_message = DI::l10n()->t('template engine cannot be registered without a name.'); + DI::logger()->critical($admin_message, ['class' => $class]); + $message = DI::app()->isSiteAdmin() ? + $admin_message : + DI::l10n()->t('Friendica can\'t display this page at the moment, please contact the administrator.'); + throw new ServiceUnavailableException($message); } } @@ -146,9 +156,9 @@ class Renderer * or default * * @return TemplateEngine Template Engine instance - * @throws InternalServerErrorException + * @throws ServiceUnavailableException */ - public static function getTemplateEngine() + public static function getTemplateEngine(): TemplateEngine { $template_engine = (self::$theme['template_engine'] ?? '') ?: 'smarty3'; @@ -158,14 +168,18 @@ class Renderer } else { $a = DI::app(); $class = self::$template_engines[$template_engine]; - $obj = new $class($a->getCurrentTheme(), $a->theme_info); + $obj = new $class($a->getCurrentTheme(), $a->getThemeInfo()); self::$template_engine_instance[$template_engine] = $obj; return $obj; } } - DI::logger()->critical(DI::l10n()->t('template engine is not registered!'), ['template_engine' => $template_engine]); - throw new InternalServerErrorException(DI::l10n()->t('Friendica can\'t display this page at the moment, please contact the administrator or check the Friendica log for errors.')); + $admin_message = DI::l10n()->t('template engine is not registered!'); + DI::logger()->critical($admin_message, ['template_engine' => $template_engine]); + $message = DI::app()->isSiteAdmin() ? + $admin_message : + DI::l10n()->t('Friendica can\'t display this page at the moment, please contact the administrator.'); + throw new ServiceUnavailableException($message); } /** @@ -173,7 +187,7 @@ class Renderer * * @return string the active template engine */ - public static function getActiveTemplateEngine() + public static function getActiveTemplateEngine(): string { return self::$theme['template_engine']; } @@ -182,8 +196,10 @@ class Renderer * sets the active template engine * * @param string $engine the template engine (default is Smarty3) + * + * @return void */ - public static function setActiveTemplateEngine($engine = 'smarty3') + public static function setActiveTemplateEngine(string $engine = 'smarty3') { self::$theme['template_engine'] = $engine; } @@ -199,7 +215,7 @@ class Renderer * * @return string the right delimiter */ - public static function getTemplateLeftDelimiter($engine = 'smarty3') + public static function getTemplateLeftDelimiter(string $engine = 'smarty3'): string { return self::$ldelim[$engine]; } @@ -215,7 +231,7 @@ class Renderer * * @return string the left delimiter */ - public static function getTemplateRightDelimiter($engine = 'smarty3') + public static function getTemplateRightDelimiter(string $engine = 'smarty3'): string { return self::$rdelim[$engine]; }