[PLUGINS] +les plugins de bases
[ptitvelo/web/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 /**
12 * Passer un nom en une valeur compatible avec une classe css
13 * toto => toto,
14 * toto/truc => toto_truc,
15 * toto[truc] => toto_truc,
16 **/
17 function saisie_nom2classe($nom) {
18 return str_replace(array('/', '[', ']', '&#91;', '&#93;'), array('_', '_', '', '_', ''), $nom);
19 }
20
21 /**
22 * Passer un nom en une valeur compatible avec un name de formulaire
23 * toto => toto,
24 * toto/truc => toto[truc],
25 * toto[truc] => toto[truc],
26 **/
27 function saisie_nom2name($nom) {
28 if (false === strpos($nom, '/')) {
29 return $nom;
30 }
31 $nom = explode('/', $nom);
32 $premier = array_shift($nom);
33 $nom = implode('][', $nom);
34 return $premier . '[' . $nom . ']';
35 }
36
37 /**
38 * Balise beurk #GLOBALS{debut_intertitre}
39 * qui retourne la globale PHP du même nom si elle existe
40 *
41 * @param array $p
42 * Pile au niveau de la balise
43 * @return array
44 * Pile complétée du code php de la balise.
45 **/
46 function balise_GLOBALS_dist($p) {
47 if (function_exists('balise_ENV'))
48 return balise_ENV($p, '$GLOBALS');
49 else
50 return balise_ENV_dist($p, '$GLOBALS');
51 }
52
53 /**
54 * Liste les éléments du sélecteur générique triés
55 *
56 * Les éléments sont triés par objets puis par identifiants
57 *
58 * @example
59 * L'entrée :
60 * 'rubrique|3,rubrique|5,article|2'
61 * Retourne :
62 * array(
63 * 0 => array('objet'=>'article', 'id_objet' => 2),
64 * 1 => array('objet'=>'rubrique', 'id_objet' => 3),
65 * 2 => array('objet'=>'rubrique', 'id_objet' => 5),
66 * )
67 *
68 * @param string $selected
69 * Liste des objets sélectionnés
70 * @return array
71 * Liste des objets triés
72 **/
73 function picker_selected_par_objet($selected) {
74 $res = array();
75 $liste = picker_selected($selected);
76 // $liste : la sortie dans le désordre
77 if (!$liste) {
78 return $res;
79 }
80
81 foreach ($liste as $l) {
82 if (!isset($res[ $l['objet'] ])) {
83 $res[ $l['objet'] ] = array();
84 }
85 $res[$l['objet']][] = $l['id_objet'];
86 }
87 // $res est trié par objet, puis par identifiant
88 ksort($res);
89 foreach ($res as $objet => $ids) {
90 sort($res[$objet]);
91 }
92
93 // on remet tout en file
94 $liste = array();
95 foreach ($res as $objet=>$ids) {
96 foreach ($ids as $id) {
97 $liste[] = array('objet' => $objet, 'id_objet' => $id);
98 }
99 }
100
101 return $liste;
102 }
103 ?>