fd0906567260a5a46d4e24cc89c57f501b8d0b2c
[ptitvelo/web/www.git] / www / plugins / spip-bonux-3 / spip_bonux_options.php
1 <?php
2 /**
3 * Plugin Spip-Bonux
4 * Le plugin qui lave plus SPIP que SPIP
5 * (c) 2008 Mathieu Marcillaud, Cedric Morin, Romy Tetue
6 * Licence GPL
7 *
8 */
9
10 if (_request('var_mode')=='preview'
11 AND $cle = _request('var_relecture')){
12 include_spip("spip_bonux_fonctions");
13 if (previsu_verifier_cle_temporaire($cle)){
14 include_spip("inc/autoriser");
15 autoriser_exception('previsualiser','',0);
16 define('_VAR_PREVIEW_EXCEPTION',true);
17 }
18 }
19
20 function spip_bonux_affichage_final($flux){
21 if (defined('_VAR_PREVIEW') AND _VAR_PREVIEW){
22 $p = stripos($flux,"</body>");
23 $url_relecture = parametre_url(self(),'var_mode','preview','&');
24 $js = "";
25 if (!defined('_VAR_PREVIEW_EXCEPTION')){
26 $url_relecture = parametre_url($url_relecture,'var_relecture',previsu_cle_temporaire(),'&');
27 $label = "Relecture temporaire";
28 }
29 else {
30 $label = _T('previsualisation');
31 $js = "jQuery('.spip-previsu').html('Relecture temporaire');";
32 }
33 $js .= "jQuery('#spip-admin').append('<a class=\"spip-admin-boutons review_link\" href=\"$url_relecture\">$label</a>');";
34 $js = "jQuery(function(){ $js });";
35 $js = "<script>$js</script>";
36 $flux = substr_replace($flux,$js,$p,0);
37 }
38 return $flux;
39 }
40
41 if (!defined('_ECRIRE_INC_VERSION')) return;
42
43 /**
44 * une fonction qui regarde si $texte est une chaine de langue
45 * de la forme <:qqch:>
46 * si oui applique _T()
47 * si non applique typo() suivant le mode choisi
48 *
49 * @param unknown_type $valeur Une valeur à tester. Si c'est un tableau, la fonction s'appliquera récursivement dessus.
50 * @param string $mode_typo Le mode d'application de la fonction typo(), avec trois valeurs possibles "toujours", "jamais" ou "multi".
51 * @return unknown_type Retourne la valeur éventuellement modifiée.
52 */
53 if (!function_exists('_T_ou_typo')) {
54 function _T_ou_typo($valeur, $mode_typo='toujours') {
55
56 // Si la valeur est bien une chaine (et pas non plus un entier déguisé)
57 if (is_string($valeur) and !intval($valeur)){
58 // Si la chaine est du type <:truc:> on passe à _T()
59 if (preg_match('/^\<:(.*?):\>$/', $valeur, $match))
60 $valeur = _T($match[1]);
61 // Sinon on la passe a typo()
62 else {
63 if (!in_array($mode_typo, array('toujours', 'multi', 'jamais')))
64 $mode_typo = 'toujours';
65
66 if ($mode_typo == 'toujours' or ($mode_typo == 'multi' and strpos($valeur, '<multi>') !== false)){
67 include_spip('inc/texte');
68 $valeur = typo($valeur);
69 }
70 }
71 }
72 // Si c'est un tableau, on reapplique la fonction récursivement
73 elseif (is_array($valeur)){
74 foreach ($valeur as $cle => $valeur2){
75 $valeur[$cle] = _T_ou_typo($valeur2, $mode_typo);
76 }
77 }
78
79 return $valeur;
80
81 }
82 }
83
84 /*
85 * Insère toutes les valeurs du tableau $arr2 après (ou avant) $cle dans le tableau $arr1.
86 * Si $cle n'est pas trouvé, les valeurs de $arr2 seront ajoutés à la fin de $arr1.
87 *
88 * La fonction garde autant que possible les associations entre les clés. Elle fonctionnera donc aussi bien
89 * avec des tableaux à index numérique que des tableaux associatifs.
90 * Attention tout de même, elle utilise array_merge() donc les valeurs de clés étant en conflits seront écrasées.
91 *
92 * @param array $arr1 Tableau dans lequel se fera l'insertion
93 * @param unknown_type $cle Clé de $arr1 après (ou avant) laquelle se fera l'insertion
94 * @param array $arr2 Tableau contenant les valeurs à insérer
95 * @param bool $avant Indique si l'insertion se fait avant la clé (par défaut c'est après)
96 * @return array Retourne le tableau avec l'insertion
97 */
98 if (!function_exists('array_insert')) {
99 function array_insert($arr1, $cle, $arr2, $avant=false){
100 $index = array_search($cle, array_keys($arr1));
101 if($index === false){
102 $index = count($arr1); // insert @ end of array if $key not found
103 }
104 else {
105 if(!$avant){
106 $index++;
107 }
108 }
109 $fin = array_splice($arr1, $index);
110 return array_merge($arr1, $arr2, $fin);
111 }
112 }
113
114 /*
115 * Une fonction extrêmement pratique, mais qui n'est disponible qu'à partir de PHP 5.3 !
116 * cf. http://www.php.net/manual/fr/function.array-replace-recursive.php
117 */
118 if (!function_exists('array_replace_recursive')){
119 function array_replace_recursive($array, $array1){
120 function recurse($array, $array1){
121 foreach ($array1 as $key => $value){
122 // create new key in $array, if it is empty or not an array
123 if (!isset($array[$key]) || (isset($array[$key]) && !is_array($array[$key])))
124 $array[$key] = array();
125 // overwrite the value in the base array
126 if (is_array($value))
127 $value = recurse($array[$key], $value);
128 $array[$key] = $value;
129 }
130 return $array;
131 }
132
133 // handle the arguments, merge one by one
134 $args = func_get_args();
135 $array = $args[0];
136 if (!is_array($array))
137 return $array;
138
139 for ($i = 1; $i < count($args); $i++)
140 if (is_array($args[$i]))
141 $array = recurse($array, $args[$i]);
142
143 return $array;
144 }
145 }
146
147
148 ?>