web/wp-includes/class-json.php
changeset 194 32102edaa81b
parent 136 bde1974c263b
--- a/web/wp-includes/class-json.php	Thu Sep 16 15:45:36 2010 +0000
+++ b/web/wp-includes/class-json.php	Mon Nov 19 18:26:13 2012 +0100
@@ -1,4 +1,5 @@
 <?php
+if ( !class_exists( 'Services_JSON' ) ) :
 /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
 /**
  * Converts to and from JSON format.
@@ -152,7 +153,7 @@
 			return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
 		}
 
-		$bytes = (ord($utf16{0}) << 8) | ord($utf16{1});
+		$bytes = (ord($utf16[0]) << 8) | ord($utf16[1]);
 
 		switch(true) {
 			case ((0x7F & $bytes) == $bytes):
@@ -205,17 +206,17 @@
 			case 2:
 				// return a UTF-16 character from a 2-byte UTF-8 char
 				// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-				return chr(0x07 & (ord($utf8{0}) >> 2))
-					. chr((0xC0 & (ord($utf8{0}) << 6))
-						| (0x3F & ord($utf8{1})));
+				return chr(0x07 & (ord($utf8[0]) >> 2))
+					. chr((0xC0 & (ord($utf8[0]) << 6))
+						| (0x3F & ord($utf8[1])));
 
 			case 3:
 				// return a UTF-16 character from a 3-byte UTF-8 char
 				// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-				return chr((0xF0 & (ord($utf8{0}) << 4))
-						| (0x0F & (ord($utf8{1}) >> 2)))
-					. chr((0xC0 & (ord($utf8{1}) << 6))
-						| (0x7F & ord($utf8{2})));
+				return chr((0xF0 & (ord($utf8[0]) << 4))
+						| (0x0F & (ord($utf8[1]) >> 2)))
+					. chr((0xC0 & (ord($utf8[1]) << 6))
+						| (0x7F & ord($utf8[2])));
 		}
 
 		// ignoring UTF-32 for now, sorry
@@ -292,7 +293,7 @@
 				*/
 				for ($c = 0; $c < $strlen_var; ++$c) {
 
-					$ord_var_c = ord($var{$c});
+					$ord_var_c = ord($var[$c]);
 
 					switch (true) {
 						case $ord_var_c == 0x08:
@@ -315,12 +316,12 @@
 						case $ord_var_c == 0x2F:
 						case $ord_var_c == 0x5C:
 							// double quote, slash, slosh
-							$ascii .= '\\'.$var{$c};
+							$ascii .= '\\'.$var[$c];
 							break;
 
 						case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
 							// characters U-00000000 - U-0000007F (same as ASCII)
-							$ascii .= $var{$c};
+							$ascii .= $var[$c];
 							break;
 
 						case (($ord_var_c & 0xE0) == 0xC0):
@@ -332,7 +333,7 @@
 								break;
 							}
 
-							$char = pack('C*', $ord_var_c, ord($var{$c + 1}));
+							$char = pack('C*', $ord_var_c, ord($var[$c + 1]));
 							$c += 1;
 							$utf16 = $this->utf82utf16($char);
 							$ascii .= sprintf('\u%04s', bin2hex($utf16));
@@ -347,8 +348,8 @@
 							// characters U-00000800 - U-0000FFFF, mask 1110XXXX
 							// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
 							$char = pack('C*', $ord_var_c,
-										@ord($var{$c + 1}),
-										@ord($var{$c + 2}));
+										@ord($var[$c + 1]),
+										@ord($var[$c + 2]));
 							$c += 2;
 							$utf16 = $this->utf82utf16($char);
 							$ascii .= sprintf('\u%04s', bin2hex($utf16));
@@ -363,9 +364,9 @@
 							// characters U-00010000 - U-001FFFFF, mask 11110XXX
 							// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
 							$char = pack('C*', $ord_var_c,
-										ord($var{$c + 1}),
-										ord($var{$c + 2}),
-										ord($var{$c + 3}));
+										ord($var[$c + 1]),
+										ord($var[$c + 2]),
+										ord($var[$c + 3]));
 							$c += 3;
 							$utf16 = $this->utf82utf16($char);
 							$ascii .= sprintf('\u%04s', bin2hex($utf16));
@@ -380,10 +381,10 @@
 								break;
 							}
 							$char = pack('C*', $ord_var_c,
-										ord($var{$c + 1}),
-										ord($var{$c + 2}),
-										ord($var{$c + 3}),
-										ord($var{$c + 4}));
+										ord($var[$c + 1]),
+										ord($var[$c + 2]),
+										ord($var[$c + 3]),
+										ord($var[$c + 4]));
 							$c += 4;
 							$utf16 = $this->utf82utf16($char);
 							$ascii .= sprintf('\u%04s', bin2hex($utf16));
@@ -398,11 +399,11 @@
 							// characters U-04000000 - U-7FFFFFFF, mask 1111110X
 							// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
 							$char = pack('C*', $ord_var_c,
-										ord($var{$c + 1}),
-										ord($var{$c + 2}),
-										ord($var{$c + 3}),
-										ord($var{$c + 4}),
-										ord($var{$c + 5}));
+										ord($var[$c + 1]),
+										ord($var[$c + 2]),
+										ord($var[$c + 3]),
+										ord($var[$c + 4]),
+										ord($var[$c + 5]));
 							$c += 5;
 							$utf16 = $this->utf82utf16($char);
 							$ascii .= sprintf('\u%04s', bin2hex($utf16));
@@ -576,7 +577,7 @@
 					for ($c = 0; $c < $strlen_chrs; ++$c) {
 
 						$substr_chrs_c_2 = substr($chrs, $c, 2);
-						$ord_chrs_c = ord($chrs{$c});
+						$ord_chrs_c = ord($chrs[$c]);
 
 						switch (true) {
 							case $substr_chrs_c_2 == '\b':
@@ -606,7 +607,7 @@
 							case $substr_chrs_c_2 == '\\/':
 								if (($delim == '"' && $substr_chrs_c_2 != '\\\'') ||
 								($delim == "'" && $substr_chrs_c_2 != '\\"')) {
-									$utf8 .= $chrs{++$c};
+									$utf8 .= $chrs[++$c];
 								}
 								break;
 
@@ -619,7 +620,7 @@
 								break;
 
 							case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F):
-								$utf8 .= $chrs{$c};
+								$utf8 .= $chrs[$c];
 								break;
 
 							case ($ord_chrs_c & 0xE0) == 0xC0:
@@ -666,7 +667,7 @@
 				} elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
 					// array, or object notation
 
-					if ($str{0} == '[') {
+					if ($str[0] == '[') {
 						$stk = array(SERVICES_JSON_IN_ARR);
 						$arr = array();
 					} else {
@@ -705,7 +706,7 @@
 						$top = end($stk);
 						$substr_chrs_c_2 = substr($chrs, $c, 2);
 
-						if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) {
+						if (($c == $strlen_chrs) || (($chrs[$c] == ',') && ($top['what'] == SERVICES_JSON_SLICE))) {
 							// found a comma that is not inside a string, array, etc.,
 							// OR we've reached the end of the character list
 							$slice = substr($chrs, $top['where'], ($c - $top['where']));
@@ -747,12 +748,12 @@
 
 							}
 
-						} elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) {
+						} elseif ((($chrs[$c] == '"') || ($chrs[$c] == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) {
 							// found a quote, and we are not inside a string
-							array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c}));
+							array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs[$c]));
 							//print("Found start of string at {$c}\n");
 
-						} elseif (($chrs{$c} == $top['delim']) &&
+						} elseif (($chrs[$c] == $top['delim']) &&
 								($top['what'] == SERVICES_JSON_IN_STR) &&
 								((strlen(substr($chrs, 0, $c)) - strlen(rtrim(substr($chrs, 0, $c), '\\'))) % 2 != 1)) {
 							// found a quote, we're in a string, and it's not escaped
@@ -761,24 +762,24 @@
 							array_pop($stk);
 							//print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n");
 
-						} elseif (($chrs{$c} == '[') &&
+						} elseif (($chrs[$c] == '[') &&
 								in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
 							// found a left-bracket, and we are in an array, object, or slice
 							array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false));
 							//print("Found start of array at {$c}\n");
 
-						} elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) {
+						} elseif (($chrs[$c] == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) {
 							// found a right-bracket, and we're in an array
 							array_pop($stk);
 							//print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
 
-						} elseif (($chrs{$c} == '{') &&
+						} elseif (($chrs[$c] == '{') &&
 								in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
 							// found a left-brace, and we are in an array, object, or slice
 							array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false));
 							//print("Found start of object at {$c}\n");
 
-						} elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) {
+						} elseif (($chrs[$c] == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) {
 							// found a right-brace, and we're in an object
 							array_pop($stk);
 							//print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
@@ -858,3 +859,4 @@
 	}
 
 }
+endif;