Subversion Repositories Sites.tela-botanica.org

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
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
?>