[CSS] +fix page header and title color
[lhc/web/www.git] / www / plugins / crayons / inc / crayons-json.php
1 <?php
2 /**
3 * Crayons
4 * plugin for spip
5 * (c) Fil, toggg 2006-2013
6 * licence GPL
7 */
8
9 if (!defined('_ECRIRE_INC_VERSION')) {
10 return;
11 }
12
13 // Les fonctions de toggg pour faire du JSON
14
15 /**
16 * Transform a variable into its javascript equivalent (recursive)
17 *
18 * @access private
19 * @param mixed the variable
20 * @return string|boolean
21 * - string : js script
22 * - false if error
23 */
24 function crayons_var2js($var) {
25 $asso = false;
26 switch (true) {
27 case is_null($var):
28 return 'null';
29 case is_string($var):
30 return '"' .addcslashes($var, "\"\\\n\r\t/") . '"';
31 case is_bool($var):
32 return $var ? 'true' : 'false';
33 case is_scalar($var):
34 return (string)$var;
35 case is_object($var):
36 $var = get_object_vars($var);
37 $asso = true;
38 case is_array($var):
39 $keys = array_keys($var);
40 $ikey = count($keys);
41 while (!$asso && $ikey--) {
42 $asso = $ikey !== $keys[$ikey];
43 }
44 $sep = '';
45 if ($asso) {
46 $ret = '{';
47 foreach ($var as $key => $elt) {
48 $ret .= $sep . '"' . $key . '":' . crayons_var2js($elt);
49 $sep = ',';
50 }
51 return $ret .'}';
52 } else {
53 $ret = '[';
54 foreach ($var as $elt) {
55 $ret .= $sep . crayons_var2js($elt);
56 $sep = ',';
57 }
58 return $ret .']';
59 }
60 }
61 return false;
62 }
63
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);
68 }
69
70 $v = crayons_var2js($v);
71
72 if ($GLOBALS['meta']['charset'] != 'utf-8') {
73 include_spip('inc/charsets');
74 $v = charset2unicode($v);
75 }
76
77 return $v;
78 }
79
80 // http://doc.spip.org/@json_export
81 function crayons_json_export($var) {
82 return crayons_json_encode($var);
83
84 /// Il semble que ce hack n'ait plus lieu d'etre avec jquery 1.5
85 /*
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>";
90 else
91 return $var;
92 */
93 }