[SPIP Zone] r4210 - in /_plugins_/_contenu_editorial_/spip-sondages: base/sondages.php inc/sondages_admin.php inc/sondages_balises.php inc/sondages_filtres.php inc/sondages_fonctions.php plugin.xml resultat_sondage.html

Author: pierre.basson@gmail.com
Date: Tue Jul 25 06:08:35 2006
New Revision: 4210

Log:
- ajout des filtres |sondages_pourcentage{id_sondage} et |sondages_largeur{id_sondage, largeur_max} en plus de la balise #POURCENTAGE
- modification de la bdd pour pouvoir faire <BOUCLEn(AVIS) {id_sondage}> </BOUCLEn>#TOTAL_BOUCLE</Bn>
- amélioration du squelette resultat_sondage.html
- passage en version 1.2

Added:
    _plugins_/_contenu_editorial_/spip-sondages/inc/sondages_filtres.php
Modified:
    _plugins_/_contenu_editorial_/spip-sondages/base/sondages.php
    _plugins_/_contenu_editorial_/spip-sondages/inc/sondages_admin.php
    _plugins_/_contenu_editorial_/spip-sondages/inc/sondages_balises.php
    _plugins_/_contenu_editorial_/spip-sondages/inc/sondages_fonctions.php
    _plugins_/_contenu_editorial_/spip-sondages/plugin.xml
    _plugins_/_contenu_editorial_/spip-sondages/resultat_sondage.html

Modified: _plugins_/_contenu_editorial_/spip-sondages/base/sondages.php

--- _plugins_/_contenu_editorial_/spip-sondages/base/sondages.php (original)
+++ _plugins_/_contenu_editorial_/spip-sondages/base/sondages.php Tue Jul 25 06:08:35 2006
@@ -68,6 +68,7 @@

   $spip_avis = array(
             "id_avis" => "bigint(21) NOT NULL",
+ "id_sondage" => "bigint(21) NOT NULL",
             "id_sonde" => "bigint(21) NOT NULL",
             "id_choix" => "bigint(21) NOT NULL"
           );

Modified: _plugins_/_contenu_editorial_/spip-sondages/inc/sondages_admin.php

--- _plugins_/_contenu_editorial_/spip-sondages/inc/sondages_admin.php (original)
+++ _plugins_/_contenu_editorial_/spip-sondages/inc/sondages_admin.php Tue Jul 25 06:08:35 2006
@@ -43,6 +43,19 @@
         ecrire_meta('spip_sondages_version', $version_base = 1.1);
         ecrire_metas();
       }
+ if ($version_base < 1.2) {
+ creer_base();
+ spip_query("ALTER TABLE spip_avis ADD id_sondage bigint(21) NOT NULL AFTER id_avis;");
+ $requete = 'SELECT C.id_sondage AS id_sondage,
+ A.id_avis AS id_avis
+ FROM spip_avis AS A
+ INNER JOIN spip_choix AS C ON C.id_choix=A.id_choix';
+ $resultat = spip_query($requete);
+ while ($arr = spip_fetch_array($resultat))
+ spip_query('UPDATE spip_avis SET id_sondage="'.$arr['id_sondage'].'" WHERE id_avis="'.$arr['id_avis'].'"');
+ ecrire_meta('spip_sondages_version', $version_base = 1.2);
+ ecrire_metas();
+ }
     }
     return true;
   }

Modified: _plugins_/_contenu_editorial_/spip-sondages/inc/sondages_balises.php

--- _plugins_/_contenu_editorial_/spip-sondages/inc/sondages_balises.php (original)
+++ _plugins_/_contenu_editorial_/spip-sondages/inc/sondages_balises.php Tue Jul 25 06:08:35 2006
@@ -44,7 +44,7 @@
    * balise_POURCENTAGE
    *
    * @param p est un objet SPIP
- * @return string url de validation de l'inscription
+ * @return float pourcentage
    * @author Pierre Basson
    **/
   function balise_POURCENTAGE($p) {
@@ -56,4 +56,19 @@
   }

+ /**
+ * balise_POURCENTAGE_MAX
+ *
+ * @param p est un objet SPIP
+ * @return float pourcentage max pour le sondage
+ * @author Pierre Basson
+ **/
+ function balise_POURCENTAGE_MAX($p) {
+ $_id_sondage = champ_sql('id_sondage',$p);
+ $p->code = "sondages_calculer_pourcentage_max($_id_sondage)";
+ $p->statut = 'php';
+ return $p;
+ }
+
+
?>
\ No newline at end of file

Added: _plugins_/_contenu_editorial_/spip-sondages/inc/sondages_filtres.php

--- _plugins_/_contenu_editorial_/spip-sondages/inc/sondages_filtres.php (added)
+++ _plugins_/_contenu_editorial_/spip-sondages/inc/sondages_filtres.php Tue Jul 25 06:08:35 2006
@@ -0,0 +1,77 @@
+<?php
+
+
+ /**
+ * SPIP-Sondages : plugin de gestion de sondages
+ *
+ * Copyright (c) 2006
+ * Agence Artégo http://www.artego.fr
+ *
+ * Ce programme est un logiciel libre distribue sous licence GNU/GPL.
+ * Pour plus de details voir le fichier COPYING.txt.
+ *
+ **/
+
+
+ /**
+ * sondages_pourcentage
+ *
+ * calcule le pourcentage associé à un choix
+ *
+ * @param int total_avis
+ * @param int id_sondage
+ * @return string pourcentage
+ * @author Pierre Basson
+ **/
+ function sondages_pourcentage($total_avis, $id_sondage) {
+ $requete_total_sondage = 'SELECT A.id_avis
+ FROM spip_avis AS A, spip_sondes AS S
+ WHERE S.id_sonde=A.id_sonde
+ AND S.id_sondage="'.$id_sondage.'"';
+ $resultat_total_sondage = spip_query($requete_total_sondage);
+ $total_sondage = intval(spip_num_rows($resultat_total_sondage));
+
+ $pourcentage = ( ($total_avis / $total_sondage) * 100 );
+ $pourcentage = number_format($pourcentage, 1, '.', '');
+ return $pourcentage;
+ }
+
+
+ /**
+ * sondages_largeur
+ *
+ * calcule la largeur pour le total passé en argument
+ *
+ * @param int total_avis
+ * @param int id_sondage
+ * @param int largeur_max
+ * @return string pourcentage
+ * @author Pierre Basson
+ **/
+ function sondages_largeur($total_avis, $id_sondage, $largeur_max) {
+ $requete_total_sondage = 'SELECT A.id_avis
+ FROM spip_avis AS A, spip_sondes AS S
+ WHERE S.id_sonde=A.id_sonde
+ AND S.id_sondage="'.$id_sondage.'"';
+ $resultat_total_sondage = spip_query($requete_total_sondage);
+ $total_sondage = intval(spip_num_rows($resultat_total_sondage));
+
+ $requete_max = 'SELECT COUNT(id_choix) AS total
+ FROM spip_avis
+ WHERE id_sondage="'.$id_sondage.'"
+ GROUP BY id_choix
+ ORDER BY total DESC
+ LIMIT 1';
+ $resultat_max = spip_query($requete_max);
+ list($max) = spip_fetch_array($resultat_max);
+ if ($max == 0)
+ return '';
+
+ $rapport = $total_avis / $max;
+ $largeur = $rapport * $largeur_max;
+
+ return $largeur;
+ }
+
+
+?>
\ No newline at end of file

Modified: _plugins_/_contenu_editorial_/spip-sondages/inc/sondages_fonctions.php

--- _plugins_/_contenu_editorial_/spip-sondages/inc/sondages_fonctions.php (original)
+++ _plugins_/_contenu_editorial_/spip-sondages/inc/sondages_fonctions.php Tue Jul 25 06:08:35 2006
@@ -17,6 +17,7 @@
   include_spip('inc/plugin');
   include_spip('inc/sondages_admin');
   include_spip('inc/sondages_balises');
+ include_spip('inc/sondages_filtres');

   /**
@@ -111,7 +112,8 @@
     $resultat_total_avis = spip_query($requete_total_avis);
     $total_avis = intval(spip_num_rows($resultat_total_avis));

- $pourcentage = floor( ($total_avis / $total_sondage) * 100 );
+ $pourcentage = ( ($total_avis / $total_sondage) * 100 );
+ $pourcentage = number_format($pourcentage, 1, '.', '');
     return $pourcentage;
   }

Modified: _plugins_/_contenu_editorial_/spip-sondages/plugin.xml

--- _plugins_/_contenu_editorial_/spip-sondages/plugin.xml (original)
+++ _plugins_/_contenu_editorial_/spip-sondages/plugin.xml Tue Jul 25 06:08:35 2006
@@ -1,7 +1,7 @@
<plugin>
         <nom>Plugin SPIP-Sondages</nom>
         <auteur>[Art&eacute;go->http://www.artego.fr]</auteur>
- <version>1.1</version>
+ <version>1.2</version>
         <etat>stable</etat>
         <description>Gestion de sondages</description>
         <options>sondages.php</options>

Modified: _plugins_/_contenu_editorial_/spip-sondages/resultat_sondage.html

--- _plugins_/_contenu_editorial_/spip-sondages/resultat_sondage.html (original)
+++ _plugins_/_contenu_editorial_/spip-sondages/resultat_sondage.html Tue Jul 25 06:08:35 2006
@@ -1,9 +1,12 @@
+<BOUCLE_sondage(SONDAGES) {id_sondage=#ENV{id_sondage}}>
[(#ENV*{sondage_termine}|?{' ',''})<p class="spip"><:sondages:sondage_termine:></p>]
[(#ENV*{sondage_deja_vote}|?{' ',''})<p class="spip"><:sondages:sondage_deja_vote:></p>]
[(#ENV*{sondage_merci}|?{' ',''})<p class="spip"><:sondages:sondage_merci:></p>]

<B_choix><ul class="spip">
-<BOUCLE_choix(CHOIX) {id_sondage=#ENV{id_sondage}}>
- <li>#TITRE : #POURCENTAGE % <BOUCLE_resultats(AVIS) {id_choix}> </BOUCLE_resultats>#TOTAL_BOUCLE <:sondages:votes:></B_resultats></li>
+<BOUCLE_choix(CHOIX) {id_sondage}>
+ <li>#TITRE : <B_resultats>[<small>(#TOTAL_BOUCLE|sondages_pourcentage{#ID_SONDAGE})</small>]<div style="border: 1px solid #CCC; font-size: 0.77em; background: #EAFFEA; width: [(#TOTAL_BOUCLE|sondages_largeur{#ID_SONDAGE,200})]px;">#TOTAL_BOUCLE</div> <BOUCLE_resultats(AVIS) {id_choix}> </BOUCLE_resultats></li>
</BOUCLE_choix></ul>
</B_choix>
+<BOUCLE_nb_votes(AVIS) {id_sondage}> </BOUCLE_nb_votes><p class="spip">#TOTAL_BOUCLE <:sondages:votes:></p></B_nb_votes>
+</BOUCLE_sondage>
\ No newline at end of file