From 525e028638b6cbdeeb53273985f353e5878a5c6a Mon Sep 17 00:00:00 2001 From: Jan <96944229+modelrailroader@users.noreply.github.com> Date: Sat, 27 Apr 2024 13:15:46 +0200 Subject: [PATCH] feat: moved custom twig extensions to own classes (#2929) --- phpmyfaq/admin/forms.translations.php | 1 + phpmyfaq/admin/group.php | 12 ++------- phpmyfaq/admin/news.php | 16 +++--------- .../Template/FormatDateTwigExtension.php | 25 ++++++++++++++++++ .../Template/IsoDateTwigExtension.php | 22 ++++++++++++++++ .../PermissionTranslationTwigExtension.php | 26 +++++++++++++++++++ 6 files changed, 80 insertions(+), 22 deletions(-) create mode 100644 phpmyfaq/src/phpMyFAQ/Template/FormatDateTwigExtension.php create mode 100644 phpmyfaq/src/phpMyFAQ/Template/IsoDateTwigExtension.php create mode 100644 phpmyfaq/src/phpMyFAQ/Template/PermissionTranslationTwigExtension.php diff --git a/phpmyfaq/admin/forms.translations.php b/phpmyfaq/admin/forms.translations.php index 4a2f21f88c..0f1b7ad07c 100644 --- a/phpmyfaq/admin/forms.translations.php +++ b/phpmyfaq/admin/forms.translations.php @@ -49,6 +49,7 @@ } // Twig filter for language codes + // Not seperated as TwigExtension because of special function and handling of 'default' value in this context $filter = new TwigFilter('languageCode', function ($string) { if ($string === 'default') { return $string; diff --git a/phpmyfaq/admin/group.php b/phpmyfaq/admin/group.php index b41f24d255..31b3f7e747 100644 --- a/phpmyfaq/admin/group.php +++ b/phpmyfaq/admin/group.php @@ -28,7 +28,7 @@ use phpMyFAQ\User; use phpMyFAQ\User\CurrentUser; use Twig\Extension\DebugExtension; -use Twig\TwigFilter; +use phpMyFAQ\Template\PermissionTranslationTwigExtension; if (!defined('IS_VALID_PHPMYFAQ')) { http_response_code(400); @@ -322,17 +322,9 @@ ]; } -$filter = new TwigFilter('permission', function ($string) { - $translationCode = sprintf( - 'permission::%s', - $string - ); - return Translation::get($translationCode); -}); - $twig = new TwigWrapper(PMF_ROOT_DIR . '/assets/templates'); $twig->addExtension(new DebugExtension()); -$twig->addFilter($filter); +$twig->addExtension(new PermissionTranslationTwigExtension()); $template = $twig->loadTemplate('./admin/user/group.twig'); echo $template->render($templateVars); diff --git a/phpmyfaq/admin/news.php b/phpmyfaq/admin/news.php index 34092ef3c1..57f90ddbb0 100644 --- a/phpmyfaq/admin/news.php +++ b/phpmyfaq/admin/news.php @@ -24,6 +24,8 @@ use phpMyFAQ\Helper\LanguageHelper; use phpMyFAQ\News; use phpMyFAQ\Session\Token; +use phpMyFAQ\Template\FormatDateTwigExtension; +use phpMyFAQ\Template\IsoDateTwigExtension; use phpMyFAQ\Template\TwigWrapper; use phpMyFAQ\Translation; use Twig\Extension\DebugExtension; @@ -90,16 +92,6 @@ 'csrfToken_activateNews' => Token::getInstance()->getTokenString('activate-news') ]; -$filterCreateIsoDate = new TwigFilter('createIsoDate', function ($string) { - return Date::createIsoDate($string); -}); - -$filterFormatDate = new TwigFilter('formatDate', function ($string) { - $faqConfig = Configuration::getConfigurationInstance(); - $date = new Date($faqConfig); - return $date->format($string); -}); - if ('add-news' == $action && $user->perm->hasPermission($user->getUserId(), 'addnews')) { $templateVars = [ ...$templateVars, @@ -144,8 +136,8 @@ $twig = new TwigWrapper(PMF_ROOT_DIR . '/assets/templates'); $twig->addExtension(new DebugExtension()); -$twig->addFilter($filterFormatDate); -$twig->addFilter($filterCreateIsoDate); +$twig->addExtension(new IsoDateTwigExtension()); +$twig->addExtension(new FormatDateTwigExtension()); $template = $twig->loadTemplate('./admin/content/news.twig'); echo $template->render($templateVars); diff --git a/phpmyfaq/src/phpMyFAQ/Template/FormatDateTwigExtension.php b/phpmyfaq/src/phpMyFAQ/Template/FormatDateTwigExtension.php new file mode 100644 index 0000000000..bbff8cf1d1 --- /dev/null +++ b/phpmyfaq/src/phpMyFAQ/Template/FormatDateTwigExtension.php @@ -0,0 +1,25 @@ +formatDate(...)), + ]; + } + + private function formatDate(string $string): string + { + $faqConfig = Configuration::getConfigurationInstance(); + $date = new Date($faqConfig); + return $date->format($string); + } +} diff --git a/phpmyfaq/src/phpMyFAQ/Template/IsoDateTwigExtension.php b/phpmyfaq/src/phpMyFAQ/Template/IsoDateTwigExtension.php new file mode 100644 index 0000000000..2705bf2732 --- /dev/null +++ b/phpmyfaq/src/phpMyFAQ/Template/IsoDateTwigExtension.php @@ -0,0 +1,22 @@ +createIsoDate(...)), + ]; + } + + private function createIsoDate(string $string): string + { + return Date::createIsoDate($string); + } +} diff --git a/phpmyfaq/src/phpMyFAQ/Template/PermissionTranslationTwigExtension.php b/phpmyfaq/src/phpMyFAQ/Template/PermissionTranslationTwigExtension.php new file mode 100644 index 0000000000..01d68bfebc --- /dev/null +++ b/phpmyfaq/src/phpMyFAQ/Template/PermissionTranslationTwigExtension.php @@ -0,0 +1,26 @@ +getPermissionTranslation(...)), + ]; + } + + private function getPermissionTranslation(string $string): string + { + $translationCode = sprintf( + 'permission::%s', + $string + ); + return Translation::get($translationCode); + } +}