diff options
| author | alec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2009-12-11 16:53:54 +0000 |
|---|---|---|
| committer | alec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2009-12-11 16:53:54 +0000 |
| commit | 003b1d193f096c69d1fe92c916bf2543f829e7f2 (patch) | |
| tree | 0d5b656117d4f78ec25e31e8b00defc2110dc115 /roundcubemail/program/include | |
| parent | dfba922026ab5fdce33d84ae1be28b684ca63d38 (diff) | |
- use proper unicode cleanup for JSON, fixes #1486356
git-svn-id: https://svn.roundcube.net/trunk@3175 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'roundcubemail/program/include')
| -rw-r--r-- | roundcubemail/program/include/rcube_json_output.php | 6 | ||||
| -rw-r--r-- | roundcubemail/program/include/rcube_shared.inc | 17 | ||||
| -rwxr-xr-x | roundcubemail/program/include/rcube_template.php | 4 |
3 files changed, 21 insertions, 6 deletions
diff --git a/roundcubemail/program/include/rcube_json_output.php b/roundcubemail/program/include/rcube_json_output.php index cb8a7dbf4..080bab631 100644 --- a/roundcubemail/program/include/rcube_json_output.php +++ b/roundcubemail/program/include/rcube_json_output.php @@ -239,7 +239,7 @@ class rcube_json_output if (!empty($this->callbacks)) $response['callbacks'] = $this->callbacks; - echo json_encode($response); + echo json_serialize($response); } @@ -251,11 +251,11 @@ class rcube_json_output private function get_js_commands() { $out = ''; - + foreach ($this->commands as $i => $args) { $method = array_shift($args); foreach ($args as $i => $arg) { - $args[$i] = json_encode($arg); + $args[$i] = json_serialize($arg); } $out .= sprintf( diff --git a/roundcubemail/program/include/rcube_shared.inc b/roundcubemail/program/include/rcube_shared.inc index f4c6f7126..547174b8a 100644 --- a/roundcubemail/program/include/rcube_shared.inc +++ b/roundcubemail/program/include/rcube_shared.inc @@ -510,7 +510,7 @@ function rc_utf8_clean($input) if (!is_string($input) || $input == '') return $input; - + // iconv/mbstring are much faster (especially with long strings) if (function_exists('mb_convert_encoding') && ($res = mb_convert_encoding($input, 'UTF8', 'UTF8'))) return $res; @@ -563,6 +563,21 @@ function rc_utf8_clean($input) return $out; } + +/** + * Convert a variable into a javascript object notation + * + * @param mixed Input value + * @return string Serialized JSON string + */ +function json_serialize($input) +{ + $input = rc_utf8_clean($input); + + return json_encode($input); +} + + /** * Explode quoted string * diff --git a/roundcubemail/program/include/rcube_template.php b/roundcubemail/program/include/rcube_template.php index 19f2d430b..5226f8db8 100755 --- a/roundcubemail/program/include/rcube_template.php +++ b/roundcubemail/program/include/rcube_template.php @@ -414,12 +414,12 @@ class rcube_template extends rcube_html_page { $out = ''; if (!$this->framed && !empty($this->js_env)) { - $out .= JS_OBJECT_NAME . '.set_env('.json_encode($this->js_env).");\n"; + $out .= JS_OBJECT_NAME . '.set_env('.json_serialize($this->js_env).");\n"; } foreach ($this->js_commands as $i => $args) { $method = array_shift($args); foreach ($args as $i => $arg) { - $args[$i] = json_encode($arg); + $args[$i] = json_serialize($arg); } $parent = $this->framed || preg_match('/^parent\./', $method); $out .= sprintf( |
