git subrepo commit (merge) mailcow/src/mailcow-dockerized

subrepo: subdir:   "mailcow/src/mailcow-dockerized"
  merged:   "32243e56"
upstream: origin:   "https://github.com/mailcow/mailcow-dockerized.git"
  branch:   "master"
  commit:   "e2b4b6f6"
git-subrepo: version:  "0.4.3"
  origin:   "???"
  commit:   "???"
Change-Id: I51e2016ef5ab88a8b0bdc08551b18f48ceef0aa5
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/twig/twig/src/Node/WithNode.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/twig/twig/src/Node/WithNode.php
new file mode 100644
index 0000000..56a3344
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/twig/twig/src/Node/WithNode.php
@@ -0,0 +1,70 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Twig\Node;
+
+use Twig\Compiler;
+
+/**
+ * Represents a nested "with" scope.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+class WithNode extends Node
+{
+    public function __construct(Node $body, ?Node $variables, bool $only, int $lineno, string $tag = null)
+    {
+        $nodes = ['body' => $body];
+        if (null !== $variables) {
+            $nodes['variables'] = $variables;
+        }
+
+        parent::__construct($nodes, ['only' => $only], $lineno, $tag);
+    }
+
+    public function compile(Compiler $compiler): void
+    {
+        $compiler->addDebugInfo($this);
+
+        $parentContextName = $compiler->getVarName();
+
+        $compiler->write(sprintf("\$%s = \$context;\n", $parentContextName));
+
+        if ($this->hasNode('variables')) {
+            $node = $this->getNode('variables');
+            $varsName = $compiler->getVarName();
+            $compiler
+                ->write(sprintf('$%s = ', $varsName))
+                ->subcompile($node)
+                ->raw(";\n")
+                ->write(sprintf("if (!twig_test_iterable(\$%s)) {\n", $varsName))
+                ->indent()
+                ->write("throw new RuntimeError('Variables passed to the \"with\" tag must be a hash.', ")
+                ->repr($node->getTemplateLine())
+                ->raw(", \$this->getSourceContext());\n")
+                ->outdent()
+                ->write("}\n")
+                ->write(sprintf("\$%s = twig_to_array(\$%s);\n", $varsName, $varsName))
+            ;
+
+            if ($this->getAttribute('only')) {
+                $compiler->write("\$context = [];\n");
+            }
+
+            $compiler->write(sprintf("\$context = \$this->env->mergeGlobals(array_merge(\$context, \$%s));\n", $varsName));
+        }
+
+        $compiler
+            ->subcompile($this->getNode('body'))
+            ->write(sprintf("\$context = \$%s;\n", $parentContextName))
+        ;
+    }
+}