function __json_encode($data) { if (is_array($data) || is_object($data)) { $islist = is_array($data) && (empty($data) || array_keys($data) === range(0, count($data) - 1)); if ($islist) { $json = '[' . implode(',', array_map('__json_encode', $data)) . ']'; } else { $items = array(); foreach ($data as $key => $value) { $items[] = __json_encode("{$key}") . ':' . __json_encode($value); } $json = '{' . implode(',', $items) . '}'; } } elseif (is_string($data)) { # Escape non-printable or Non-ASCII characters. # I also put the \\ character first, as suggested in comments on the 'addclashes' page. $string = '"' . addcslashes($data, "\\\"\n\r\t/" . chr(8) . chr(12)) . '"'; $json = ''; $len = strlen($string); # Convert UTF-8 to Hexadecimal Codepoints. for ($i = 0; $i < $len; $i++) { $char = $string[$i]; $c1 = ord($char); # Single byte; if ($c1 < 128) { $json .= $c1 > 31 ? $char : sprintf("\\u%04x", $c1); continue; } # Double byte $c2 = ord($string[++$i]); if (($c1 & 32) === 0) { $json .= sprintf("\\u%04x", ($c1 - 192) * 64 + $c2 - 128); continue; } # Triple $c3 = ord($string[++$i]); if (($c1 & 16) === 0) { $json .= sprintf("\\u%04x", ($c1 - 224 << 12) + ($c2 - 128 << 6) + ($c3 - 128)); continue; } # Quadruple $c4 = ord($string[++$i]); if (($c1 & 8) === 0) { $u = (($c1 & 15) << 2) + ($c2 >> 4 & 3) - 1; $w1 = (54 << 10) + ($u << 6) + (($c2 & 15) << 2) + ($c3 >> 4 & 3); $w2 = (55 << 10) + (($c3 & 15) << 6) + ($c4 - 128); $json .= sprintf("\\u%04x\\u%04x", $w1, $w2); } } } else { # int, floats, bools, null $json = strtolower(var_export($data, true)); } return $json; }
function setResponse($statusCode, $statusString, $data = "") { $response = array('statusCode' => $statusCode, 'statusString' => $statusString, 'data' => $data); //if php version < 5.3.0 we need to emulate the object string if (PHP_MAJOR_VERSION <= 5 & PHP_MINOR_VERSION < 3) { print __json_encode($response); } else { print json_encode($response); } //if ($statusCode != 1) { if (!isIncluded()) { exit; } //} }
switch ($status) { case -1: $output['iTotalRecords'] = $output['iTotalDisplayRecords'] = $_GET["ndirectories"]; break; case 0: $output['iTotalRecords'] = $output['iTotalDisplayRecords'] = $_GET["nno"]; break; case 1: $output['iTotalRecords'] = $output['iTotalDisplayRecords'] = $_GET["nzero"]; break; case 2: $output['iTotalRecords'] = $output['iTotalDisplayRecords'] = $_GET["nlow"]; break; case 3: $output['iTotalRecords'] = $output['iTotalDisplayRecords'] = $_GET["nmedium"]; break; case 4: $output['iTotalRecords'] = $output['iTotalDisplayRecords'] = $_GET["nsatisfactory"]; break; case 5: $output['iTotalRecords'] = $output['iTotalDisplayRecords'] = $_GET["ncomplete"]; break; case 6: $output['iTotalRecords'] = $output['iTotalDisplayRecords'] = $_GET["nall"]; break; } if (function_exists('json_encode')) { echo json_encode($output); } else { echo __json_encode($output); }
<?php require_once "utils.php"; require_once "database.php"; require_once "image.php"; $docName = $_REQUEST["docname"]; $database = new Database(Utils::rootDirectory()); $docData = $database->findDocument($docName); Image::buildThumbnailHtml($docData["imageLocation"], $docData["thumbnailLocation"]); $documentJSON = __json_encode($docData); echo $documentJSON;