Skip to content

Commit

Permalink
Partly fixed deprecations of Twig forkcms#2777
Browse files Browse the repository at this point in the history
  • Loading branch information
aalwash committed Apr 23, 2019
1 parent b660d40 commit fe134d8
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 60 deletions.
25 changes: 13 additions & 12 deletions src/Backend/Core/Engine/TwigTemplate.php
Expand Up @@ -15,10 +15,10 @@
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\Form\FormRenderer;
use Twig_Environment;
use Twig_Extension_Debug;
use Twig_FactoryRuntimeLoader;
use Twig_Loader_Filesystem;
use Twig\Environment;
use Twig\Extension\DebugExtension;
use Twig\Loader\FilesystemLoader;
use Twig\RuntimeLoader\FactoryRuntimeLoader;

/**
* This is a twig template wrapper
Expand Down Expand Up @@ -50,7 +50,7 @@ public function __construct(bool $addToReference = true)
if ($this->debugMode) {
$this->environment->enableAutoReload();
$this->environment->setCache(false);
$this->environment->addExtension(new Twig_Extension_Debug());
$this->environment->addExtension(new DebugExtension());
}
$this->language = BL::getWorkingLanguage();
$this->connectSymfonyForms();
Expand Down Expand Up @@ -81,24 +81,25 @@ public function getContent(string $template): string
}

/**
* @return Twig_Environment
* @return Environment
* @throws \ReflectionException
*/
private function buildTwigEnvironmentForTheBackend(): Twig_Environment
private function buildTwigEnvironmentForTheBackend(): Environment
{
// path to TwigBridge library so we can locate the form theme files.
$appVariableReflection = new ReflectionClass(AppVariable::class);
$vendorTwigBridgeDir = dirname($appVariableReflection->getFileName());

// render the compiled File
$loader = new Twig_Loader_Filesystem(
$loader = new FilesystemLoader(
[
BACKEND_MODULES_PATH,
BACKEND_CORE_PATH,
$vendorTwigBridgeDir . '/Resources/views/Form',
]
);

return new Twig_Environment(
return new Environment(
$loader,
[
'cache' => Model::getContainer()->getParameter('kernel.cache_dir') . '/twig',
Expand All @@ -112,7 +113,7 @@ private function connectSymfonyForms(): void
$rendererEngine = new TwigRendererEngine(['Layout/Templates/FormLayout.html.twig'], $this->environment);
$csrfTokenManager = Model::get('security.csrf.token_manager');
$this->environment->addRuntimeLoader(
new Twig_FactoryRuntimeLoader(
new FactoryRuntimeLoader(
[
FormRenderer::class => function () use ($rendererEngine, $csrfTokenManager): FormRenderer {
return new FormRenderer($rendererEngine, $csrfTokenManager);
Expand Down Expand Up @@ -246,8 +247,8 @@ private function parseDebug(): void
{
$this->assign('debug', Model::getContainer()->getParameter('kernel.debug'));

if ($this->debugMode === true && !$this->environment->hasExtension(Twig_Extension_Debug::class)) {
$this->environment->addExtension(new Twig_Extension_Debug());
if ($this->debugMode === true && !$this->environment->hasExtension(DebugExtension::class)) {
$this->environment->addExtension(new DebugExtension());
}
}

Expand Down
79 changes: 40 additions & 39 deletions src/Common/Core/Twig/Extensions/TwigFilters.php
Expand Up @@ -5,83 +5,84 @@
/**
* Contains all Forkcms filters for Twig
*/
use Twig_Environment;
use Twig_SimpleFilter;
use Twig_SimpleFunction;

use Twig\Environment;
use \Twig\TwigFilter;
use \Twig\TwigFunction;

class TwigFilters
{
/**
* //http://twig.sensiolabs.org/doc/advanced.html#id2
* returns a collection of Twig SimpleFilters
*
* @param Twig_Environment $twig
* @param Environment $twig
* @param string $app
*/
public static function addFilters(Twig_Environment $twig, string $app): void
public static function addFilters(Environment $twig, string $app): void
{
$app .= '\Core\Engine\TemplateModifiers';
$twig->addFilter(new Twig_SimpleFilter('getpageinfo', $app.'::getPageInfo'));
$twig->addFilter(new Twig_SimpleFilter('highlight', $app.'::highlightCode'));
$twig->addFilter(new Twig_SimpleFilter('profilesetting', $app.'::profileSetting'));
$twig->addFilter(new Twig_SimpleFilter('formatcurrency', $app.'::formatCurrency', ['is_safe' => ['html']]));
$twig->addFilter(new Twig_SimpleFilter('usersetting', $app.'::userSetting'));
$twig->addFilter(new Twig_SimpleFilter('uppercase', $app.'::uppercase'));
$twig->addFilter(new Twig_SimpleFilter('rand', $app.'::random'));
$twig->addFilter(new Twig_SimpleFilter('formatfloat', $app.'::formatFloat'));
$twig->addFilter(new Twig_SimpleFilter('truncate', $app.'::truncate'));
$twig->addFilter(new Twig_SimpleFilter('camelcase', $app.'::camelCase'));
$twig->addFilter(new Twig_SimpleFilter('snakeCase', $app.'::snakeCase'));
$twig->addFilter(new Twig_SimpleFilter('stripnewlines', $app.'::stripNewlines'));
$twig->addFilter(new Twig_SimpleFilter('formatnumber', $app.'::formatNumber'));
$twig->addFilter(new Twig_SimpleFilter('tolabel', $app.'::toLabel'));
$twig->addFilter(new Twig_SimpleFilter('cleanupplaintext', $app.'::cleanupPlainText'));
$twig->addFilter(new TwigFilter('getpageinfo', $app.'::getPageInfo'));
$twig->addFilter(new TwigFilter('highlight', $app.'::highlightCode'));
$twig->addFilter(new TwigFilter('profilesetting', $app.'::profileSetting'));
$twig->addFilter(new TwigFilter('formatcurrency', $app.'::formatCurrency', ['is_safe' => ['html']]));
$twig->addFilter(new TwigFilter('usersetting', $app.'::userSetting'));
$twig->addFilter(new TwigFilter('uppercase', $app.'::uppercase'));
$twig->addFilter(new TwigFilter('rand', $app.'::random'));
$twig->addFilter(new TwigFilter('formatfloat', $app.'::formatFloat'));
$twig->addFilter(new TwigFilter('truncate', $app.'::truncate'));
$twig->addFilter(new TwigFilter('camelcase', $app.'::camelCase'));
$twig->addFilter(new TwigFilter('snakeCase', $app.'::snakeCase'));
$twig->addFilter(new TwigFilter('stripnewlines', $app.'::stripNewlines'));
$twig->addFilter(new TwigFilter('formatnumber', $app.'::formatNumber'));
$twig->addFilter(new TwigFilter('tolabel', $app.'::toLabel'));
$twig->addFilter(new TwigFilter('cleanupplaintext', $app.'::cleanupPlainText'));

// exposed PHP functions

$twig->addFilter(new Twig_SimpleFilter('urlencode', 'urlencode'));
$twig->addFilter(new Twig_SimpleFilter('rawurlencode', 'rawurlencode'));
$twig->addFilter(new Twig_SimpleFilter('striptags', 'strip_tags'));
$twig->addFilter(new Twig_SimpleFilter('addslashes', 'addslashes'));
$twig->addFilter(new Twig_SimpleFilter('count', 'count'));
$twig->addFilter(new Twig_SimpleFilter('is_array', 'is_array'));
$twig->addFilter(new Twig_SimpleFilter('ucfirst', 'ucfirst'));
$twig->addFilter(new TwigFilter('urlencode', 'urlencode'));
$twig->addFilter(new TwigFilter('rawurlencode', 'rawurlencode'));
$twig->addFilter(new TwigFilter('striptags', 'strip_tags'));
$twig->addFilter(new TwigFilter('addslashes', 'addslashes'));
$twig->addFilter(new TwigFilter('count', 'count'));
$twig->addFilter(new TwigFilter('is_array', 'is_array'));
$twig->addFilter(new TwigFilter('ucfirst', 'ucfirst'));

// Functions navigation
$twig->addFunction(new Twig_SimpleFunction(
$twig->addFunction(new TwigFunction(
'getnavigation',
$app.'::getNavigation',
['is_safe' => ['html']]
));
$twig->addFunction(new Twig_SimpleFunction(
$twig->addFunction(new TwigFunction(
'getsubnavigation',
$app.'::getSubNavigation',
['is_safe' => ['html']]
));
$twig->addFunction(new Twig_SimpleFunction(
$twig->addFunction(new TwigFunction(
'parsewidget',
$app.'::parseWidget',
['is_safe' => ['html']]
));

// Function URL

$twig->addFunction(new Twig_SimpleFunction(
$twig->addFunction(new TwigFunction(
'geturl',
$app.'::getUrl'
));
$twig->addFunction(new Twig_SimpleFunction(
$twig->addFunction(new TwigFunction(
'geturlforextraid',
$app.'::getUrlForExtraId'
));
$twig->addFunction(new Twig_SimpleFunction(
$twig->addFunction(new TwigFunction(
'geturlforblock',
$app.'::getUrlForBlock'
));

// boolean functions

$twig->addFunction(new Twig_SimpleFunction(
$twig->addFunction(new TwigFunction(
'showbool',
$app.'::showBool',
['is_safe' => ['html']]
Expand All @@ -90,10 +91,10 @@ public static function addFilters(Twig_Environment $twig, string $app): void
// @Deprecated We should look for replacements because they run on spoon library
// after we have those we can remove them

$twig->addFilter(new Twig_SimpleFilter('spoondate', $app.'::spoonDate'));
$twig->addFilter(new Twig_SimpleFilter('formatdate', $app.'::formatDate'));
$twig->addFilter(new Twig_SimpleFilter('formattime', $app.'::formatTime'));
$twig->addFilter(new Twig_SimpleFilter('timeago', $app.'::timeAgo'));
$twig->addFilter(new Twig_SimpleFilter('formatdatetime', $app.'::formatDateTime'));
$twig->addFilter(new TwigFilter('spoondate', $app.'::spoonDate'));
$twig->addFilter(new TwigFilter('formatdate', $app.'::formatDate'));
$twig->addFilter(new TwigFilter('formattime', $app.'::formatTime'));
$twig->addFilter(new TwigFilter('timeago', $app.'::timeAgo'));
$twig->addFilter(new TwigFilter('formatdatetime', $app.'::formatDateTime'));
}
}
22 changes: 13 additions & 9 deletions src/Frontend/Core/Engine/FormTokenParser.php
Expand Up @@ -2,26 +2,30 @@

namespace Frontend\Core\Engine;

use Twig\Error\SyntaxError;
use Twig\Node\Node;
use Twig\Token;
use Twig\TokenParser\AbstractTokenParser;

/**
* Twig template tag for the start/opening element of a form tag.
*/
class FormTokenParser extends \Twig_TokenParser
class FormTokenParser extends AbstractTokenParser
{
/**
* @param \Twig_Token $token
*
* @throws \Twig_Error_Syntax
* @param Token $token
*
* @return \Twig_Node
* @return Node
* @throws SyntaxError
*/
public function parse(\Twig_Token $token): \Twig_Node
public function parse(Token $token): Node
{
$stream = $this->parser->getStream();
$form = $stream->expect(\Twig_Token::NAME_TYPE)->getValue();
$stream->expect(\Twig_Token::BLOCK_END_TYPE);
$form = $stream->expect(Token::NAME_TYPE)->getValue();
$stream->expect(Token::BLOCK_END_TYPE);

if (FormState::$current !== null) {
throw new \Twig_Error_Syntax(
throw new SyntaxError(
sprintf(
'form [%s] not closed while opening form [%s]',
FormState::$current,
Expand Down

0 comments on commit fe134d8

Please sign in to comment.