source: spip-zone/_plugins_/formidable/trunk/formidable_fonctions.php @ 83529

Last change on this file since 83529 was 83529, checked in by rastapopoulos@…, 6 years ago

Une nouvelle balise qui sera peut-être utile à celleux qui veulent afficher leurs réponses enregistrées.

#VOIR_REPONSE{champ} à utiliser dans une boucle (FORMULAIRES_REPONSES).

Par défaut ça afficher la même chose que #VOIR_SAISIE. Mais on peut faire des variantes pour ne sortir que la valeur (en HTML mais sans le label et l'entourage) ou que la valeur brute dans la base.

#VOIR_REPONSE{selection_1, brut}
#VOIR_REPONSE{selection_1, valeur_uniquement}

En troisième argument on peut aussi passer la chaîne qu'on veut afficher pour les champs qui n'ont pas de réponse (champ vide). Sinon c'est le truc par défaut "Sans réponse". On peut y mettre la chaîne vide si on ne veut rien.

File size: 2.4 KB
Line 
1<?php
2
3/**
4 * Chargement des fonctions pour les squelettes
5 *
6 * @package SPIP\Formidable\Fonctions
7**/
8
9include_spip('inc/formidable');
10include_spip('public/formidable_criteres');
11
12/**
13 * #VOIR_REPONSE{checkbox_2} dans une boucle (FORMULAIRES_REPONSES)
14 *
15 * @param Pile $p
16 * @return Pile
17 */
18function balise_VOIR_REPONSE_dist($p) {
19        $nom = interprete_argument_balise(1, $p);
20        if (!$type_retour = interprete_argument_balise(2, $p)) { $type_retour = 'null'; }
21        if (!$sans_reponse = interprete_argument_balise(3, $p)) { $sans_reponse = 'null'; }
22        $id_formulaires_reponse = champ_sql('id_formulaires_reponse', $p);
23        $id_formulaire = champ_sql('id_formulaire', $p);
24        $p->code = "calculer_voir_reponse($id_formulaires_reponse, $id_formulaire, $nom, $type_retour, $sans_reponse)";
25        return $p;
26}
27
28function calculer_voir_reponse($id_formulaires_reponse, $id_formulaire, $nom, $type_retour=null, $sans_reponse=null){
29        static $formulaires_saisies = array();
30        static $reponses_valeurs = array();
31        $tenter_unserialize = charger_fonction('tenter_unserialize', 'filtre/');
32       
33        // Si pas déjà présent, on cherche les saisies de ce formulaire
34        if (is_null($formulaires_saisies[$id_formulaire])) {
35                $formulaires_saisies[$id_formulaire] = unserialize(sql_getfetsel('saisies', 'spip_formulaires', 'id_formulaire = '.intval($id_formulaire)));
36        }
37        // Si pas déjà présent, on cherche les valeurs de cette réponse
38        if (is_null($reponses_valeurs[$id_formulaires_reponse])) {
39                if ($champs = sql_allfetsel('nom,valeur', 'spip_formulaires_reponses_champs', 'id_formulaires_reponse = '.intval($id_formulaires_reponse))) {
40                        foreach ($champs as $champ) {
41                                $reponses_valeurs[$id_formulaires_reponse][$champ['nom']] = $tenter_unserialize($champ['valeur']);
42                        }
43                }
44        }
45       
46        // Si on demande la valeur brute, on ne génère rien, on renvoie telle quelle
47        if ($type_retour == 'brut') {
48                return $reponses_valeurs[$id_formulaires_reponse][$nom];
49        }
50       
51        // Si on trouve bien la saisie demandée
52        if ($saisie = saisies_chercher($formulaires_saisies[$id_formulaire], $nom)) {
53                // On génère la vue de cette saisie avec la valeur trouvée précédemment
54                return recuperer_fond(
55                        'saisies-vues/_base',
56                        array_merge(
57                                array(
58                                        'type_saisie' => $saisie['saisie'],
59                                        'valeur' => $reponses_valeurs[$id_formulaires_reponse][$nom],
60                                        'valeur_uniquement' => ($type_retour == 'valeur_uniquement' ? 'oui' : 'non'),
61                                        'sans_reponse' => $sans_reponse,
62                                ),
63                                $saisie['options']
64                        )
65                );
66        }
67}
Note: See TracBrowser for help on using the repository browser.