/ecrire/inc/json.php
https://github.com/denisbz/SPIP-1 · PHP · 83 lines · 61 code · 5 blank · 17 comment · 2 complexity · f0e73588f088c7f6b008cc04b75a12a4 MD5 · raw file
- <?php
- /***************************************************************************\
- * SPIP, Systeme de publication pour l'internet *
- * *
- * Copyright (c) 2001-2011 *
- * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
- * *
- * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
- * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
- \***************************************************************************/
- if (!defined('_ECRIRE_INC_VERSION')) return;
- // Les fonctions de toggg pour faire du JSON
- /**
- * Transform a variable into its javascript equivalent (recursive)
- * @access private
- * @param mixed the variable
- * @return string js script | boolean false if error
- */
- // http://doc.spip.org/@var2js
- function var2js($var) {
- $asso = false;
- switch (true) {
- case is_null($var) :
- return 'null';
- case is_string($var) :
- return '"' .addcslashes($var, "\"\\\n\r/") . '"';
- case is_bool($var) :
- return $var ? 'true' : 'false';
- case is_scalar($var) :
- return (string)$var;
- case is_object( $var) :
- $var = get_object_vars($var);
- $asso = true;
- case is_array($var) :
- $keys = array_keys($var);
- $ikey = count($keys);
- while (!$asso && $ikey--) {
- $asso = $ikey !== $keys[$ikey];
- }
- $sep = '';
- if ($asso) {
- $ret = '{';
- foreach ($var as $key => $elt) {
- $ret .= $sep . '"' . $key . '":' . var2js($elt);
- $sep = ',';
- }
- return $ret ."}";
- } else {
- $ret = '[';
- foreach ($var as $elt) {
- $ret .= $sep . var2js($elt);
- $sep = ',';
- }
- return $ret ."]";
- }
- }
- return false;
- }
- if(!function_exists('json_encode')) {
- function json_encode($v) { return var2js($v); }
- }
- // http://doc.spip.org/@json_export
- function json_export($var) {
- $var = json_encode($var);
- // flag indiquant qu'on est en iframe et qu'il faut proteger nos
- // donnees dans un <textarea> ; attention $_FILES a ete vide par array_pop
- if (defined('FILE_UPLOAD'))
- return "<textarea>".htmlspecialchars($var)."</textarea>";
- else
- return $var;
- }
- ?>