source: spip-zone/_plugins_branche_stable_/_spip_1_9_1_/Forms/exec/forms_reponses.php @ 4939

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

SPIP_NUM evidemment, et message d'erreur affiche dans le formulaire

File size: 7.5 KB
Line 
1<?php
2/*
3 * forms
4 * version plug-in de spip_form
5 *
6 * Auteur :
7 * Antoine Pitrou
8 * adaptation en 182e puis plugin par cedric.morin@yterium.com
9 * © 2005,2006 - Distribue sous licence GNU/GPL
10 *
11 */
12
13include_spip('inc/forms');
14
15function exec_forms_reponses(){
16        global $id_form;
17        global $supp_reponse;
18        $debut = _request('debut');
19  include_spip("inc/presentation");
20  Forms_verifier_base();
21
22        $id_form = intval($id_form);
23
24        if ($id_form) {
25                $query = "SELECT * FROM spip_forms WHERE id_form=$id_form";
26                $result = spip_query($query);
27                if ($row = spip_fetch_array($result)) {
28                        $titre = $row['titre'];
29                        $descriptif = $row['descriptif'];
30                        $structure = unserialize($row['structure']);
31                        $sondage = $row['sondage'];
32                }
33        }
34
35
36        debut_page("&laquo; ".textebrut(typo($titre))." &raquo;", "redacteurs", "suivi-forms");
37        debut_gauche();
38
39        if ($id_form) {
40                debut_boite_info();
41
42                icone_horizontale(_L("Aller au formulaire"), "?exec=forms_edit&id_form=$id_form", "../"._DIR_PLUGIN_FORMS. "/img_pack/form-24.png", "rien.gif");
43
44                if (Forms_form_administrable($id_form)) {
45                        $retour = urlencode(self());
46                        icone_horizontale(_L("T&eacute;l&eacute;charger les r&eacute;ponses"),
47                                generer_url_ecrire("forms_telecharger","id_form=$id_form&retour=$retour"), "doc-24.gif", "rien.gif");
48                }
49
50                fin_boite_info();
51        }
52
53        debut_droite();
54
55
56        if (!Forms_form_administrable($id_form)) {
57                echo "<strong>"._T('avis_acces_interdit')."</strong>";
58                fin_page();
59                exit;
60        }
61
62        if ($id_form) {
63                gros_titre(_L("Suivi du formulaire")."&nbsp;: &laquo;&nbsp;".typo($titre)."&nbsp;&raquo;");
64        }
65        else {
66                gros_titre(_L("Suivi des formulaires"));
67        }
68
69
70        if ($id_reponse = intval($supp_reponse)) {
71                $query = "DELETE FROM spip_reponses WHERE id_reponse=$id_reponse";
72                $result = spip_query($query);
73                $query = "DELETE FROM spip_reponses_champs WHERE id_reponse=$id_reponse";
74                $result = spip_query($query);
75        }
76
77        if ($id_form)
78                $where = "WHERE id_form=$id_form AND ";
79        else
80                $where = "WHERE ";
81
82        //
83        // Sondage : afficher les cumuls
84        //
85
86        if ($id_form && $sondage != 'non') {
87                echo "<br />\n";
88                debut_cadre_enfonce("statistiques-24.gif");
89                include_spip('forms_fonctions');
90                echo Forms_afficher_reponses_sondage($id_form);
91                fin_cadre_enfonce();
92        }
93
94        //
95        // Afficher les liens vers les tranches
96        //
97        $debut = intval($debut);
98        $tranche = 10;
99
100        $query = "SELECT COUNT(*) AS cnt FROM spip_reponses ".
101                "$where statut='valide' AND date > DATE_SUB(NOW(), INTERVAL 6 MONTH)";
102        $result = spip_query($query);
103        list($total) = spip_fetch_array($result);
104
105        if ($total > $tranche) {
106                echo "<br />";
107                for ($i = 0; $i < $total; $i = $i + $tranche){
108                        if ($i > 0) echo " | ";
109                        if ($i == $debut)
110                                echo "<strong>$i</strong>";
111                        else {
112                                $link=parametre_url(self(),'debut', strval($i));
113                                echo "<a href='".$link."'>$i</a>";
114                               
115                        }
116                }
117        }
118        echo "<br />\n";
119
120
121        //
122        // Afficher les reponses
123        //
124        $trans = array();
125        $types = array();
126        $structures = array();
127        $form_unique = $id_form;
128
129        $query = "SELECT r.*, a.nom FROM spip_reponses AS r LEFT JOIN spip_auteurs AS a USING (id_auteur) ".
130                "$where r.statut='valide' AND r.date > DATE_SUB(NOW(), INTERVAL 6 MONTH) ".
131                "ORDER BY r.date DESC LIMIT $debut, $tranche";
132        $result = spip_query($query);
133        while ($row = spip_fetch_array($result)) {
134                $id_form = $row['id_form'];
135                $id_reponse = $row['id_reponse'];
136                $date = $row['date'];
137                $ip = $row['ip'];
138                $url = $row['url'];
139                $id_auteur = $row['id_auteur'];
140                $nom_auteur = $row['nom'];
141
142                // Preparer la table de traduction code->valeur
143                $query_form = "SELECT titre, structure FROM spip_forms WHERE id_form=$id_form";
144                /*$row_form = spip_fetch_array(spip_query($query_form));
145                $structure = unserialize($row_form['structure']);
146                $titre_form = $row_form['titre'];*/
147                list($titre_form, $structure) = spip_fetch_array(spip_query($query_form),SPIP_NUM);
148                $structure = unserialize($structure);
149                if (!$trans[$id_form]) {
150                        foreach ($structure as $index => $t) {
151                                $code = $t['code'];
152                                $type = $t['type'];
153                                $type_ext = $t['type_ext'];
154                                $types[$id_form][$code] = $type;
155                                $trans[$id_form][$code] = array();
156
157                                if ($type == 'select' || $type == 'multiple') {
158                                        $trans[$id_form][$code] = array_map('typo', $t['type_ext']);
159                                }
160                                else if ($type == 'mot') {
161                                        $id_groupe = intval($t['type_ext']['id_groupe']);
162                                        $query_mot = "SELECT id_mot, titre FROM spip_mots WHERE id_groupe=$id_groupe";
163                                        $result_mot = spip_query($query_mot);
164                                        while ($row = spip_fetch_array($result_mot)) {
165                                                $id_mot = $row['id_mot'];
166                                                $titre = $row['titre'];
167                                                $trans[$id_form][$code][$id_mot] = "<a href='".generer_url_ecrire("mots_edit","id_mot=$id_mot")."'>".typo($titre)."</a>";
168                                        }
169                                }
170                        }
171                }
172
173                // Lire les valeurs entrees
174                $query2 = "SELECT * FROM spip_reponses_champs WHERE id_reponse=$id_reponse";
175                $result2 = spip_query($query2);
176                $valeurs = array();
177                $retour = urlencode(self());
178                while ($row2 = spip_fetch_array($result2)) {
179                        $champ = $row2['champ'];
180                        if ($types[$id_form][$champ] == 'fichier') {
181                                $valeurs[$champ][] = "<a href='".generer_url_ecrire("forms_telecharger","id_reponse=$id_reponse&champ=$champ&retour=$retour")."'>".
182                                        $row2['valeur']."</a>";
183                        }
184                        else if (isset($trans[$id_form][$champ][$row2['valeur']]))
185                                $valeurs[$champ][] = $trans[$id_form][$champ][$row2['valeur']];
186                        else
187                                $valeurs[$champ][] = propre($row2['valeur']);
188                }
189
190                echo "<br />\n";
191
192                debut_cadre_relief("../"._DIR_PLUGIN_FORMS."/img_pack/form-24.png");
193
194                //$link = new Link();
195                //$link->addVar('supp_reponse', $id_reponse);
196                //icone(_L("Supprimer cette r&eacute;ponse"), $link->getUrl(),"../"._DIR_PLUGIN_FORMS."/img_pack/form-24.png", "supprimer.gif", "right");
197                $link=parametre_url(self(),'supp_reponse', $id_reponse);
198                icone(_L("Supprimer cette r&eacute;ponse"), $link,"../"._DIR_PLUGIN_FORMS."/img_pack/form-24.png", "supprimer.gif", "right");
199               
200                if ($row['id_article_export']==0){
201                        icone(_L("Exporter dans un article"), generer_action_auteur('forms_exporte_reponse_article',"$id_reponse",self()),"article-24.gif", "creer.gif", "right");
202                }
203                else 
204                        icone(_L("Voir l'article"), generer_url_ecrire('articles',"id_article=".$row['id_article_export']),"article-24.gif", "", "right");
205               
206
207                echo _L("R&eacute;ponse envoy&eacute;e le ").affdate($date)."<br />\n";
208                if (!$form_unique) {
209                        //echo "<div style='padding: 2px; background-color: $couleur_claire;'>";
210                        echo _L("&agrave;")." ";
211                        echo "<strong class='verdana3' style='font-weight: bold;'><a href='?exec=forms_reponses&id_form=$id_form'>"
212                                .typo($titre_form)."</a></strong> ";
213                        //echo "<br />\n";
214                        //echo "</div>\n";
215                }
216
217                if ($id_auteur) {
218                        $s = "<a href='".generer_url_ecrire("auteur_infos","id_auteur=$id_auteur")."'>".typo($nom_auteur)."</a>";
219                        echo _T('forum_par_auteur', array('auteur' => $s));
220                        echo "<br />\n";
221                }
222                echo _L("Depuis la page ")."<a href='$url'>$url</a><br />\n";
223               
224                echo "<br />\n";
225
226                foreach ($structure as $index => $t) {
227                        $nom = $t['nom'];
228                        $code = $t['code'];
229                        $type = $t['type'];
230                        if (!$v = $valeurs[$code]) continue;
231                        $n = count($v);
232                        if ($n > 1) {
233                                $s = join(', ', $v)."\n";
234                        }
235                        else $s = join('', $v);
236                        echo "<span class='verdana1' style='text-transform: uppercase; font-weight: bold; color: #404040;'>";
237                        echo propre($nom)." :</span>";
238                        echo "&nbsp; ".$s;
239                        echo "<br />\n";
240                }
241
242                echo "<div style='clear: both;'></div>";
243
244                fin_cadre_relief();
245        }
246
247
248
249        fin_page();
250}
251
252?>
Note: See TracBrowser for help on using the repository browser.