Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: moved custom twig extensions to own classes #2929

Merged
merged 2 commits into from Apr 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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);
}
}