web/lib/Zend/View/Helper/Json.php
changeset 807 877f952ae2bd
parent 207 621fa6caec0c
child 1230 68c69c656a2c
--- a/web/lib/Zend/View/Helper/Json.php	Thu Mar 21 17:31:31 2013 +0100
+++ b/web/lib/Zend/View/Helper/Json.php	Thu Mar 21 19:50:53 2013 +0100
@@ -15,8 +15,8 @@
  * @category   Zend
  * @package    Zend_View
  * @subpackage Helper
- * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
- * @version    $Id: Json.php 23451 2010-11-28 13:10:03Z ramon $
+ * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
+ * @version    $Id: Json.php 25091 2012-11-07 19:58:48Z rob $
  * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
 
@@ -34,7 +34,7 @@
  *
  * @package    Zend_View
  * @subpackage Helper
- * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
  * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
 class Zend_View_Helper_Json extends Zend_View_Helper_Abstract
@@ -43,28 +43,38 @@
      * Encode data as JSON, disable layouts, and set response header
      *
      * If $keepLayouts is true, does not disable layouts.
+     * If $encodeJson is false, does not JSON-encode $data
      *
      * @param  mixed $data
      * @param  bool $keepLayouts
      * NOTE:   if boolean, establish $keepLayouts to true|false
      *         if array, admit params for Zend_Json::encode as enableJsonExprFinder=>true|false
-     *         this array can contains a 'keepLayout'=>true|false
+     *         this array can contains a 'keepLayout'=>true|false and/or 'encodeData'=>true|false
      *         that will not be passed to Zend_Json::encode method but will be used here
+     * @param  bool $encodeData
      * @return string|void
      */
-    public function json($data, $keepLayouts = false)
+    public function json($data, $keepLayouts = false, $encodeData = true)
     {
         $options = array();
-        if (is_array($keepLayouts))
-        {
-            $options     = $keepLayouts;
-            $keepLayouts = (array_key_exists('keepLayouts', $keepLayouts))
-                            ? $keepLayouts['keepLayouts']
-                            : false;
-            unset($options['keepLayouts']);
+        if (is_array($keepLayouts)) {
+            $options = $keepLayouts;
+
+            $keepLayouts = false;
+            if (array_key_exists('keepLayouts', $options)) {
+                $keepLayouts = $options['keepLayouts'];
+                unset($options['keepLayouts']);
+            }
+
+            if (array_key_exists('encodeData', $options)) {
+                $encodeData = $options['encodeData'];
+                unset($options['encodeData']);
+            }
         }
 
-        $data = Zend_Json::encode($data, null, $options);
+        if ($encodeData) {
+            $data = Zend_Json::encode($data, null, $options);
+        }
         if (!$keepLayouts) {
             require_once 'Zend/Layout.php';
             $layout = Zend_Layout::getMvcInstance();