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

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

support de typo() pour permettre le multilangue notamment la balise <multi> dans les titres et réponses

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     include_spip('inc/texte'); // pour typo
19
20     $str_resultat = _T("quickvote:resultat_titre");
21     $nb_vote = 0;
22     $vote = array();
23     
24     // boucle sur les reponses disponibles du formulaires = non vide
25     if ($res = sql_select('*', 'spip_quickvotes', "id_quickvote =".intval($id_quickvote))) {
26         while ($row = sql_fetch($res)) { 
27              for ($i=1;$i<11;$i++) {
28                  if (trim($row["reponse$i"]))  {                       
29                        // cherchons le nb de votes  pour chaque reponse
30                        $res2 = sql_select('reponse', 'spip_quickvotes_votes', "id_quickvote = ".intval($id_quickvote). " AND reponse='reponse$i'");
31                        $vote[$row["reponse$i"]] = sql_count($res2);
32                        $nb_vote += sql_count($res2);                   
33                  }
34              }
35         }
36     }
37     
38     // bilan - calcul des pourcentages
39     $str_resultat .= "<table>";     
40     foreach ($vote as $k=>$val) {
41                   if ($nb_vote)
42                          $resultat_pt = floor(($val/$nb_vote)*100);
43                        else
44                          $resultat_pt = 0;                   
45                   $reponse_intitule = typo($k);                   
46                   $str_resultat .= "<tr><td>$reponse_intitule</td><td>$resultat_pt %</td></tr>";
47     }
48     $str_resultat .= "</table>"; 
49     
50     if ($nb_vote ==0)
51                    $str_resultat .= "<div class='nb_vote'>"._T("quickvote:resultat_0_vote")."</div>";
52     else if ($nb_vote ==1)
53                    $str_resultat .= "<div class='nb_vote'>"._T("quickvote:resultat_nb_vote")."</div>";
54          else 
55                    $str_resultat .= "<div class='nb_vote'>"._T("quickvote:resultat_nb_votes",array("nb"=>$nb_vote))."</div>";
56     
57     return $str_resultat;
58     
59
60}
61
62
63//
64//  CVT pour traiter le vote   
65//
66/**
67 * Charger
68 *   
69 *   
70 */
71
72function formulaires_quickvote_charger_dist($id_quickvote,$skip_vote='non',$masquer_question='non'){ 
73    $valeurs = "";
74    $id_quickvote = intval($id_quickvote);   
75    $valeurs['id'] = $id_quickvote;
76    $ip = $GLOBALS['ip'];
77   
78    // masque question ?
79    if ($masquer_question=='oui') {
80           $valeurs['masquer_question'] = 'oui'; 
81    }
82 
83    // est ce que le sondage est cloturé ?
84    if (($row = sql_fetsel("actif", "spip_quickvotes", "id_quickvote = $id_quickvote AND actif = 0")) || ($skip_vote=='oui')){
85                $valeurs['editable'] = false;             
86            $valeurs['message_ok'] = quickvote_resultat($id_quickvote);
87    }     
88    // deja vote
89    else if ($row = sql_fetsel("ip", "spip_quickvotes_votes", "id_quickvote = $id_quickvote AND ip='$ip'")){
90              $valeurs['editable'] = false; 
91          $valeurs['message_ok'] = quickvote_resultat($id_quickvote);           
92    } 
93   
94    $valeurs['time_invalidateur']=time().'-'.rand();  // on passe une valeur pour invalider systematiquement le cache
95    return $valeurs;
96} 
97
98 
99/**
100 * Verifer
101 *
102 */
103
104function formulaires_quickvote_verifier_dist($id_quickvote){
105        $erreurs = array();
106      if (!_request('quickvote'))
107         $erreurs['message_erreur'] = _T("quickvote:erreur_pasvote");
108     
109      return $erreurs;
110} 
111
112 
113/**
114 * Traiter
115 *
116 */
117
118function formulaires_quickvote_traiter_dist($id_quickvote){
119           // Effectuer des traitements
120     
121        // invalider les caches  (utile ?)
122           include_spip('inc/invalideur');
123           suivre_invalideur("id='id_quickvote/$id_quickvote'");
124     
125     // SQL
126     $ip = $GLOBALS['ip'];
127     // 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
128     if (!$row = sql_fetsel("ip", "spip_quickvotes_votes", "id_quickvote = $id_quickvote AND ip='$ip'"))  { 
129           $requete_sql = array();
130           $requete_sql['id_quickvote']  = $id_quickvote;
131           $requete_sql['reponse'] = _request('quickvote');
132           $requete_sql['ip']   = $ip;
133           $n = sql_insertq('spip_quickvotes_votes', $requete_sql);
134    }
135 
136    // Valeurs de retours
137    return array(
138       'message_ok' => quickvote_resultat($id_quickvote), 
139       'editable' => false
140    );   
141}
142
143
144 
145
146
147?>
Note: See TracBrowser for help on using the repository browser.