[PLUGINS] +clavettes et dependances
[lhc/web/clavette_www.git] / www / plugins / saisies / saisies_fonctions.php
1 <?php
2
3 if (!defined('_ECRIRE_INC_VERSION')) return;
4
5 include_spip('inc/saisies');
6 include_spip('balise/saisie');
7 // picker_selected (spip 3)
8 include_spip('formulaires/selecteur/generique_fonctions');
9
10 /**
11 * Traiter la valeur de la vue en fonction du env
12 * si un traitement a ete fait en amont (champs extra) ne rien faire
13 * si pas de traitement defini (formidable) passer typo ou propre selon le type du champ
14 *
15 * @param string $valeur
16 * @param string|array $env
17 * @return string
18 */
19 function saisie_traitement_vue($valeur,$env){
20 if (is_string($env))
21 $env = unserialize($env);
22 if (!function_exists('propre'))
23 include_spip('inc/texte');
24
25 $valeur = trim($valeur);
26
27 // si traitement est renseigne, alors le champ est deja mis en forme
28 // (saisies)
29 // sinon on fait une mise en forme smart
30 if ($valeur and !isset($env['traitements'])) {
31 if (in_array($env['type_saisie'], array('textarea'))) {
32 $valeur = propre($valeur);
33 }
34 else {
35 $valeur = "<p>" . typo($valeur) . "</p>";
36 }
37 }
38
39 return $valeur;
40 }
41
42 /**
43 * Passer un nom en une valeur compatible avec une classe css
44 * toto => toto,
45 * toto/truc => toto_truc,
46 * toto[truc] => toto_truc,
47 **/
48 function saisie_nom2classe($nom) {
49 return str_replace(array('/', '[', ']', '&#91;', '&#93;'), array('_', '_', '', '_', ''), $nom);
50 }
51
52 /**
53 * Passer un nom en une valeur compatible avec un name de formulaire
54 * toto => toto,
55 * toto/truc => toto[truc],
56 * toto[truc] => toto[truc],
57 **/
58 function saisie_nom2name($nom) {
59 if (false === strpos($nom, '/')) {
60 return $nom;
61 }
62 $nom = explode('/', $nom);
63 $premier = array_shift($nom);
64 $nom = implode('][', $nom);
65 return $premier . '[' . $nom . ']';
66 }
67
68 /**
69 * Balise beurk #GLOBALS{debut_intertitre}
70 * qui retourne la globale PHP du même nom si elle existe
71 *
72 * @param array $p
73 * Pile au niveau de la balise
74 * @return array
75 * Pile complétée du code php de la balise.
76 **/
77 function balise_GLOBALS_dist($p) {
78 if (function_exists('balise_ENV'))
79 return balise_ENV($p, '$GLOBALS');
80 else
81 return balise_ENV_dist($p, '$GLOBALS');
82 }
83
84 /**
85 * Liste les éléments du sélecteur générique triés
86 *
87 * Les éléments sont triés par objets puis par identifiants
88 *
89 * @example
90 * L'entrée :
91 * 'rubrique|3,rubrique|5,article|2'
92 * Retourne :
93 * array(
94 * 0 => array('objet'=>'article', 'id_objet' => 2),
95 * 1 => array('objet'=>'rubrique', 'id_objet' => 3),
96 * 2 => array('objet'=>'rubrique', 'id_objet' => 5),
97 * )
98 *
99 * @param string $selected
100 * Liste des objets sélectionnés
101 * @return array
102 * Liste des objets triés
103 **/
104 function picker_selected_par_objet($selected) {
105 $res = array();
106 $liste = picker_selected($selected);
107 // $liste : la sortie dans le désordre
108 if (!$liste) {
109 return $res;
110 }
111
112 foreach ($liste as $l) {
113 if (!isset($res[ $l['objet'] ])) {
114 $res[ $l['objet'] ] = array();
115 }
116 $res[$l['objet']][] = $l['id_objet'];
117 }
118 // $res est trié par objet, puis par identifiant
119 ksort($res);
120 foreach ($res as $objet => $ids) {
121 sort($res[$objet]);
122 }
123
124 // on remet tout en file
125 $liste = array();
126 foreach ($res as $objet=>$ids) {
127 foreach ($ids as $id) {
128 $liste[] = array('objet' => $objet, 'id_objet' => $id);
129 }
130 }
131
132 return $liste;
133 }
134 ?>