[SPIP] +2.1.12
[velocampus/web/www.git] / www / plugins / auto / spip-bonux / 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 (!defined("_ECRIRE_INC_VERSION")) return;
11
12 /**
13 * une fonction qui regarde si $texte est une chaine de langue
14 * de la forme <:qqch:>
15 * si oui applique _T()
16 * si non applique typo() suivant le mode choisi
17 *
18 * @param unknown_type $valeur Une valeur à tester. Si c'est un tableau, la fonction s'appliquera récursivement dessus.
19 * @param string $mode_typo Le mode d'application de la fonction typo(), avec trois valeurs possibles "toujours", "jamais" ou "multi".
20 * @return unknown_type Retourne la valeur éventuellement modifiée.
21 */
22 if (!function_exists('_T_ou_typo')){
23 function _T_ou_typo($valeur, $mode_typo='toujours') {
24
25 // Si la valeur est bien une chaine (et pas non plus un entier déguisé)
26 if (is_string($valeur) and !intval($valeur)){
27 // Si la chaine est du type <:truc:> on passe à _T()
28 if (preg_match('/^\<:(.*?):\>$/', $valeur, $match))
29 $valeur = _T($match[1]);
30 // Sinon on la passe a typo()
31 else {
32 if (!in_array($mode_typo, array('toujours', 'multi', 'jamais')))
33 $mode_typo = 'toujours';
34
35 if ($mode_typo == 'toujours' or ($mode_typo == 'multi' and strpos($valeur, '<multi>') !== false)){
36 include_spip('inc/texte');
37 $valeur = typo($valeur);
38 }
39 }
40 }
41 // Si c'est un tableau, on reapplique la fonction récursivement
42 elseif (is_array($valeur)){
43 foreach ($valeur as $cle => $valeur2){
44 $valeur[$cle] = _T_ou_typo($valeur2, $mode_typo);
45 }
46 }
47
48 return $valeur;
49
50 }
51 }
52
53 /*
54 * Insère toutes les valeurs du tableau $arr2 après (ou avant) $cle dans le tableau $arr1.
55 * Si $cle n'est pas trouvé, les valeurs de $arr2 seront ajoutés à la fin de $arr1.
56 *
57 * La fonction garde autant que possible les associations entre les clés. Elle fonctionnera donc aussi bien
58 * avec des tableaux à index numérique que des tableaux associatifs.
59 * Attention tout de même, elle utilise array_merge() donc les valeurs de clés étant en conflits seront écrasées.
60 *
61 * @param array $arr1 Tableau dans lequel se fera l'insertion
62 * @param unknown_type $cle Clé de $arr1 après (ou avant) laquelle se fera l'insertion
63 * @param array $arr2 Tableau contenant les valeurs à insérer
64 * @param bool $avant Indique si l'insertion se fait avant la clé (par défaut c'est après)
65 * @return array Retourne le tableau avec l'insertion
66 */
67 function array_insert($arr1, $cle, $arr2, $avant=false){
68 $index = array_search($cle, array_keys($arr1));
69 if($index === false){
70 $index = count($arr1); // insert @ end of array if $key not found
71 }
72 else {
73 if(!$avant){
74 $index++;
75 }
76 }
77 $fin = array_splice($arr1, $index);
78 return array_merge($arr1, $arr2, $fin);
79 }
80
81 /*
82 * Une fonction extrêmement pratique, mais qui n'est disponible qu'à partir de PHP 5.3 !
83 * cf. http://www.php.net/manual/fr/function.array-replace-recursive.php
84 */
85 if (!function_exists('array_replace_recursive')){
86 function array_replace_recursive($array, $array1){
87 function recurse($array, $array1){
88 foreach ($array1 as $key => $value){
89 // create new key in $array, if it is empty or not an array
90 if (!isset($array[$key]) || (isset($array[$key]) && !is_array($array[$key])))
91 $array[$key] = array();
92 // overwrite the value in the base array
93 if (is_array($value))
94 $value = recurse($array[$key], $value);
95 $array[$key] = $value;
96 }
97 return $array;
98 }
99
100 // handle the arguments, merge one by one
101 $args = func_get_args();
102 $array = $args[0];
103 if (!is_array($array))
104 return $array;
105
106 for ($i = 1; $i < count($args); $i++)
107 if (is_array($args[$i]))
108 $array = recurse($array, $args[$i]);
109
110 return $array;
111 }
112 }
113
114 if (defined('_BONUX_STYLE'))
115 _chemin(_DIR_PLUGIN_SPIP_BONUX."spip21/");
116
117 ?>