? real-clone.patch
? remove-drupal_to_js.patch
? sites/default/files
? sites/default/settings.php
Index: includes/common.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/common.inc,v
retrieving revision 1.756
diff -u -p -r1.756 common.inc
--- includes/common.inc	30 Jan 2008 23:07:41 -0000	1.756
+++ includes/common.inc	16 Feb 2008 17:58:35 -0000
@@ -2063,7 +2063,7 @@ function drupal_get_js($scope = 'header'
 
     switch ($type) {
       case 'setting':
-        $output .= '<script type="text/javascript">jQuery.extend(Drupal.settings, '. drupal_to_js(call_user_func_array('array_merge_recursive', $data)) .");</script>\n";
+        $output .= '<script type="text/javascript">jQuery.extend(Drupal.settings, '. json_encode(call_user_func_array('array_merge_recursive', $data)) .");</script>\n";
         break;
       case 'inline':
         foreach ($data as $info) {
@@ -2268,46 +2268,6 @@ function drupal_clear_js_cache() {
 }
 
 /**
- * Converts a PHP variable into its Javascript equivalent.
- *
- * We use HTML-safe strings, i.e. with <, > and & escaped.
- */
-function drupal_to_js($var) {
-  switch (gettype($var)) {
-    case 'boolean':
-      return $var ? 'true' : 'false'; // Lowercase necessary!
-    case 'integer':
-    case 'double':
-      return $var;
-    case 'resource':
-    case 'string':
-      return '"'. str_replace(array("\r", "\n", "<", ">", "&"),
-                              array('\r', '\n', '\x3c', '\x3e', '\x26'),
-                              addslashes($var)) .'"';
-    case 'array':
-      // Arrays in JSON can't be associative. If the array is empty or if it
-      // has sequential whole number keys starting with 0, it's not associative
-      // so we can go ahead and convert it as an array.
-      if (empty ($var) || array_keys($var) === range(0, sizeof($var) - 1)) {
-        $output = array();
-        foreach ($var as $v) {
-          $output[] = drupal_to_js($v);
-        }
-        return '[ '. implode(', ', $output) .' ]';
-      }
-      // Otherwise, fall through to convert the array as an object.
-    case 'object':
-      $output = array();
-      foreach ($var as $k => $v) {
-        $output[] = drupal_to_js(strval($k)) .': '. drupal_to_js($v);
-      }
-      return '{ '. implode(', ', $output) .' }';
-    default:
-      return 'null';
-  }
-}
-
-/**
  * Return data in JSON format.
  *
  * This function should be used for JavaScript callback functions returning
@@ -2321,7 +2281,7 @@ function drupal_json($var = NULL) {
   drupal_set_header('Content-Type: text/javascript; charset=utf-8');
 
   if (isset($var)) {
-    echo drupal_to_js($var);
+    echo json_encode($var);
   }
 }
 
Index: includes/locale.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/locale.inc,v
retrieving revision 1.174
diff -u -p -r1.174 locale.inc
--- includes/locale.inc	9 Jan 2008 21:36:13 -0000	1.174
+++ includes/locale.inc	16 Feb 2008 17:58:35 -0000
@@ -2108,7 +2108,7 @@ function _locale_rebuild_js($langcode = 
       $data .= "'pluralFormula': function(\$n) { return Number({$language->formula}); }, ";
     }
 
-    $data .= "'strings': ". drupal_to_js($translations) ." };";
+    $data .= "'strings': ". json_encode($translations) ." };";
     $data_hash = md5($data);
   }
 
Index: modules/profile/profile.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/profile/profile.admin.inc,v
retrieving revision 1.8
diff -u -p -r1.8 profile.admin.inc
--- modules/profile/profile.admin.inc	21 Jan 2008 15:20:43 -0000	1.8
+++ modules/profile/profile.admin.inc	16 Feb 2008 17:58:36 -0000
@@ -399,6 +399,6 @@ function profile_admin_settings_autocomp
   while ($data = db_fetch_object($result)) {
     $matches[$data->category] = check_plain($data->category);
   }
-  print drupal_to_js($matches);
+  drupal_json($matches);
   exit();
 }
Index: modules/system/system.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v
retrieving revision 1.63
diff -u -p -r1.63 system.admin.inc
--- modules/system/system.admin.inc	4 Feb 2008 12:35:48 -0000	1.63
+++ modules/system/system.admin.inc	16 Feb 2008 17:58:37 -0000
@@ -1619,8 +1619,8 @@ function system_date_time_settings_submi
  */
 function system_date_time_lookup() {
   $result = format_date(time(), 'custom', $_GET['format']);
-  echo drupal_to_js($result);
-  exit;
+  drupal_json($result);
+  exit();
 }
 
 /**
Index: modules/upload/upload.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/upload/upload.module,v
retrieving revision 1.198
diff -u -p -r1.198 upload.module
--- modules/upload/upload.module	12 Feb 2008 13:49:01 -0000	1.198
+++ modules/upload/upload.module	16 Feb 2008 17:58:37 -0000
@@ -630,6 +630,6 @@ function upload_js() {
   // We send the updated file attachments form.
   // Don't call drupal_json(). ahah.js uses an iframe and
   // the header output by drupal_json() causes problems in some browsers.
-  print drupal_to_js(array('status' => TRUE, 'data' => $output));
+  print json_encode(array('status' => TRUE, 'data' => $output));
   exit;
 }
