From 6a280b79e2239990b7160e3d648a2a5a44a70ce9 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Tue, 28 Jun 2016 14:15:54 +0800 Subject: [PATCH] * json encode for parseJSON. --- framework/base/helper.class.php | 8 ++------ framework/helper.class.php | 25 +++++++++++++++++++++++++ module/block/control.php | 2 +- module/block/model.php | 4 ++-- module/dept/view/browse.html.php | 2 +- module/project/view/tree.html.php | 4 ++-- module/tree/view/browse.html.php | 2 +- module/tree/view/browsetask.html.php | 2 +- module/tutorial/view/index.html.php | 2 +- 9 files changed, 36 insertions(+), 15 deletions(-) diff --git a/framework/base/helper.class.php b/framework/base/helper.class.php index 2191db9fbd..df9946f0cb 100644 --- a/framework/base/helper.class.php +++ b/framework/base/helper.class.php @@ -369,13 +369,9 @@ class baseHelper * @access public * @return string decoded string. */ - static public function jsonEncode($data, $options = 0, $addslashes = false) + static public function jsonEncode($data) { - $json = ($addslashes and version_compare(phpversion(), '5.4', '<') and function_exists('get_magic_quotes_gpc') and get_magic_quotes_gpc()) ? addslashes(json_encode($data, $options)) : json_encode($data, $options); - - $escapers = array("\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c"); - $replacements = array("\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b"); - return str_replace($escapers, $replacements, $json); + return (version_compare(phpversion(), '5.4', '<') and function_exists('get_magic_quotes_gpc') and get_magic_quotes_gpc()) ? addslashes(json_encode($data)) : json_encode($data); } /** diff --git a/framework/helper.class.php b/framework/helper.class.php index eac1223ed8..02a9a75bb5 100644 --- a/framework/helper.class.php +++ b/framework/helper.class.php @@ -56,4 +56,29 @@ class helper extends baseHelper if(isset($viewType) and strpos($config->views, ',' . $viewType . ',') === false) $viewType = $config->default->view; return isset($viewType) ? $viewType : $config->default->view; } + + /** + * Encode json for $.parseJSON + * + * @param array $data + * @param int $options + * @static + * @access public + * @return string + */ + static public function jsonEncode4Parse($data, $options = 0) + { + $json = json_encode($data, $options); + + /* json_encode is not support options befor PHP5.3. */ + if($data and $options and empty($json)) + { + $json = json_encode($data); + $json = str_replace(array("'", '"'), array('\u0027', '\u0022'), $json); + } + + $escapers = array("\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c"); + $replacements = array("\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b"); + return str_replace($escapers, $replacements, $json); + } } diff --git a/module/block/control.php b/module/block/control.php index 5956e4e7fc..362dbd8908 100644 --- a/module/block/control.php +++ b/module/block/control.php @@ -167,7 +167,7 @@ class block extends control if($block) { $block->grid = $grid; - $block->params = helper::jsonEncode($block->params, $options = 0, $addslashes = true); + $block->params = helper::jsonEncode($block->params); $this->dao->replace(TABLE_BLOCK)->data($block)->exec(); if(dao::isError()) $this->send(array('result' => 'fail', 'code' => 500)); $this->send(array('result' => 'success')); diff --git a/module/block/model.php b/module/block/model.php index 4acba08a52..c1998bbf2c 100644 --- a/module/block/model.php +++ b/module/block/model.php @@ -42,7 +42,7 @@ class blockModel extends model unset($data->html); } - $data->params = helper::jsonEncode($data->params, $options = 0, $addslashes = true); + $data->params = helper::jsonEncode($data->params); $this->dao->replace(TABLE_BLOCK)->data($data)->exec(); } @@ -155,7 +155,7 @@ class blockModel extends model $block['order'] = $index; $block['module'] = $module; $block['account'] = $account; - $block['params'] = isset($block['params']) ? helper::jsonEncode($block['params'], $options = 0, $addslashes = true) : ''; + $block['params'] = isset($block['params']) ? helper::jsonEncode($block['params']) : ''; if(!isset($block['source'])) $block['source'] = $module; $this->dao->replace(TABLE_BLOCK)->data($block)->exec(); diff --git a/module/dept/view/browse.html.php b/module/dept/view/browse.html.php index 2bc2252b8a..142b01ce31 100644 --- a/module/dept/view/browse.html.php +++ b/module/dept/view/browse.html.php @@ -97,7 +97,7 @@