From 0498b209b551cad5595312583e5d6fb1bc3303a5 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Thu, 23 Jan 2020 20:06:32 +0100 Subject: Execute common plugin hooks before rendering login page --- application/front/controllers/LoginController.php | 2 +- .../front/controllers/ShaarliController.php | 38 ++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) (limited to 'application/front') diff --git a/application/front/controllers/LoginController.php b/application/front/controllers/LoginController.php index 47fa3ee3..23efb592 100644 --- a/application/front/controllers/LoginController.php +++ b/application/front/controllers/LoginController.php @@ -41,6 +41,6 @@ class LoginController extends ShaarliController ->assignView('pagetitle', t('Login') .' - '. $this->ci->conf->get('general.title', 'Shaarli')) ; - return $response->write($this->ci->pageBuilder->render('loginform')); + return $response->write($this->render('loginform')); } } diff --git a/application/front/controllers/ShaarliController.php b/application/front/controllers/ShaarliController.php index 2a166c3c..99e66d53 100644 --- a/application/front/controllers/ShaarliController.php +++ b/application/front/controllers/ShaarliController.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace Shaarli\Front\Controller; +use Shaarli\Bookmark\BookmarkFilter; use Shaarli\Container\ShaarliContainer; abstract class ShaarliController @@ -28,4 +29,41 @@ abstract class ShaarliController return $this; } + + protected function render(string $template): string + { + $this->assignView('linkcount', $this->ci->bookmarkService->count(BookmarkFilter::$ALL)); + $this->assignView('privateLinkcount', $this->ci->bookmarkService->count(BookmarkFilter::$PRIVATE)); + $this->assignView('plugin_errors', $this->ci->pluginManager->getErrors()); + + $this->executeDefaultHooks($template); + + return $this->ci->pageBuilder->render($template); + } + + /** + * Call plugin hooks for header, footer and includes, specifying which page will be rendered. + * Then assign generated data to RainTPL. + */ + protected function executeDefaultHooks(string $template): void + { + $common_hooks = [ + 'includes', + 'header', + 'footer', + ]; + + foreach ($common_hooks as $name) { + $plugin_data = []; + $this->ci->pluginManager->executeHooks( + 'render_' . $name, + $plugin_data, + [ + 'target' => $template, + 'loggedin' => $this->ci->loginManager->isLoggedIn() + ] + ); + $this->assignView('plugins_' . $name, $plugin_data); + } + } } -- cgit v1.2.3