Use json_encode to ensure compatibility with JQuery 1.4.\r
\r
-Index: roundcubemail/program/include/rcube_template.php\r
-===================================================================\r
---- roundcubemail/program/include/rcube_template.php (revision 2980)\r
-+++ roundcubemail/program/include/rcube_template.php (revision 3170)\r
-@@ -415,10 +415,10 @@\r
- $out = '';\r
- if (!$this->framed && !empty($this->js_env)) {\r
-- $out .= JS_OBJECT_NAME . '.set_env('.json_serialize($this->js_env).");\n";\r
-+ $out .= JS_OBJECT_NAME . '.set_env('.json_encode($this->js_env).");\n";\r
- }\r
- foreach ($this->js_commands as $i => $args) {\r
- $method = array_shift($args);\r
- foreach ($args as $i => $arg) {\r
-- $args[$i] = json_serialize($arg);\r
-+ $args[$i] = json_encode($arg);\r
- }\r
- $parent = $this->framed || preg_match('/^parent\./', $method);\r
-Index: roundcubemail/program/include/rcube_shared.inc\r
-===================================================================\r
---- roundcubemail/program/include/rcube_shared.inc (revision 3132)\r
-+++ roundcubemail/program/include/rcube_shared.inc (revision 3170)\r
-@@ -106,95 +106,4 @@\r
- exit;\r
- }\r
--}\r
--\r
--\r
--/**\r
-- * Returns whether an $str is a reserved word for any of the version of Javascript or ECMAScript\r
-- * @param str String to check\r
-- * @return boolean True if $str is a reserver word, False if not\r
-- */\r
--function is_js_reserved_word($str)\r
--{\r
-- return in_array($str, array(\r
-- // ECMASript ver 4 reserved words\r
-- 'as','break','case','catch','class','const','continue',\r
-- 'default','delete','do','else','export','extends','false','finally','for','function',\r
-- 'if','import','in','instanceof','is','namespace','new','null','package','private',\r
-- 'public','return','super','switch','this','throw','true','try','typeof','use','var',\r
-- 'void','while','with',\r
-- // ECMAScript ver 4 future reserved words\r
-- 'abstract','debugger','enum','goto','implements','interface','native','protected',\r
-- 'synchronized','throws','transient','volatile',\r
-- // special meaning in some contexts\r
-- 'get','set',\r
-- // were reserved in ECMAScript ver 3\r
-- 'boolean','byte','char','double','final','float','int','long','short','static'\r
-- ));\r
--}\r
--\r
--\r
--/**\r
-- * Convert a variable into a javascript object notation\r
-- *\r
-- * @param mixed Input value\r
-- * @return string Serialized JSON string\r
-- */\r
--function json_serialize($var)\r
--{\r
-- if (is_object($var))\r
-- $var = get_object_vars($var);\r
--\r
-- if (is_array($var))\r
-- {\r
-- // empty array\r
-- if (!sizeof($var))\r
-- return '[]';\r
-- else\r
-- {\r
-- $keys_arr = array_keys($var);\r
-- $is_assoc = $have_numeric = 0;\r
--\r
-- for ($i=0; $i<sizeof($keys_arr); ++$i)\r
-- {\r
-- if (is_numeric($keys_arr[$i]))\r
-- $have_numeric = 1;\r
-- if (!is_numeric($keys_arr[$i]) || $keys_arr[$i] != $i)\r
-- $is_assoc = 1;\r
-- if ($is_assoc && $have_numeric)\r
-- break;\r
-- }\r
-- \r
-- $brackets = $is_assoc ? '{}' : '[]';\r
-- $pairs = array();\r
--\r
-- foreach ($var as $key => $value)\r
-- {\r
-- // enclose key with quotes if it is not variable-name conform\r
-- if (!preg_match('/^[_a-zA-Z]{1}[_a-zA-Z0-9]*$/', $key) || is_js_reserved_word($key))\r
-- $key = "'$key'";\r
--\r
-- $pairs[] = sprintf("%s%s", $is_assoc ? "$key:" : '', json_serialize($value));\r
-- }\r
--\r
-- return $brackets{0} . implode(',', $pairs) . $brackets{1};\r
-- }\r
-- }\r
-- else if (!is_string($var) && strval(intval($var)) === strval($var))\r
-- return $var;\r
-- else if (is_bool($var))\r
-- return $var ? '1' : '0';\r
-- else\r
-- return "'".JQ($var)."'";\r
--}\r
--\r
--\r
--/**\r
-- * Function to convert an array to a javascript array\r
-- * Actually an alias function for json_serialize()\r
-- * @deprecated\r
-- */\r
--function array2js($arr, $type='')\r
--{\r
-- return json_serialize($arr);\r
- }\r
- \r
-Index: roundcubemail/program/include/rcube_json_output.php\r
-===================================================================\r
---- roundcubemail/program/include/rcube_json_output.php (revision 2905)\r
-+++ roundcubemail/program/include/rcube_json_output.php (revision 3170)\r
-@@ -240,5 +240,5 @@\r
- $response['callbacks'] = $this->callbacks;\r
- \r
-- echo json_serialize($response);\r
-+ echo json_encode($response);\r
- }\r
- \r
-@@ -256,5 +256,5 @@\r
- $method = array_shift($args);\r
- foreach ($args as $i => $arg) {\r
-- $args[$i] = json_serialize($arg);\r
-+ $args[$i] = json_encode($arg);\r
- }\r
- \r
-Index: roundcubemail/program/steps/mail/func.inc\r
-===================================================================\r
---- roundcubemail/program/steps/mail/func.inc (revision 3099)\r
-+++ roundcubemail/program/steps/mail/func.inc (revision 3170)\r
-@@ -523,5 +523,5 @@\r
- if (is_array($quota)) {\r
- $OUTPUT->add_script('$(document).ready(function(){\r
-- rcmail.set_quota('.json_serialize($quota).')});', 'foot');\r
-+ rcmail.set_quota('.json_encode($quota).')});', 'foot');\r
- $quota = '';\r
- }\r
-Index: roundcubemail/program/steps/mail/compose.inc\r
-===================================================================\r
---- roundcubemail/program/steps/mail/compose.inc (revision 3166)\r
-+++ roundcubemail/program/steps/mail/compose.inc (revision 3170)\r
-@@ -507,5 +507,5 @@\r
- JQ(Q(rcube_label('revertto'))),\r
- JQ(Q(rcube_label('nospellerrors'))),\r
-- json_serialize($spellcheck_langs),\r
-+ json_encode($spellcheck_langs),\r
- $lang,\r
- $attrib['id'],\r
+Index: b/program/include/rcube_json_output.php
+===================================================================
+--- a/program/include/rcube_json_output.php 2009-09-01 17:13:45.000000000 +0200
++++ b/program/include/rcube_json_output.php 2010-07-17 17:33:24.000000000 +0200
+@@ -239,7 +239,7 @@
+ if (!empty($this->callbacks))
+ $response['callbacks'] = $this->callbacks;
+
+- echo json_serialize($response);
++ echo json_encode($response);
+ }
+
+
+@@ -255,7 +255,7 @@
+ foreach ($this->commands as $i => $args) {
+ $method = array_shift($args);
+ foreach ($args as $i => $arg) {
+- $args[$i] = json_serialize($arg);
++ $args[$i] = json_encode($arg);
+ }
+
+ $out .= sprintf(
+Index: b/program/include/rcube_shared.inc
+===================================================================
+--- a/program/include/rcube_shared.inc 2009-10-27 10:43:39.000000000 +0100
++++ b/program/include/rcube_shared.inc 2010-07-17 17:33:24.000000000 +0200
+@@ -109,97 +109,6 @@
+
+
+ /**
+- * Returns whether an $str is a reserved word for any of the version of Javascript or ECMAScript
+- * @param str String to check
+- * @return boolean True if $str is a reserver word, False if not
+- */
+-function is_js_reserved_word($str)
+-{
+- return in_array($str, array(
+- // ECMASript ver 4 reserved words
+- 'as','break','case','catch','class','const','continue',
+- 'default','delete','do','else','export','extends','false','finally','for','function',
+- 'if','import','in','instanceof','is','namespace','new','null','package','private',
+- 'public','return','super','switch','this','throw','true','try','typeof','use','var',
+- 'void','while','with',
+- // ECMAScript ver 4 future reserved words
+- 'abstract','debugger','enum','goto','implements','interface','native','protected',
+- 'synchronized','throws','transient','volatile',
+- // special meaning in some contexts
+- 'get','set',
+- // were reserved in ECMAScript ver 3
+- 'boolean','byte','char','double','final','float','int','long','short','static'
+- ));
+-}
+-
+-
+-/**
+- * Convert a variable into a javascript object notation
+- *
+- * @param mixed Input value
+- * @return string Serialized JSON string
+- */
+-function json_serialize($var)
+-{
+- if (is_object($var))
+- $var = get_object_vars($var);
+-
+- if (is_array($var))
+- {
+- // empty array
+- if (!sizeof($var))
+- return '[]';
+- else
+- {
+- $keys_arr = array_keys($var);
+- $is_assoc = $have_numeric = 0;
+-
+- for ($i=0; $i<sizeof($keys_arr); ++$i)
+- {
+- if (is_numeric($keys_arr[$i]))
+- $have_numeric = 1;
+- if (!is_numeric($keys_arr[$i]) || $keys_arr[$i] != $i)
+- $is_assoc = 1;
+- if ($is_assoc && $have_numeric)
+- break;
+- }
+-
+- $brackets = $is_assoc ? '{}' : '[]';
+- $pairs = array();
+-
+- foreach ($var as $key => $value)
+- {
+- // enclose key with quotes if it is not variable-name conform
+- if (!preg_match('/^[_a-zA-Z]{1}[_a-zA-Z0-9]*$/', $key) || is_js_reserved_word($key))
+- $key = "'$key'";
+-
+- $pairs[] = sprintf("%s%s", $is_assoc ? "$key:" : '', json_serialize($value));
+- }
+-
+- return $brackets{0} . implode(',', $pairs) . $brackets{1};
+- }
+- }
+- else if (!is_string($var) && strval(intval($var)) === strval($var))
+- return $var;
+- else if (is_bool($var))
+- return $var ? '1' : '0';
+- else
+- return "'".JQ($var)."'";
+-}
+-
+-
+-/**
+- * Function to convert an array to a javascript array
+- * Actually an alias function for json_serialize()
+- * @deprecated
+- */
+-function array2js($arr, $type='')
+-{
+- return json_serialize($arr);
+-}
+-
+-
+-/**
+ * Similar function as in_array() but case-insensitive
+ *
+ * @param mixed Needle value
+Index: b/program/include/rcube_template.php
+===================================================================
+--- a/program/include/rcube_template.php 2009-09-22 20:08:45.000000000 +0200
++++ b/program/include/rcube_template.php 2010-07-17 17:33:24.000000000 +0200
+@@ -414,12 +414,12 @@
+ {
+ $out = '';
+ if (!$this->framed && !empty($this->js_env)) {
+- $out .= JS_OBJECT_NAME . '.set_env('.json_serialize($this->js_env).");\n";
++ $out .= JS_OBJECT_NAME . '.set_env('.json_encode($this->js_env).");\n";
+ }
+ foreach ($this->js_commands as $i => $args) {
+ $method = array_shift($args);
+ foreach ($args as $i => $arg) {
+- $args[$i] = json_serialize($arg);
++ $args[$i] = json_encode($arg);
+ }
+ $parent = $this->framed || preg_match('/^parent\./', $method);
+ $out .= sprintf(
+Index: b/program/steps/mail/compose.inc
+===================================================================
+--- a/program/steps/mail/compose.inc 2009-10-06 08:55:08.000000000 +0200
++++ b/program/steps/mail/compose.inc 2010-07-17 17:33:24.000000000 +0200
+@@ -493,7 +493,7 @@
+ JQ(Q(rcube_label('close'))),
+ JQ(Q(rcube_label('revertto'))),
+ JQ(Q(rcube_label('nospellerrors'))),
+- json_serialize($spellcheck_langs),
++ json_encode($spellcheck_langs),
+ $lang,
+ $attrib['id'],
+ JS_OBJECT_NAME), 'foot');
+Index: b/program/steps/mail/func.inc
+===================================================================
+--- a/program/steps/mail/func.inc 2009-10-24 21:09:23.000000000 +0200
++++ b/program/steps/mail/func.inc 2010-07-17 17:33:24.000000000 +0200
+@@ -522,7 +522,7 @@
+
+ if (is_array($quota)) {
+ $OUTPUT->add_script('$(document).ready(function(){
+- rcmail.set_quota('.json_serialize($quota).')});', 'foot');
++ rcmail.set_quota('.json_encode($quota).')});', 'foot');
+ $quota = '';
+ }
+