Преглед на файлове

[Twig] made code compatible with Twig 1.5

Fabien Potencier преди 13 години
родител
ревизия
adea589a3d
променени са 1 файла, в които са добавени 17 реда и са изтрити 8 реда
  1. 17 8
      src/Symfony/Bridge/Twig/Node/TransNode.php

+ 17 - 8
src/Symfony/Bridge/Twig/Node/TransNode.php

@@ -89,15 +89,24 @@ class TransNode extends \Twig_Node
             return array($body, $vars);
         }
 
-        $current = array();
-        foreach ($vars as $name => $var) {
-            $current[$name] = true;
-        }
-
         preg_match_all('/(?<!%)%([^%]+)%/', $msg, $matches);
-        foreach ($matches[1] as $var) {
-            if (!isset($current['%'.$var.'%'])) {
-                $vars->setNode('%'.$var.'%', new \Twig_Node_Expression_Name($var, $body->getLine()));
+
+        if (version_compare(\Twig_Environment::VERSION, '1.5', '>=')) {
+            foreach ($matches[1] as $var) {
+                $key = new \Twig_Node_Expression_Constant('%'.$var.'%', $body->getLine());
+                if (!$vars->hasElement($key)) {
+                    $vars->addElement(new \Twig_Node_Expression_Name($var, $body->getLine()), $key);
+                }
+            }
+        } else {
+            $current = array();
+            foreach ($vars as $name => $var) {
+                $current[$name] = true;
+            }
+            foreach ($matches[1] as $var) {
+                if (!isset($current['%'.$var.'%'])) {
+                    $vars->setNode('%'.$var.'%', new \Twig_Node_Expression_Name($var, $body->getLine()));
+                }
             }
         }