Skip to content

Commit

Permalink
feat: moved custom twig extensions to own classes (#2929)
Browse files Browse the repository at this point in the history
  • Loading branch information
modelrailroader committed Apr 27, 2024
1 parent bb5bda7 commit 525e028
Show file tree
Hide file tree
Showing 6 changed files with 80 additions and 22 deletions.
1 change: 1 addition & 0 deletions phpmyfaq/admin/forms.translations.php
Expand Up @@ -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;
Expand Down
12 changes: 2 additions & 10 deletions phpmyfaq/admin/group.php
Expand Up @@ -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);
Expand Down Expand Up @@ -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);
16 changes: 4 additions & 12 deletions phpmyfaq/admin/news.php
Expand Up @@ -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;
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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);
25 changes: 25 additions & 0 deletions phpmyfaq/src/phpMyFAQ/Template/FormatDateTwigExtension.php
@@ -0,0 +1,25 @@
<?php

namespace phpMyFAQ\Template;

use phpMyFAQ\Configuration;
use phpMyFAQ\Date;
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;

class FormatDateTwigExtension extends AbstractExtension
{
public function getFilters(): array
{
return [
new TwigFilter('formatDate', $this->formatDate(...)),
];
}

private function formatDate(string $string): string
{
$faqConfig = Configuration::getConfigurationInstance();
$date = new Date($faqConfig);
return $date->format($string);
}
}
22 changes: 22 additions & 0 deletions phpmyfaq/src/phpMyFAQ/Template/IsoDateTwigExtension.php
@@ -0,0 +1,22 @@
<?php

namespace phpMyFAQ\Template;

use phpMyFAQ\Date;
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;

class IsoDateTwigExtension extends AbstractExtension
{
public function getFilters(): array
{
return [
new TwigFilter('createIsoDate', $this->createIsoDate(...)),
];
}

private function createIsoDate(string $string): string
{
return Date::createIsoDate($string);
}
}
@@ -0,0 +1,26 @@
<?php

namespace phpMyFAQ\Template;

use phpMyFAQ\Translation;
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;

class PermissionTranslationTwigExtension extends AbstractExtension
{
public function getFilters(): array
{
return [
new TwigFilter('permission', $this->getPermissionTranslation(...)),
];
}

private function getPermissionTranslation(string $string): string
{
$translationCode = sprintf(
'permission::%s',
$string
);
return Translation::get($translationCode);
}
}

0 comments on commit 525e028

Please sign in to comment.