svn: /pear2/Templates_Savant/trunk/ src/Templates/Savant/Main.php src/Templates/Savant/ObjectProxy.php tests/globals/basic.phpt tests/globals/basic.tpl.php tests/globals/escape.arrays.phpt tests/globals/escape.nestedarrays.phpt tests/globals/escape.phpt
[email protected] (Brett Bieber) Wed, 12 Jan 2011 20:40:06 +0000
| Newsgroups | php.pear.cvs,php.pear.core |
|---|---|
| Message-ID | <[email protected]> |
saltybeagle Wed, 12 Jan 2011 20:40:06 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=307417
Log:
Improve escaping of arrays. Add tests for setting and getting globals.
Changed paths:
U pear2/Templates_Savant/trunk/src/Templates/Savant/Main.php
U pear2/Templates_Savant/trunk/src/Templates/Savant/ObjectProxy.php
A pear2/Templates_Savant/trunk/tests/globals/
A pear2/Templates_Savant/trunk/tests/globals/basic.phpt
A pear2/Templates_Savant/trunk/tests/globals/basic.tpl.php
A pear2/Templates_Savant/trunk/tests/globals/escape.arrays.phpt
A pear2/Templates_Savant/trunk/tests/globals/escape.nestedarrays.phpt
A pear2/Templates_Savant/trunk/tests/globals/escape.phpt
Modified: pear2/Templates_Savant/trunk/src/Templates/Savant/Main.php
===================================================================
--- pear2/Templates_Savant/trunk/src/Templates/Savant/Main.php 2011-01-12 19:50:09 UTC (rev 307416)
+++ pear2/Templates_Savant/trunk/src/Templates/Savant/Main.php 2011-01-12 20:40:06 UTC (rev 307417)
@@ -234,9 +234,7 @@
$value = $this->escape($value);
break;
case 'array':
- foreach ($value as $key=>$sub_value) {
- $value[$key] = $this->escape($sub_value);
- }
+ $value = new ObjectProxy\ArrayAccess(new \ArrayIterator($value), $this);
break;
}
}
Modified: pear2/Templates_Savant/trunk/src/Templates/Savant/ObjectProxy.php
===================================================================
--- pear2/Templates_Savant/trunk/src/Templates/Savant/ObjectProxy.php 2011-01-12 19:50:09 UTC (rev 307416)
+++ pear2/Templates_Savant/trunk/src/Templates/Savant/ObjectProxy.php 2011-01-12 20:40:06 UTC (rev 307417)
@@ -82,9 +82,10 @@
return self::factory($var, $this->savant);
case 'string':
case 'int':
- case 'bool':
case 'double':
return $this->savant->escape($var);
+ case 'array':
+ return new ObjectProxy\ArrayAccess(new \ArrayIterator($var), $this->savant);
}
return $var;
}
Added: pear2/Templates_Savant/trunk/tests/globals/basic.phpt
===================================================================
--- pear2/Templates_Savant/trunk/tests/globals/basic.phpt (rev 0)
+++ pear2/Templates_Savant/trunk/tests/globals/basic.phpt 2011-01-12 20:40:06 UTC (rev 307417)
@@ -0,0 +1,15 @@
+--TEST--
+\PEAR2\Templates\Savant\Main::addGlobal() basic test
+--FILE--
+<?php
+require dirname(__FILE__) . '/../test_framework.php.inc';
+chdir(__DIR__);
+$savvy = new \PEAR2\Templates\Savant\Main();
+
+$savvy->addGlobal('foo', true);
+
+echo $savvy->render(null, 'basic.tpl.php');
+
+?>
+--EXPECT--
+===DONE===
\ No newline at end of file
Added: pear2/Templates_Savant/trunk/tests/globals/basic.tpl.php
===================================================================
--- pear2/Templates_Savant/trunk/tests/globals/basic.tpl.php (rev 0)
+++ pear2/Templates_Savant/trunk/tests/globals/basic.tpl.php 2011-01-12 20:40:06 UTC (rev 307417)
@@ -0,0 +1,6 @@
+<?php
+ if (isset($foo)
+ && true === $foo) {
+ echo '===DONE===';
+ }
+?>
\ No newline at end of file
Added: pear2/Templates_Savant/trunk/tests/globals/escape.arrays.phpt
===================================================================
--- pear2/Templates_Savant/trunk/tests/globals/escape.arrays.phpt (rev 0)
+++ pear2/Templates_Savant/trunk/tests/globals/escape.arrays.phpt 2011-01-12 20:40:06 UTC (rev 307417)
@@ -0,0 +1,23 @@
+--TEST--
+\PEAR2\Templates\Savant\Main::addGlobal() Escape added global array
+--FILE--
+<?php
+require dirname(__FILE__) . '/../test_framework.php.inc';
+chdir(__DIR__);
+$savvy = new \PEAR2\Templates\Savant\Main();
+
+$savvy->setEscape('htmlspecialchars');
+
+$unescaped = array(
+ '<a href="Blah">Blah</a>'
+);
+
+$savvy->addGlobal('foo', $unescaped);
+
+$escaped = $savvy->getGlobals();
+
+echo $escaped['foo'][0];
+
+?>
+--EXPECT--
+<a href="Blah">Blah</a>
\ No newline at end of file
Added: pear2/Templates_Savant/trunk/tests/globals/escape.nestedarrays.phpt
===================================================================
--- pear2/Templates_Savant/trunk/tests/globals/escape.nestedarrays.phpt (rev 0)
+++ pear2/Templates_Savant/trunk/tests/globals/escape.nestedarrays.phpt 2011-01-12 20:40:06 UTC (rev 307417)
@@ -0,0 +1,23 @@
+--TEST--
+\PEAR2\Templates\Savant\Main::addGlobal() Escape added global array
+--FILE--
+<?php
+require dirname(__FILE__) . '/../test_framework.php.inc';
+chdir(__DIR__);
+$savvy = new \PEAR2\Templates\Savant\Main();
+
+$savvy->setEscape('htmlspecialchars');
+
+$unescaped = array(
+ '<a href="Blah">Blah</a>'
+);
+
+$savvy->addGlobal('foo', array($unescaped));
+
+$escaped = $savvy->getGlobals();
+
+echo $escaped['foo'][0][0];
+
+?>
+--EXPECT--
+<a href="Blah">Blah</a>
\ No newline at end of file
Added: pear2/Templates_Savant/trunk/tests/globals/escape.phpt
===================================================================
--- pear2/Templates_Savant/trunk/tests/globals/escape.phpt (rev 0)
+++ pear2/Templates_Savant/trunk/tests/globals/escape.phpt 2011-01-12 20:40:06 UTC (rev 307417)
@@ -0,0 +1,21 @@
+--TEST--
+\PEAR2\Templates\Savant\Main::addGlobal() Escape added globals test
+--FILE--
+<?php
+require dirname(__FILE__) . '/../test_framework.php.inc';
+chdir(__DIR__);
+$savvy = new \PEAR2\Templates\Savant\Main();
+
+function myEscape($var)
+{
+ echo '===DONE===';
+ return $var;
+}
+
+$savvy->setEscape('myEscape');
+
+$savvy->addGlobal('foo', 'lalalala');
+
+?>
+--EXPECT--
+===DONE===
\ No newline at end of file