From 346f99b87798322866c2f95afdb23d82923f3d2c Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 18 May 2020 01:19:30 -0400 Subject: [PATCH] Add new TemplateEngine->testInstall method - Add admin summary template engine error messages --- src/Module/Admin/Summary.php | 11 ++++++++++- src/Render/FriendicaSmartyEngine.php | 8 ++++++++ src/Render/TemplateEngine.php | 8 ++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/Module/Admin/Summary.php b/src/Module/Admin/Summary.php index 4aaeaaec00..4d30f8ebf3 100644 --- a/src/Module/Admin/Summary.php +++ b/src/Module/Admin/Summary.php @@ -31,7 +31,9 @@ use Friendica\Database\DBStructure; use Friendica\DI; use Friendica\Model\Register; use Friendica\Module\BaseAdmin; +use Friendica\Module\Update\Profile; use Friendica\Network\HTTPException\InternalServerErrorException; +use Friendica\Render\FriendicaSmarty; use Friendica\Util\ConfigFileLoader; use Friendica\Util\DateTimeFormat; use Friendica\Util\Network; @@ -46,6 +48,14 @@ class Summary extends BaseAdmin // are there MyISAM tables in the DB? If so, trigger a warning message $warningtext = []; + + $templateEngine = Renderer::getTemplateEngine(); + $errors = []; + $templateEngine->testInstall($errors); + foreach ($errors as $error) { + $warningtext[] = DI::l10n()->t('Template engine (%s) error: %s', $templateEngine::$name, $error); + } + if (DBA::count(['information_schema' => 'tables'], ['engine' => 'myisam', 'table_schema' => DBA::databaseName()])) { $warningtext[] = DI::l10n()->t('Your DB still runs with MyISAM tables. You should change the engine type to InnoDB. As Friendica will use InnoDB only features in the future, you should change this! See here for a guide that may be helpful converting the table engines. You may also use the command php bin/console.php dbstructure toinnodb of your Friendica installation for an automatic conversion.
', 'https://dev.mysql.com/doc/refman/5.7/en/converting-tables-to-innodb.html'); } @@ -136,7 +146,6 @@ class Summary extends BaseAdmin throw new InternalServerErrorException('Stream is null.'); } } - } catch (\Throwable $exception) { $warningtext[] = DI::l10n()->t('The debug logfile \'%s\' is not usable. No logging possible (error: \'%s\')', $file, $exception->getMessage()); } diff --git a/src/Render/FriendicaSmartyEngine.php b/src/Render/FriendicaSmartyEngine.php index 668b91ea5b..6884364c26 100644 --- a/src/Render/FriendicaSmartyEngine.php +++ b/src/Render/FriendicaSmartyEngine.php @@ -53,6 +53,14 @@ final class FriendicaSmartyEngine extends TemplateEngine } } + /** + * @inheritDoc + */ + public function testInstall(array &$errors = null) + { + $this->smarty->testInstall($errors); + } + /** * @inheritDoc */ diff --git a/src/Render/TemplateEngine.php b/src/Render/TemplateEngine.php index 40fbfea6ca..34ce03c5d2 100644 --- a/src/Render/TemplateEngine.php +++ b/src/Render/TemplateEngine.php @@ -40,6 +40,14 @@ abstract class TemplateEngine */ abstract public function __construct(string $theme, array $theme_info); + /** + * Checks the template engine is correctly installed and configured and reports error messages in the provided + * parameter or displays them directly if it's null. + * + * @param array|null $errors + */ + abstract public function testInstall(array &$errors = null); + /** * Returns the rendered template output from the template string and variables * -- 2.39.5