5 * (c) Fil, toggg 2006-2013
9 if (!defined('_ECRIRE_INC_VERSION')) {
13 // Les fonctions de toggg pour faire du JSON
16 * Transform a variable into its javascript equivalent (recursive)
19 * @param mixed the variable
20 * @return string|boolean
21 * - string : js script
24 function crayons_var2js($var) {
30 return '"' .addcslashes($var, "\"\\\n\r\t/") . '"';
32 return $var ?
'true' : 'false';
36 $var = get_object_vars($var);
39 $keys = array_keys($var);
41 while (!$asso && $ikey--) {
42 $asso = $ikey !== $keys[$ikey];
47 foreach ($var as $key => $elt) {
48 $ret .= $sep . '"' . $key . '":' . crayons_var2js($elt);
54 foreach ($var as $elt) {
55 $ret .= $sep . crayons_var2js($elt);
64 // Un json_encode qui marche en iso (la spec JSON exige utf-8)
65 function crayons_json_encode($v) {
66 if ($GLOBALS['meta']['charset'] == 'utf-8' and function_exists('json_encode')) {
67 return json_encode($v);
70 $v = crayons_var2js($v);
72 if ($GLOBALS['meta']['charset'] != 'utf-8') {
73 include_spip('inc/charsets');
74 $v = charset2unicode($v);
80 // http://doc.spip.org/@json_export
81 function crayons_json_export($var) {
82 return crayons_json_encode($var);
84 /// Il semble que ce hack n'ait plus lieu d'etre avec jquery 1.5
86 // flag indiquant qu'on est en iframe et qu'il faut proteger nos
87 // donnees dans un <textarea> ; attention $_FILES a ete vide par array_pop
88 if (defined('FILE_UPLOAD'))
89 return "<textarea>".htmlspecialchars($var)."</textarea>";