[PLUGINS] +crayons et enluminures
[ptitvelo/web/www.git] / www / plugins / crayons / inc / crayons-json.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2010 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 if (!defined("_ECRIRE_INC_VERSION")) return;
14
15 // Les fonctions de toggg pour faire du JSON
16
17 /**
18 * Transform a variable into its javascript equivalent (recursive)
19 * @access private
20 * @param mixed the variable
21 * @return string js script | boolean false if error
22 */
23
24 // http://doc.spip.org/@var2js
25 function crayons_var2js($var) {
26 $asso = false;
27 switch (true) {
28 case is_null($var) :
29 return 'null';
30 case is_string($var) :
31 return '"' .addcslashes($var, "\"\\\n\r\t/") . '"';
32 case is_bool($var) :
33 return $var ? 'true' : 'false';
34 case is_scalar($var) :
35 return (string)$var;
36 case is_object( $var) :
37 $var = get_object_vars($var);
38 $asso = true;
39 case is_array($var) :
40 $keys = array_keys($var);
41 $ikey = count($keys);
42 while (!$asso && $ikey--) {
43 $asso = $ikey !== $keys[$ikey];
44 }
45 $sep = '';
46 if ($asso) {
47 $ret = '{';
48 foreach ($var as $key => $elt) {
49 $ret .= $sep . '"' . $key . '":' . crayons_var2js($elt);
50 $sep = ',';
51 }
52 return $ret ."}";
53 } else {
54 $ret = '[';
55 foreach ($var as $elt) {
56 $ret .= $sep . crayons_var2js($elt);
57 $sep = ',';
58 }
59 return $ret ."]";
60 }
61 }
62 return false;
63 }
64
65 // Un json_encode qui marche en iso (la spec JSON exige utf-8)
66 function crayons_json_encode($v) {
67 if ($GLOBALS['meta']['charset'] == 'utf-8'
68 AND function_exists('json_encode'))
69 return json_encode($v);
70
71 $v = crayons_var2js($v);
72
73 if ($GLOBALS['meta']['charset'] != 'utf-8') {
74 include_spip('inc/charsets');
75 $v = charset2unicode($v);
76 }
77
78 return $v;
79 }
80
81 // http://doc.spip.org/@json_export
82 function crayons_json_export($var) {
83 return crayons_json_encode($var);
84
85 /// Il semble que ce hack n'ait plus lieu d'etre avec jquery 1.5
86 /*
87 // flag indiquant qu'on est en iframe et qu'il faut proteger nos
88 // donnees dans un <textarea> ; attention $_FILES a ete vide par array_pop
89 if (defined('FILE_UPLOAD'))
90 return "<textarea>".htmlspecialchars($var)."</textarea>";
91 else
92 return $var;
93 */
94
95 }
96
97
98
99 ?>