| 300 | jpm | 1 | <?php
 | 
        
           |  |  | 2 | /*vim: set expandtab tabstop=4 shiftwidth=4: */
 | 
        
           |  |  | 3 | // +------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 4 | // | PHP version 5.1                                                                                      |
 | 
        
           |  |  | 5 | // +------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 6 | // | Copyright (C) 2006 Tela Botanica (accueil@tela-botanica.org)                                         |
 | 
        
           |  |  | 7 | // +------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 8 | // | Ce logiciel est un programme informatique servant à gérer du contenu et des applications web.        |                                                                           |
 | 
        
           |  |  | 9 | // |                                                                                                      |
 | 
        
           |  |  | 10 | // | Ce logiciel est régi par la licence CeCILL soumise au droit français et respectant les principes de  |
 | 
        
           |  |  | 11 | // | diffusion des logiciels libres. Vous pouvez utiliser, modifier et/ou redistribuer ce programme sous  |
 | 
        
           |  |  | 12 | // | les conditions de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA sur le site    |
 | 
        
           |  |  | 13 | // | "http://www.cecill.info".                                                                            |
 | 
        
           |  |  | 14 | // |                                                                                                      |
 | 
        
           |  |  | 15 | // | En contrepartie de l'accessibilité au code source et des droits de copie, de modification et de      |
 | 
        
           |  |  | 16 | // | redistribution accordés par cette licence, il n'est offert aux utilisateurs qu'une garantie limitée. |
 | 
        
           |  |  | 17 | // | Pour les mêmes raisons, seule une responsabilité restreinte pèse sur l'auteur du programme, le       |
 | 
        
           |  |  | 18 | // | titulaire des droits patrimoniaux et les concédants successifs.                                      |
 | 
        
           |  |  | 19 | // |                                                                                                      |
 | 
        
           |  |  | 20 | // | A cet égard l'attention de l'utilisateur est attirée sur les risques associés au chargement, à       |
 | 
        
           |  |  | 21 | // | l'utilisation,  à la modification et/ou au développement et à la reproduction du logiciel par        |
 | 
        
           |  |  | 22 | // | l'utilisateur étant donné sa spécificité de logiciel libre, qui peut le rendre complexe à manipuler  |
 | 
        
           |  |  | 23 | // | et qui le réserve donc à des développeurs et des professionnels avertis possédant des connaissances  |
 | 
        
           |  |  | 24 | // | informatiques approfondies. Les utilisateurs sont donc invités à charger  et  tester  l'adéquation   |
 | 
        
           |  |  | 25 | // | du logiciel à leurs besoins dans des conditions permettant d'assurer la sécurité de leurs systèmes   |
 | 
        
           |  |  | 26 | // | et ou de leurs données et, plus généralement, à l'utiliser et l'exploiter dans les mêmes conditions  |
 | 
        
           |  |  | 27 | // | de sécurité.                                                                                         |
 | 
        
           |  |  | 28 | // |                                                                                                      |
 | 
        
           |  |  | 29 | // | Le fait que vous puissiez accéder à cet en-tête signifie que vous avez pris connaissance de la       |
 | 
        
           |  |  | 30 | // | licence CeCILL, et que vous en avez accepté les termes.                                              |
 | 
        
           |  |  | 31 | // +------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 32 | // CVS : $Id: categorie.php,v 1.5 2006/12/12 13:32:00 jp_milcent Exp $
 | 
        
           |  |  | 33 | /**
 | 
        
           |  |  | 34 | * Applette : Stat Distribution
 | 
        
           |  |  | 35 | *
 | 
        
           |  |  | 36 | * Retourne les statistiques de distribution des inscrits à Tela Botanica sous différentes formes.
 | 
        
           |  |  | 37 | *
 | 
        
           |  |  | 38 | *@package Applette
 | 
        
           |  |  | 39 | *@subpackage stat_distribution
 | 
        
           |  |  | 40 | //Auteur original :
 | 
        
           |  |  | 41 | *@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
 | 
        
           |  |  | 42 | //Autres auteurs :
 | 
        
           |  |  | 43 | *@author        Aucun
 | 
        
           |  |  | 44 | *@copyright     Tela-Botanica 2000-2007
 | 
        
           |  |  | 45 | *@version       $Revision$ $Date$
 | 
        
           |  |  | 46 | // +------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 47 | */
 | 
        
           |  |  | 48 |   | 
        
           |  |  | 49 | // +------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 50 | // |                                            ENTÊTE du PROGRAMME                                       |
 | 
        
           |  |  | 51 | // +------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 52 | $GLOBALS['_GEN_commun']['info_applette_nom_fonction'] = 'afficherStatDistribution';
 | 
        
           |  |  | 53 | $GLOBALS['_GEN_commun']['info_applette_balise'] = '\{\{[Ss]tatDistribution(?:\s*(?:(format="[^"]+")|(niveau="[^"]+")|))+\s*\}\}';//;
 | 
        
           |  |  | 54 |   | 
        
           |  |  | 55 | // --------------------------------------------------------------------------------------------------------
 | 
        
           |  |  | 56 | //Utilisation de la bibliothèque Papyrus pap_meta.fonct.php inclue par Papyrus
 | 
        
           |  |  | 57 | //Utilisation de la bibliothèque PEAR NET_URL inclue par Papyrus
 | 
        
           |  |  | 58 | /** Inclusion du fichier de configuration de cette application.*/
 | 
        
           |  |  | 59 | require_once GEN_CHEMIN_CLIENT.'stat_distribution'.GEN_SEP.'configuration'.GEN_SEP.'stdi_configuration.inc.php';
 | 
        
           |  |  | 60 |   | 
        
           |  |  | 61 | // Inclusion des fichiers de traduction de l'applette CATEG de Papyrus
 | 
        
           |  |  | 62 | if (file_exists(STDI_CHEMIN_LANGUE.'stdi_langue_'.$GLOBALS['_GEN_commun']['i18n'].'.inc.php')) {
 | 
        
           |  |  | 63 |     /** Inclusion du fichier de traduction suite à la transaction avec le navigateur.*/
 | 
        
           |  |  | 64 |     require_once STDI_CHEMIN_LANGUE.'stdi_langue_'.$GLOBALS['_GEN_commun']['i18n'].'.inc.php';
 | 
        
           |  |  | 65 | } else {
 | 
        
           |  |  | 66 |     /** Inclusion du fichier de traduction par défaut.*/
 | 
        
           |  |  | 67 |     require_once STDI_CHEMIN_LANGUE.'stdi_langue_'.STDI_I18N_DEFAUT.'.inc.php';
 | 
        
           |  |  | 68 | }
 | 
        
           |  |  | 69 |   | 
        
           |  |  | 70 |   | 
        
           |  |  | 71 | // +------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 72 | // |                                            CORPS du PROGRAMME                                        |
 | 
        
           |  |  | 73 | // +------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 74 | // En attendant de pouvoir utiliser le nouveaux système d'appllet de la branche principale de Papyrus
 | 
        
           |  |  | 75 | function afficherContenuCorps()
 | 
        
           |  |  | 76 | {
 | 
        
           |  |  | 77 | 	$tab_applette_arguments[1] = 'format='.$GLOBALS['_GEN_commun']['info_application']->format;
 | 
        
           |  |  | 78 | 	$tab_applette_arguments[2] = 'niveau='.$GLOBALS['_GEN_commun']['info_application']->niveau;
 | 
        
           |  |  | 79 | 	return afficherStatDistribution($tab_applette_arguments, $GLOBALS['_GEN_commun']);
 | 
        
           |  |  | 80 | }
 | 
        
           |  |  | 81 |   | 
        
           |  |  | 82 | /** Fonction afficherStatDistribution() - Retourne les stats de distribution.
 | 
        
           |  |  | 83 | *
 | 
        
           |  |  | 84 | * Cette fonction Retourne les statistiques de distribution des inscrits à Tela Botanica sous différentes formes.
 | 
        
           |  |  | 85 | *
 | 
        
           |  |  | 86 | * @param  array contient les arguments de la fonction.
 | 
        
           |  |  | 87 | * @param  array  tableau global de Papyrus.
 | 
        
           |  |  | 88 | * @return string HTML les stats de distribution.
 | 
        
           |  |  | 89 | */
 | 
        
           |  |  | 90 | function afficherStatDistribution($tab_applette_arguments, $_GEN_commun)
 | 
        
           |  |  | 91 | {
 | 
        
           |  |  | 92 | 	// Initialisation des variables
 | 
        
           |  |  | 93 |     $sortie = '';
 | 
        
           |  |  | 94 |   | 
        
           |  |  | 95 | 	//+----------------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 96 | 	// Gestion des arguments
 | 
        
           |  |  | 97 |     $tab_arguments = $tab_applette_arguments;
 | 
        
           |  |  | 98 | 	unset($tab_arguments[0]);
 | 
        
           |  |  | 99 |     foreach($tab_arguments as $argument) {
 | 
        
           |  |  | 100 | 	    $tab_parametres = explode('=', $argument);
 | 
        
           |  |  | 101 | 	    $options[$tab_parametres[0]] = trim($tab_parametres[1], '"');
 | 
        
           |  |  | 102 |     }
 | 
        
           |  |  | 103 |   | 
        
           |  |  | 104 | 	//+----------------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 105 |     // Gestion des erreurs de paramètrage
 | 
        
           |  |  | 106 |     $GLOBALS['_STAT_DISTRIBUTION_']['erreur'] = '';
 | 
        
           |  |  | 107 |     if (!isset($options['format'])) {
 | 
        
           |  |  | 108 |         $GLOBALS['_STAT_DISTRIBUTION_']['erreur'] = STDI_LG_ERREUR_FORMAT;
 | 
        
           |  |  | 109 |     }
 | 
        
           |  |  | 110 |     if (!isset($options['niveau'])) {
 | 
        
           |  |  | 111 |         $GLOBALS['_STAT_DISTRIBUTION_']['erreur'] = STDI_LG_ERREUR_NIVEAU;
 | 
        
           |  |  | 112 |     }
 | 
        
           |  |  | 113 |   | 
        
           |  |  | 114 |     //+----------------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 115 |     // Récupération des données
 | 
        
           |  |  | 116 | 	switch ($options['niveau']) {
 | 
        
           |  |  | 117 | 		case 'europe' :
 | 
        
           |  |  | 118 | 			$tab_legende_fr = array();
 | 
        
           |  |  | 119 | 			$tab_legende_ss_fr = array();
 | 
        
           |  |  | 120 | 			$tab_donnees_fr = array() ;
 | 
        
           |  |  | 121 | 			$tab_donnees_ss_fr = array() ;
 | 
        
           |  |  | 122 | 			$total_autre = 0;
 | 
        
           |  |  | 123 | 			$requete = 	'SELECT CP_ID_Pays, CP_Intitule_pays, COUNT(CP_ID_Pays) AS nbre '.
 | 
        
           |  |  | 124 | 						'FROM annuaire_tela, carto_PAYS '.
 | 
        
           |  |  | 125 | 						'WHERE U_COUNTRY = CP_ID_Pays '.
 | 
        
           |  |  | 126 | 						'AND CP_ID_Continent = 4 '.
 | 
        
           |  |  | 127 | 						'GROUP BY CP_ID_Pays '.
 | 
        
           |  |  | 128 | 						'ORDER BY nbre DESC';
 | 
        
           |  |  | 129 | 			$GLOBALS['_STAT_DISTRIBUTION_']['titre'] = 'Répartition des inscrits à Tela Botanica en Europe';
 | 
        
           |  |  | 130 | 			break;
 | 
        
           |  |  | 131 | 		case 'monde' :
 | 
        
           |  |  | 132 | 			$requete = 	'SELECT CC_ID_Continent, CC_Intitule_continent, COUNT(CC_ID_Continent) AS nbre '.
 | 
        
           |  |  | 133 | 						'FROM annuaire_tela, carto_PAYS, carto_CONTINENT '.
 | 
        
           |  |  | 134 | 						'WHERE U_COUNTRY = CP_ID_Pays '.
 | 
        
           |  |  | 135 | 						'AND CP_ID_Continent = CC_ID_Continent '.
 | 
        
           |  |  | 136 | 						'GROUP BY CC_ID_Continent ';
 | 
        
           |  |  | 137 | 			$GLOBALS['_STAT_DISTRIBUTION_']['titre'] = 'Répartition des inscrits à Tela Botanica dans le monde';
 | 
        
           |  |  | 138 | 			break;
 | 
        
           |  |  | 139 | 	}
 | 
        
           |  |  | 140 |   | 
        
           |  |  | 141 |   | 
        
           |  |  | 142 | 	$resultat = $GLOBALS['db']->query($requete) ;
 | 
        
           |  |  | 143 |   | 
        
           |  |  | 144 | 	while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
 | 
        
           |  |  | 145 | 		switch ($options['niveau']) {
 | 
        
           |  |  | 146 | 			case 'europe' :
 | 
        
           |  |  | 147 | 				$id = $ligne->CP_ID_Pays;
 | 
        
           |  |  | 148 | 			    $legende_libelle = $ligne->CP_Intitule_pays.' (%1.2f%%)';
 | 
        
           |  |  | 149 | 			    $libelle = $ligne->CP_Intitule_pays.' ['.$id.']';
 | 
        
           |  |  | 150 | 			    $nbre = $ligne->nbre;
 | 
        
           |  |  | 151 | 			    if ($id != 'fr' && $id != 'FR') {
 | 
        
           |  |  | 152 | 			    	$tab_donnees_ss_fr[] = $nbre;
 | 
        
           |  |  | 153 | 			    	$tab_legende_ss_fr[] = $legende_libelle;
 | 
        
           |  |  | 154 | 			    	$total_autre += $nbre;
 | 
        
           |  |  | 155 | 			    	$tab_donnees_fr[1] += $nbre;
 | 
        
           |  |  | 156 | 					$tab_legende_fr[1] = 'Autres pays européens (%1.2f%%)';
 | 
        
           |  |  | 157 | 			    } else {
 | 
        
           |  |  | 158 | 			    	$tab_donnees_fr[0] = $nbre;
 | 
        
           |  |  | 159 | 			    	$tab_legende_fr[0] = $legende_libelle;
 | 
        
           |  |  | 160 | 			    }
 | 
        
           |  |  | 161 | 				break;
 | 
        
           |  |  | 162 | 			case 'monde' :
 | 
        
           |  |  | 163 | 				$id = $ligne->CC_ID_Continent;
 | 
        
           |  |  | 164 |     			$legende_libelle = '['.$id.'] '.$ligne->CC_Intitule_continent.' (%1.2f%%)';
 | 
        
           |  |  | 165 |     			$libelle = $ligne->CC_Intitule_continent.' ['.$id.']';
 | 
        
           |  |  | 166 |     			$nbre = $ligne->nbre;
 | 
        
           |  |  | 167 |     			$tab_donnees[$id] = $ligne->nbre;
 | 
        
           |  |  | 168 |     			if (!isset($legende[$id])) {
 | 
        
           |  |  | 169 |     				$tab_legende[$id] = $legende_libelle;
 | 
        
           |  |  | 170 |     			}
 | 
        
           |  |  | 171 | 				break;
 | 
        
           |  |  | 172 | 		}
 | 
        
           |  |  | 173 |   | 
        
           |  |  | 174 | 	    $GLOBALS['_STAT_DISTRIBUTION_']['tab_donnees'][$id]['libelle'] = $libelle;
 | 
        
           |  |  | 175 | 	    $GLOBALS['_STAT_DISTRIBUTION_']['tab_donnees'][$id]['nombre'] = $nbre;
 | 
        
           |  |  | 176 | 	    $total += $nbre;
 | 
        
           |  |  | 177 | 	}
 | 
        
           |  |  | 178 |   | 
        
           |  |  | 179 | 	foreach ($GLOBALS['_STAT_DISTRIBUTION_']['tab_donnees'] as $id => $val) {
 | 
        
           |  |  | 180 | 		$GLOBALS['_STAT_DISTRIBUTION_']['tab_donnees'][$id]['pourcentage'] = round($val['nombre']/$total*100, 2).' %';
 | 
        
           |  |  | 181 | 	}
 | 
        
           |  |  | 182 |   | 
        
           |  |  | 183 | 	//+----------------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 184 |     // Extrait les variables et les ajoutes à l'espace de noms local
 | 
        
           |  |  | 185 | 	// Gestion des squelettes
 | 
        
           |  |  | 186 | 	extract($GLOBALS['_STAT_DISTRIBUTION_']);
 | 
        
           |  |  | 187 | 	// Démarre le buffer
 | 
        
           |  |  | 188 | 	ob_start();
 | 
        
           |  |  | 189 | 	// Inclusion du fichier
 | 
        
           |  |  | 190 | 	include(STDI_CHEMIN_SQUELETTE.STDI_SQUELETTE_LISTE);
 | 
        
           |  |  | 191 | 	// Récupérer le  contenu du buffer
 | 
        
           |  |  | 192 | 	$sortie = ob_get_contents();
 | 
        
           |  |  | 193 | 	// Arrête et détruit le buffer
 | 
        
           |  |  | 194 | 	ob_end_clean();
 | 
        
           |  |  | 195 |   | 
        
           |  |  | 196 | 	//+----------------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 197 | 	// Sortie
 | 
        
           |  |  | 198 |     return $sortie;
 | 
        
           |  |  | 199 | }
 | 
        
           |  |  | 200 |   | 
        
           |  |  | 201 | // +------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 202 | // |                                            LISTE DES FONCTIONS                                       |
 | 
        
           |  |  | 203 | // +------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 204 |   | 
        
           |  |  | 205 |   | 
        
           |  |  | 206 | /* +--Fin du code ----------------------------------------------------------------------------------------+
 | 
        
           |  |  | 207 | *
 | 
        
           |  |  | 208 | * $Log$
 | 
        
           |  |  | 209 | *
 | 
        
           |  |  | 210 | * +-- Fin du code ----------------------------------------------------------------------------------------+
 | 
        
           |  |  | 211 | */
 | 
        
           |  |  | 212 | ?>
 |