diff --git a/src/Twig/TwigExtension.php b/src/Twig/TwigExtension.php index 8990c6be..8cf7fe4f 100644 --- a/src/Twig/TwigExtension.php +++ b/src/Twig/TwigExtension.php @@ -5,30 +5,12 @@ namespace Drupal\webform\Twig; use Drupal\Component\Utility\Html; use Drupal\Core\Entity\EntityInterface; use Drupal\webform\Utility\WebformHtmlHelper; -use Drupal\webform\WebformTokenManagerInterface; /** * Twig extension with some useful functions and filters. */ class TwigExtension extends \Twig_Extension { - /** - * The webform token manager. - * - * @var \Drupal\webform\WebformTokenManagerInterface - */ - protected $tokenManager; - - /** - * Constructs a TwigExtension object. - * - * @param \Drupal\webform\WebformTokenManagerInterface $token_manager - * The webform token manager. - */ - public function __construct(WebformTokenManagerInterface $token_manager) { - $this->tokenManager = $token_manager; - } - /** * {@inheritdoc} */ @@ -70,7 +52,19 @@ class TwigExtension extends \Twig_Extension { return $token; } - $value = $this->tokenManager->replace($token, $entity, $data, $options); + // IMPORTANT: We are not injecting the WebformTokenManager to prevent + // errors being thrown when updating the Webform.module. + // ISSUE. This TwigExtension is loaded on every page load, even when a + // website is in maintenance mode. + // @see https://www.drupal.org/node/2907960 + /** @var \Drupal\webform\WebformTokenManagerInterface $value */ + try { + $value = \Drupal::service('webform.token_manager')->replace($token, $entity, $data, $options); + } + catch (\Exception $exception) { + return $token; + } + // Must decode HTML entities which are going to re-encoded. $value = Html::decodeEntities($value); diff --git a/webform.services.yml b/webform.services.yml index e3fb59a5..f9899f02 100644 --- a/webform.services.yml +++ b/webform.services.yml @@ -110,6 +110,5 @@ services: webform.twig_extension: class: Drupal\webform\Twig\TwigExtension - arguments: ['@webform.token_manager'] tags: - { name: twig.extension }