source: spip-zone/_plugins_/quickvote/branches/2_1_0/formulaires/quickvote.php @ 78481

Last change on this file since 78481 was 78481, checked in by erational@…, 7 years ago

ajout d'une suggestion technique à tester pour les maj ulterieures

File size: 4.7 KB
Line 
1<?php
2
3// Sécurité
4if (!defined('_ECRIRE_INC_VERSION')) return;
5
6include_spip('inc/editer');
7include_spip('base/abstract_sql');
8
9
10// générer les résultats du vote sous forme d'une chaine HTML
11//
12// alternative:
13// au lieu de passer par PHP, on pourrait passer par un squelette (qui permettrait de faciliter la personnalisation)
14// l'appel de la fonction se limiterait à un recuperer_fond()
15// ... à tester pour la version SPIP3 et être attentif à la perf. si le cache de ce squelette est nul.
16function quickvote_resultat($id_quickvote) {
17     include_spip('base/abstract_sql');
18
19     $str_resultat = _T("quickvote:resultat_titre");
20     $nb_vote = 0;
21     $vote = array();
22     
23     // boucle sur les reponses disponibles du formulaires = non vide
24     if ($res = sql_select('*', 'spip_quickvotes', "id_quickvote =".intval($id_quickvote))) {
25         while ($row = sql_fetch($res)) { 
26              for ($i=1;$i<11;$i++) {
27                  if (trim($row["reponse$i"]))  {                       
28                        // cherchons le nb de votes  pour chaque reponse
29                        $res2 = sql_select('reponse', 'spip_quickvotes_votes', "id_quickvote = ".intval($id_quickvote). " AND reponse='reponse$i'");
30                        $vote[$row["reponse$i"]] = sql_count($res2);
31                        $nb_vote += sql_count($res2);                   
32                  }
33              }
34         }
35     }
36     
37     // bilan - calcul des pourcentages
38     $str_resultat .= "<table>";     
39     foreach ($vote as $k=>$val) {
40                   if ($nb_vote)
41                          $resultat_pt = floor(($val/$nb_vote)*100);
42                        else
43                          $resultat_pt = 0;                   
44                   $reponse_intitule = $k;                   
45                   $str_resultat .= "<tr><td>$reponse_intitule</td><td>$resultat_pt %</li></td></tr>";
46     }
47     $str_resultat .= "</table>"; 
48     
49     if ($nb_vote ==0)
50                    $str_resultat .= "<div class='nb_vote'>"._T("quickvote:resultat_0_vote")."</div>";
51     else if ($nb_vote ==1)
52                    $str_resultat .= "<div class='nb_vote'>"._T("quickvote:resultat_nb_vote")."</div>";
53          else 
54                    $str_resultat .= "<div class='nb_vote'>"._T("quickvote:resultat_nb_votes",array("nb"=>$nb_vote))."</div>";
55     
56     return $str_resultat;
57     
58
59}
60
61
62//
63//  CVT pour traiter le vote   
64//
65/**
66 * Charger
67 *   
68 *   
69 */
70
71function formulaires_quickvote_charger_dist($id_quickvote,$skip_vote='non',$masquer_question='non'){ 
72    $valeurs = "";
73    $id_quickvote = intval($id_quickvote);   
74    $valeurs['id'] = $id_quickvote;
75    $ip = $GLOBALS['ip'];
76   
77    // masque question ?
78    if ($masquer_question=='oui') {
79           $valeurs['masquer_question'] = 'oui'; 
80    }
81 
82    // est ce que le sondage est cloturé ?
83    if (($row = sql_fetsel("actif", "spip_quickvotes", "id_quickvote = $id_quickvote AND actif = 0")) || ($skip_vote=='oui')){
84                $valeurs['editable'] = false;             
85            $valeurs['message_ok'] = quickvote_resultat($id_quickvote);
86    }     
87    // deja vote
88    else if ($row = sql_fetsel("ip", "spip_quickvotes_votes", "id_quickvote = $id_quickvote AND ip='$ip'")){
89              $valeurs['editable'] = false; 
90          $valeurs['message_ok'] = quickvote_resultat($id_quickvote);           
91    } 
92   
93    $valeurs['time_invalidateur']=time().'-'.rand();  // on passe une valeur pour invalider systematiquement le cache
94    return $valeurs;
95} 
96
97 
98/**
99 * Verifer
100 *
101 */
102
103function formulaires_quickvote_verifier_dist($id_quickvote){
104        $erreurs = array();
105      if (!_request('quickvote'))
106         $erreurs['message_erreur'] = _T("quickvote:erreur_pasvote");
107     
108      return $erreurs;
109} 
110
111 
112/**
113 * Traiter
114 *
115 */
116
117function formulaires_quickvote_traiter_dist($id_quickvote){
118           // Effectuer des traitements
119     
120        // invalider les caches  (utile ?)
121           include_spip('inc/invalideur');
122           suivre_invalideur("id='id_quickvote/$id_quickvote'");
123     
124     // SQL
125     $ip = $GLOBALS['ip'];
126     // sécurité le formulaire peut etre chargé à plusieurs endroits à la fois: on n'enregistre que le 1er vote de cette IP, les autres votes sont ignorés
127     if (!$row = sql_fetsel("ip", "spip_quickvotes_votes", "id_quickvote = $id_quickvote AND ip='$ip'"))  { 
128           $requete_sql = array();
129           $requete_sql['id_quickvote']  = $id_quickvote;
130           $requete_sql['reponse'] = _request('quickvote');
131           $requete_sql['ip']   = $ip;
132           $n = sql_insertq('spip_quickvotes_votes', $requete_sql);
133    }
134 
135    // Valeurs de retours
136    return array(
137       'message_ok' => quickvote_resultat($id_quickvote), 
138       'editable' => false
139    );   
140}
141
142
143 
144
145
146?>
Note: See TracBrowser for help on using the repository browser.