source: spip-zone/_plugins_/saisies/saisies_fonctions.php @ 84974

Last change on this file since 84974 was 84974, checked in by cedric@…, 5 years ago

les champs input passent dans typo mais il faut les encapsuler dans un <p> car c'est ce que les affichages attendent implicitement

File size: 3.1 KB
Line 
1<?php
2
3if (!defined('_ECRIRE_INC_VERSION')) return;
4
5include_spip('inc/saisies');
6include_spip('balise/saisie');
7// picker_selected (spip 3)
8include_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 */
19function 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        // si traitement est renseigne, alors le champ est deja mis en forme
26        // (saisies)
27        // sinon on fait une mise en forme smart
28        if (!isset($env['traitements'])){
29                if (in_array($env['type_saisie'],array('textarea'))){
30                        $valeur = propre($valeur);
31                }
32                else {
33                        $valeur = "<p>" . typo($valeur) . "</p>";
34                }
35        }
36
37        return trim($valeur);
38}
39
40/**
41 * Passer un nom en une valeur compatible avec une classe css
42 * toto => toto,
43 * toto/truc => toto_truc,
44 * toto[truc] => toto_truc,
45**/
46function saisie_nom2classe($nom) {
47        return str_replace(array('/', '[', ']', '&#91;', '&#93;'), array('_', '_', '', '_', ''), $nom);
48}
49
50/**
51 * Passer un nom en une valeur compatible avec un name de formulaire
52 * toto => toto,
53 * toto/truc => toto[truc],
54 * toto[truc] => toto[truc],
55**/
56function saisie_nom2name($nom) {
57        if (false === strpos($nom, '/')) {
58                return $nom;
59        }
60        $nom = explode('/', $nom);
61        $premier = array_shift($nom);
62        $nom = implode('][', $nom);
63        return $premier . '[' . $nom . ']';
64}
65
66/**
67 * Balise beurk #GLOBALS{debut_intertitre}
68 * qui retourne la globale PHP du même nom si elle existe
69 *
70 * @param array $p
71 *              Pile au niveau de la balise
72 * @return array
73 *              Pile complétée du code php de la balise.
74**/
75function balise_GLOBALS_dist($p) {
76        if (function_exists('balise_ENV'))
77                return balise_ENV($p, '$GLOBALS');
78        else
79                return balise_ENV_dist($p, '$GLOBALS');
80}
81
82/**
83 * Liste les éléments du sélecteur générique triés
84 *
85 * Les éléments sont triés par objets puis par identifiants
86 *
87 * @example
88 *     L'entrée :
89 *     'rubrique|3,rubrique|5,article|2'
90 *     Retourne :
91 *     array(
92 *        0 => array('objet'=>'article', 'id_objet' => 2),
93 *        1 => array('objet'=>'rubrique', 'id_objet' => 3),
94 *        2 => array('objet'=>'rubrique', 'id_objet' => 5),
95 *     )
96 *
97 * @param string $selected
98 *     Liste des objets sélectionnés
99 * @return array
100 *     Liste des objets triés
101**/
102function picker_selected_par_objet($selected) {
103        $res = array();
104        $liste = picker_selected($selected);
105        // $liste : la sortie dans le désordre
106        if (!$liste) {
107                return $res;
108        }
109
110        foreach ($liste as $l) {
111                if (!isset($res[ $l['objet'] ])) {
112                        $res[ $l['objet'] ] = array();
113                }
114                $res[$l['objet']][] = $l['id_objet'];
115        }
116        // $res est trié par objet, puis par identifiant
117        ksort($res);
118        foreach ($res as $objet => $ids) {
119                sort($res[$objet]);
120        }
121
122        // on remet tout en file
123        $liste = array();
124        foreach ($res as $objet=>$ids) {
125                foreach ($ids as $id) {
126                        $liste[] = array('objet' => $objet, 'id_objet' => $id);
127                }
128        }
129
130        return $liste;
131}
132?>
Note: See TracBrowser for help on using the repository browser.