From 8b05af176c100ea1e4c9dfd9e902d55efca92ea2 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 18 May 2020 18:10:21 -0400 Subject: [PATCH] Add detailed error messages for admin user in Core\Renderer and Render\FriendicaSmartyEngine --- src/Core/Renderer.php | 26 ++++++++++++++++++++------ src/Render/FriendicaSmartyEngine.php | 8 ++++++-- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/Core/Renderer.php b/src/Core/Renderer.php index 40b3fb118..bf4cd3907 100644 --- a/src/Core/Renderer.php +++ b/src/Core/Renderer.php @@ -86,7 +86,10 @@ 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 = is_site_admin() ? + $e->getMessage() : + DI::l10n()->t('Friendica can\'t display this page at the moment, please contact the administrator.'); + throw new InternalServerErrorException($message); } DI::profiler()->saveTimestamp($stamp1, "rendering", System::callstack()); @@ -112,7 +115,10 @@ class Renderer $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 = is_site_admin() ? + $e->getMessage() : + DI::l10n()->t('Friendica can\'t display this page at the moment, please contact the administrator.'); + throw new InternalServerErrorException($message); } DI::profiler()->saveTimestamp($stamp1, "file", System::callstack()); @@ -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 = is_site_admin() ? + $admin_message : + DI::l10n()->t('Friendica can\'t display this page at the moment, please contact the administrator.'); + throw new InternalServerErrorException($message); } } @@ -164,8 +174,12 @@ class Renderer } } - 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 = is_site_admin() ? + $admin_message : + DI::l10n()->t('Friendica can\'t display this page at the moment, please contact the administrator.'); + throw new InternalServerErrorException($message); } /** diff --git a/src/Render/FriendicaSmartyEngine.php b/src/Render/FriendicaSmartyEngine.php index 9b3739d98..2c76ff025 100644 --- a/src/Render/FriendicaSmartyEngine.php +++ b/src/Render/FriendicaSmartyEngine.php @@ -49,8 +49,12 @@ final class FriendicaSmartyEngine extends TemplateEngine $this->smarty = new FriendicaSmarty($this->theme, $this->theme_info); if (!is_writable(DI::basePath() . '/view/smarty3')) { - DI::logger()->critical(DI::l10n()->t('The folder view/smarty3/ must be writable by webserver.')); - 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('The folder view/smarty3/ must be writable by webserver.'); + DI::logger()->critical($admin_message); + $message = is_site_admin() ? + $admin_message : + DI::l10n()->t('Friendica can\'t display this page at the moment, please contact the administrator.'); + throw new InternalServerErrorException($message); } }