Allow embedding template tags within <gettext> tags.
authorMichael J. Rubinsky <mrubinsk@horde.org>
Sat, 11 Sep 2010 15:04:56 +0000 (11:04 -0400)
committerMichael J. Rubinsky <mrubinsk@horde.org>
Sat, 11 Sep 2010 15:04:56 +0000 (11:04 -0400)
Need to eval() the gettext string independently so we don't get
embedded <?php ... ?> blocks inside the _() function call.

We really need to deprecate Horde/Template...

framework/Template/lib/Horde/Template.php

index abb6169..b07829e 100644 (file)
@@ -314,8 +314,13 @@ class Horde_Template
         if (preg_match_all("/<gettext>(.+?)<\/gettext>/s", $this->_template, $matches, PREG_SET_ORDER)) {
             $replace = array();
             foreach ($matches as $val) {
-                $replace[$val[0]] = '<?php echo _(\'' . str_replace("'", "\\'", $val[1]) . '\'); ?>';
+                // eval gettext independently so we can embed tempate tags
+                $code = 'echo _(\'' . str_replace("'", "\\'", $val[1]) . '\');';
+                ob_start();
+                eval($code);
+                $replace[$val[0]] = ob_get_clean();
             }
+
             $this->_doReplace($replace);
         }
     }