Subversion Repositories eFlore/Applications.cel

Rev

Rev 2203 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2203 Rev 2218
1
<?php
1
<?php
2
/**
2
/**
3
 * Widget fournissant des stats graphiques du CEL.
3
 * Widget fournissant des stats graphiques du CEL.
4
 * Encodage en entrée : utf8
4
 * Encodage en entrée : utf8
5
 * Encodage en sortie : utf8
5
 * Encodage en sortie : utf8
6
 *
6
 *
7
 * @author Jean-Pascal MILCENT <jpm@clapas.org>
7
 * @author Jean-Pascal MILCENT <jpm@clapas.org>
8
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
8
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
9
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
9
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
10
 * @version $Id$
10
 * @version $Id$
11
 * @copyright © 2010, Jean-Pascal MILCENT
11
 * @copyright © 2010, Jean-Pascal MILCENT
12
 */
12
 */
13
class Stats extends WidgetCommun {
13
class Stats extends WidgetCommun {
14
	const PAGE_DEFAUT = 'defaut';
14
	const PAGE_DEFAUT = 'defaut';
15
	const MODE_DEFAUT = 'defaut';
15
	const MODE_DEFAUT = 'defaut';
16
	const MODE_UTILISATEUR = 'utilisateur';
16
	const MODE_UTILISATEUR = 'utilisateur';
17
	private $page;
17
	private $page;
18
	private $mode;
18
	private $mode;
19
	
19
	
20
	/**
20
	/**
21
	 * Méthode appelée avec une requête de type GET.
21
	 * Méthode appelée avec une requête de type GET.
22
	 */
22
	 */
23
	public function executer() {
23
	public function executer() {
24
		$retour = null;
24
		$retour = null;
25
		
25
		
26
		extract($this->parametres);
26
		extract($this->parametres);
27
		$this->mode = (isset($mode)) ? $mode : self::MODE_DEFAUT;
27
		$this->mode = (isset($mode)) ? $mode : self::MODE_DEFAUT;
28
		$this->page = (isset($page)) ? $page : self::PAGE_DEFAUT;
28
		$this->page = (isset($page)) ? $page : self::PAGE_DEFAUT;
29
		
29
		
30
		$methode = $this->traiterNomMethodeExecuter($this->page);
30
		$methode = $this->traiterNomMethodeExecuter($this->page);
31
		if (method_exists($this, $methode)) {
31
		if (method_exists($this, $methode)) {
32
			$retour = $this->$methode();
32
			$retour = $this->$methode();
33
		} else {
33
		} else {
34
			$this->messages[] = "Le type de statistiques '$methode' n'est pas disponible.";
34
			$this->messages[] = "Le type de statistiques '$methode' n'est pas disponible.";
35
		}
35
		}
36
 
36
 
37
		if (is_null($retour)) {
37
		if (is_null($retour)) {
38
			$info = 'Un problème est survenu : '.print_r($this->messages, true);
38
			$info = 'Un problème est survenu : '.print_r($this->messages, true);
39
			$this->envoyer($info);
39
			$this->envoyer($info);
40
		} else if (is_array($retour) && isset($retour['squelette'])) { // compatibilité avec un retour de HTML direct
40
		} else if (is_array($retour) && isset($retour['squelette'])) { // compatibilité avec un retour de HTML direct
41
			$squelette = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR.$retour['squelette'].'.tpl.html';
41
			$squelette = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR.$retour['squelette'].'.tpl.html';
42
			$html = $this->traiterSquelettePhp($squelette, $retour['donnees']);
42
			$html = $this->traiterSquelettePhp($squelette, $retour['donnees']);
43
			$this->envoyer($html);
43
			$this->envoyer($html);
44
		} else {
44
		} else {
45
			$this->envoyer($retour);
45
			$this->envoyer($retour);
46
		}
46
		}
47
	}
47
	}
48
 
48
 
49
	/**
49
	/**
50
	 * Stats par défaut - exécute tout et met ça dans un squelette Bootstrap
50
	 * Stats par défaut - exécute tout et met ça dans un squelette Bootstrap
51
	 */
51
	 */
52
	public function executerDefaut() {
52
	public function executerDefaut() {
53
		$widget = null;
53
		$widget = null;
54
		$widget['squelette'] = 'stats_tout'; // squelette bootstrap unifié
54
		$widget['squelette'] = 'stats_tout'; // squelette bootstrap unifié
55
		$utilisateur_authentifie = false;
55
		$utilisateur_authentifie = false;
56
 
56
 
57
		switch ($this->mode) {
57
		switch ($this->mode) {
58
			case self::MODE_DEFAUT :
58
			case self::MODE_DEFAUT :
59
				break;
59
				break;
60
			case self::MODE_UTILISATEUR :
60
			case self::MODE_UTILISATEUR :
61
				$auth = $this->authentifierUtilisateur();
61
				$auth = $this->authentifierUtilisateur();
62
				if ($auth) {
62
				if ($auth) {
63
					$utilisateur_authentifie = true;
63
					$utilisateur_authentifie = true;
64
					$widget['donnees']['utilisateur'] = $this->getAuthIdentifiant();
64
					$widget['donnees']['utilisateur'] = $this->getAuthIdentifiant();
65
					$widget['donnees']['utilisateur_nom_prenom'] = $this->recupererPrenomNomIdentifie();
65
					$widget['donnees']['utilisateur_nom_prenom'] = $this->recupererPrenomNomIdentifie();
66
				}
66
				}
67
				break;
67
				break;
68
			default :
68
			default :
69
				$this->messages[] = "Le mode '{$this->mode}' est inconnu.";
69
				$this->messages[] = "Le mode '{$this->mode}' est inconnu.";
70
		}
70
		}
71
		
71
		
72
		if (!is_null($widget)) {
72
		if (!is_null($widget)) {
73
			$widget['donnees']['url_css'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/stats/squelettes/css/stats_tout.css');
73
			$widget['donnees']['url_css'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/stats/squelettes/css/stats_tout.css');
74
			$widget['donnees']['url_js'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/stats/squelettes/js/defaut.js');
74
			$widget['donnees']['url_js'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/stats/squelettes/js/defaut.js');
-
 
75
			$widget['donnees']['url_script_navigation'] = sprintf($this->config['chemins']['baseURLRessources'], 'tb/reseau/navigation.js');
-
 
76
			
-
 
77
			$widget['donnees']['url_js_bootstrap'] = sprintf($this->config['chemins']['baseURLRessources'], 'bootstrap/3.1.0/js/bootstrap.min.js');
-
 
78
			$widget['donnees']['url_css_bootstrap'] = sprintf($this->config['chemins']['baseURLRessources'], 'bootstrap/3.1.0/css/bootstrap.min.css');
-
 
79
 
-
 
80
			$widget['donnees']['mode_serveur'] = $this->config['parametres']['modeServeur'];
75
			$widget['donnees']['url_image_chargement'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/stats/squelettes/img/chargement.gif');
81
			$widget['donnees']['url_image_chargement'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/stats/squelettes/img/chargement.gif');
76
			$widget['donnees']['url_widget'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'stats');
82
			$widget['donnees']['url_widget'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'stats');
77
			$widget['donnees']['url_service'] = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelStatistique');
83
			$widget['donnees']['url_service'] = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelStatistique');
78
			$widget['donnees']['filtres'] = $this->parametres;
84
			$widget['donnees']['filtres'] = $this->parametres;
79
			$widget['donnees']['utilisateur_authentifie'] = $utilisateur_authentifie;
85
			$widget['donnees']['utilisateur_authentifie'] = $utilisateur_authentifie;
80
		}
86
		}
81
		return $widget;
87
		return $widget;
82
	}
88
	}
83
 
89
 
84
	public function executerNombres() {
90
	public function executerNombres() {
85
		$widget = null;
91
		$widget = null;
86
		
92
		
87
		switch ($this->mode) {
93
		switch ($this->mode) {
88
			case self::MODE_DEFAUT :
94
			case self::MODE_DEFAUT :
89
				$widget['donnees'] = (array) $this->recupererStatsTxtNombres();
95
				$widget['donnees'] = (array) $this->recupererStatsTxtNombres();
90
				break;
96
				break;
91
			case self::MODE_UTILISATEUR :
97
			case self::MODE_UTILISATEUR :
92
				if ($this->authentifierUtilisateur()) {
98
				if ($this->authentifierUtilisateur()) {
93
					$widget['donnees'] = (array) $this->recupererStatsTxtNombres();
99
					$widget['donnees'] = (array) $this->recupererStatsTxtNombres();
94
					$widget['donnees']['utilisateur'] = $this->getAuthIdentifiant();
100
					$widget['donnees']['utilisateur'] = $this->getAuthIdentifiant();
95
					$widget['donnees']['utilisateur_nom_prenom'] = $this->recupererPrenomNomIdentifie();
101
					$widget['donnees']['utilisateur_nom_prenom'] = $this->recupererPrenomNomIdentifie();
96
				}
102
				}
97
				break;
103
				break;
98
			default:
104
			default:
99
				$this->messages[] = "Le mode '{$this->mode}' est inconnu.";
105
				$this->messages[] = "Le mode '{$this->mode}' est inconnu.";
100
		}
106
		}
101
		
107
		
102
		if (!is_null($widget)) {
108
		if (!is_null($widget)) {
103
			$widget['squelette'] = 'nombres';
109
			$widget['squelette'] = 'nombres';
104
			$widget['donnees']['filtres'] = $this->parametres;
110
			$widget['donnees']['filtres'] = $this->parametres;
105
		}
111
		}
106
		
112
		
107
		return $widget;
113
		return $widget;
108
	}
114
	}
109
	
115
	
110
	public function executerListeTaxonsNbrePhotos() {
116
	public function executerListeTaxonsNbrePhotos() {
111
		$widget = null;
117
		$widget = null;
112
		
118
		
113
		switch ($this->mode) {
119
		switch ($this->mode) {
114
			case self::MODE_DEFAUT :
120
			case self::MODE_DEFAUT :
115
				$widget['donnees']['taxons'] = $this->recupererStatsTxtListeTaxonsNbrePhotos();
121
				$widget['donnees']['taxons'] = $this->recupererStatsTxtListeTaxonsNbrePhotos();
116
				break;
122
				break;
117
			case self::MODE_UTILISATEUR :
123
			case self::MODE_UTILISATEUR :
118
				if ($this->authentifierUtilisateur()) {
124
				if ($this->authentifierUtilisateur()) {
119
					$widget['donnees']['taxons'] = $this->recupererStatsTxtListeTaxonsNbrePhotos();
125
					$widget['donnees']['taxons'] = $this->recupererStatsTxtListeTaxonsNbrePhotos();
120
					$widget['donnees']['utilisateur'] = $this->getAuthIdentifiant();
126
					$widget['donnees']['utilisateur'] = $this->getAuthIdentifiant();
121
					$widget['donnees']['utilisateur_nom_prenom'] = $this->recupererPrenomNomIdentifie();
127
					$widget['donnees']['utilisateur_nom_prenom'] = $this->recupererPrenomNomIdentifie();
122
				}
128
				}
123
				break;
129
				break;
124
			default:
130
			default:
125
				$this->messages[] = "Le mode '{$this->mode}' est inconnu.";
131
				$this->messages[] = "Le mode '{$this->mode}' est inconnu.";
126
		}
132
		}
127
		
133
		
128
		if (!is_null($widget)) {
134
		if (!is_null($widget)) {
129
			$widget['squelette'] = 'liste_taxons_nbre_photos';
135
			$widget['squelette'] = 'liste_taxons_nbre_photos';
130
			$widget['donnees']['filtres'] = $this->parametres;
136
			$widget['donnees']['filtres'] = $this->parametres;
131
		}
137
		}
132
 
138
 
133
		return $widget;
139
		return $widget;
134
	}
140
	}
135
	
141
	
136
	public function executerListeUtilisateursNbrePhotos() {
142
	public function executerListeUtilisateursNbrePhotos() {
137
		$widget = null;
143
		$widget = null;
138
		$utilisateurs = $this->recupererStatsTxtListeUtilisateursNbrePhotos();
144
		$utilisateurs = $this->recupererStatsTxtListeUtilisateursNbrePhotos();
139
		if (isset($utilisateurs)) {
145
		if (isset($utilisateurs)) {
140
			$noms = $this->recupererUtilisateursNomPrenom(array_keys($utilisateurs));
146
			$noms = $this->recupererUtilisateursNomPrenom(array_keys($utilisateurs));
141
			foreach ($utilisateurs as $courriel => $infos) {
147
			foreach ($utilisateurs as $courriel => $infos) {
142
				if (array_key_exists($courriel, $noms)) {
148
				if (array_key_exists($courriel, $noms)) {
143
					$nom_infos = (array) $noms[$courriel];
149
					$nom_infos = (array) $noms[$courriel];
144
					$nom_fmt = $nom_infos['prenom'].' '.$nom_infos['nom'];
150
					$nom_fmt = $nom_infos['prenom'].' '.$nom_infos['nom'];
145
					$widget['donnees']['utilisateurs'][$nom_fmt] = $infos;
151
					$widget['donnees']['utilisateurs'][$nom_fmt] = $infos;
146
				}
152
				}
147
			}
153
			}
148
		}
154
		}
149
		$widget['donnees']['filtres'] = $this->parametres;
155
		$widget['donnees']['filtres'] = $this->parametres;
150
		$widget['squelette'] = 'liste_utilisateurs_nbre_photos';
156
		$widget['squelette'] = 'liste_utilisateurs_nbre_photos';
151
		return $widget;
157
		return $widget;
152
	}
158
	}
153
 
159
 
154
	/**
160
	/**
155
	 * Aligne les contributeurs contre un mur et... euh... hum;
161
	 * Aligne les contributeurs contre un mur et... euh... hum;
156
	 * Appelle le service pour obtenir les n principaux contributeurs depuis x jours,
162
	 * Appelle le service pour obtenir les n principaux contributeurs depuis x jours,
157
	 * en termes d'observations ajoutées, d'images ajoutées, ou les deux
163
	 * en termes d'observations ajoutées, d'images ajoutées, ou les deux
158
	 * Paramètres : "jours" (int), "nombre" (int), "critere" ("obs" ou "img" ou "")
164
	 * Paramètres : "jours" (int), "nombre" (int), "critere" ("obs" ou "img" ou "")
159
	 * @return array
165
	 * @return array
160
	 */
166
	 */
161
	public function executerGrandsContributeurs() {
167
	public function executerGrandsContributeurs() {
162
		$widget = null;
168
		$widget = null;
163
		$widget['donnees'] = (array) $this->recupererStatsTxtGrandsContributeurs();
169
		$widget['donnees'] = (array) $this->recupererStatsTxtGrandsContributeurs();
164
		if (!is_null($widget)) {
170
		if (!is_null($widget)) {
165
			$widget['squelette'] = 'grands_contributeurs';
171
			$widget['squelette'] = 'grands_contributeurs';
166
			$widget['donnees']['url_service'] = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelStatistique');
172
			$widget['donnees']['url_service'] = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelStatistique');
167
		}
173
		}
168
		return $widget;
174
		return $widget;
169
	}
175
	}
170
 
176
 
171
	public function executerObservationsActivite() {
177
	public function executerObservationsActivite() {
172
		$html = "";
178
		$html = "";
173
		$html .= '<div class="flottant-gauche">'
179
		$html .= '<div class="flottant-gauche">'
174
				.'<h2>Observations - Activité</h2>';
180
				.'<h2>Observations - Activité</h2>';
175
 
181
 
176
		$url_service = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelStatistique');
182
		$url_service = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelStatistique');
177
		$i = 1;
183
		$i = 1;
178
		switch ($this->mode) {
184
		switch ($this->mode) {
179
			case self::MODE_DEFAUT :
185
			case self::MODE_DEFAUT :
180
				$html .= '<img class="stats" src="' . $url_service . '/UtilisationJournaliere/' . date("Y-m-d", (time() - 86400))
186
				$html .= '<img class="stats" src="' . $url_service . '/UtilisationJournaliere/' . date("Y-m-d", (time() - 86400))
181
					. '?serveur=' . $i++ . '" alt="Intensité d\'utilisation pour la journée d\'hier" />'
187
					. '?serveur=' . $i++ . '" alt="Intensité d\'utilisation pour la journée d\'hier" />'
182
					.'<img class="stats" src="' . $url_service . '/UtilisationJournaliere'
188
					.'<img class="stats" src="' . $url_service . '/UtilisationJournaliere'
183
					. '?serveur=' . $i++ . '" alt="Intensité d\'utilisation pour aujourd\'hui" />';
189
					. '?serveur=' . $i++ . '" alt="Intensité d\'utilisation pour aujourd\'hui" />';
184
			break;
190
			break;
185
			case self::MODE_UTILISATEUR :
191
			case self::MODE_UTILISATEUR :
186
				if ($this->authentifierUtilisateur()) {
192
				if ($this->authentifierUtilisateur()) {
187
					$utilisateur = $this->getAuthIdentifiant();
193
					$utilisateur = $this->getAuthIdentifiant();
188
					$utilisateur_nom_prenom = $this->recupererPrenomNomIdentifie();
194
					$utilisateur_nom_prenom = $this->recupererPrenomNomIdentifie();
189
					$html .= '<h4>utilisateur: ' . $utilisateur_nom_prenom . '</h4>';
195
					$html .= '<h4>utilisateur: ' . $utilisateur_nom_prenom . '</h4>';
190
					$html .= '<img class="stats" src="' . $url_service . '/UtilisationJournaliere/' . date("Y-m-d", (time() - 86400))
196
					$html .= '<img class="stats" src="' . $url_service . '/UtilisationJournaliere/' . date("Y-m-d", (time() - 86400))
191
						. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Intensité d\'utilisation pour la journée d\'hier" />'
197
						. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Intensité d\'utilisation pour la journée d\'hier" />'
192
						.'<img class="stats" src="' . $url_service . '/UtilisationJournaliere'
198
						.'<img class="stats" src="' . $url_service . '/UtilisationJournaliere'
193
						. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Intensité d\'utilisation pour aujourd\'hui" />';
199
						. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Intensité d\'utilisation pour aujourd\'hui" />';
194
				} else {
200
				} else {
195
					$html .= "Impossible d'authentifier l'utilisateur";
201
					$html .= "Impossible d'authentifier l'utilisateur";
196
				}
202
				}
197
			break;
203
			break;
198
			default:
204
			default:
199
				$this->messages[] = "Le mode '{$this->mode}' est inconnu.";
205
				$this->messages[] = "Le mode '{$this->mode}' est inconnu.";
200
		}
206
		}
201
 
207
 
202
		$html .= '</div>';
208
		$html .= '</div>';
203
		return $html;
209
		return $html;
204
	}
210
	}
205
 
211
 
206
	public function executerObservationsDonnees() {
212
	public function executerObservationsDonnees() {
207
		$html = "";
213
		$html = "";
208
		$html .= '<div class="flottant-gauche">'
214
		$html .= '<div class="flottant-gauche">'
209
				.'<h2>Observations - Activité</h2>';
215
				.'<h2>Observations - Activité</h2>';
210
		
216
		
211
		$url_service = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelStatistique');
217
		$url_service = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelStatistique');
212
		$i = 1;
218
		$i = 1;
213
		switch ($this->mode) {
219
		switch ($this->mode) {
214
			case self::MODE_DEFAUT :
220
			case self::MODE_DEFAUT :
215
				$html .= '<img class="stats" src="' . $url_service . '/NbreObsPublicVsPrivee'
221
				$html .= '<img class="stats" src="' . $url_service . '/NbreObsPublicVsPrivee'
216
					. '?serveur=' . $i++ . '" alt="Nombre d\'observations publiques versus privées" />'
222
					. '?serveur=' . $i++ . '" alt="Nombre d\'observations publiques versus privées" />'
217
					.'<img class="stats" src="' . $url_service . '/NbreObsIdVsTest'
223
					.'<img class="stats" src="' . $url_service . '/NbreObsIdVsTest'
218
					. '?serveur=' . $i++ . '" alt="Nombre d\'observations identifiées versus tests" />'
224
					. '?serveur=' . $i++ . '" alt="Nombre d\'observations identifiées versus tests" />'
219
					.'<img class="stats" src="' . $url_service . '/NbreObsDetermineeVsInconnue'
225
					.'<img class="stats" src="' . $url_service . '/NbreObsDetermineeVsInconnue'
220
					. '?serveur=' . $i++ . '" alt="Nombre d\'observations déterminées versus inconnues" />'
226
					. '?serveur=' . $i++ . '" alt="Nombre d\'observations déterminées versus inconnues" />'
221
					. '<br/>'
227
					. '<br/>'
222
					.'<img class="stats" src="' . $url_service . '/NbreObsAvecIndicationGeo'
228
					.'<img class="stats" src="' . $url_service . '/NbreObsAvecIndicationGeo'
223
					. '?serveur=' . $i++ . '" alt="Nombre d\'observations avec indications géographiques" />';
229
					. '?serveur=' . $i++ . '" alt="Nombre d\'observations avec indications géographiques" />';
224
			break;
230
			break;
225
			case self::MODE_UTILISATEUR :
231
			case self::MODE_UTILISATEUR :
226
				if ($this->authentifierUtilisateur()) {
232
				if ($this->authentifierUtilisateur()) {
227
					$utilisateur = $this->getAuthIdentifiant();
233
					$utilisateur = $this->getAuthIdentifiant();
228
					$utilisateur_nom_prenom = $this->recupererPrenomNomIdentifie();
234
					$utilisateur_nom_prenom = $this->recupererPrenomNomIdentifie();
229
					$html .= '<h4>utilisateur: ' . $utilisateur_nom_prenom . '</h4>';
235
					$html .= '<h4>utilisateur: ' . $utilisateur_nom_prenom . '</h4>';
230
					$html .= '<img class="stats" src="' . $url_service . '/NbreObsPublicVsPrivee'
236
					$html .= '<img class="stats" src="' . $url_service . '/NbreObsPublicVsPrivee'
231
						. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Nombre d\'observations publiques versus privées" />'
237
						. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Nombre d\'observations publiques versus privées" />'
232
						.'<img class="stats" src="' . $url_service . '/NbreObsIdVsTest'
238
						.'<img class="stats" src="' . $url_service . '/NbreObsIdVsTest'
233
						. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Nombre d\'observations identifiées versus tests" />'
239
						. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Nombre d\'observations identifiées versus tests" />'
234
						.'<img class="stats" src="' . $url_service . '/NbreObsDetermineeVsInconnue'
240
						.'<img class="stats" src="' . $url_service . '/NbreObsDetermineeVsInconnue'
235
						. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Nombre d\'observations déterminées versus inconnues" />'
241
						. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Nombre d\'observations déterminées versus inconnues" />'
236
						. '<br/>'
242
						. '<br/>'
237
						.'<img class="stats" src="' . $url_service . '/NbreObsAvecIndicationGeo'
243
						.'<img class="stats" src="' . $url_service . '/NbreObsAvecIndicationGeo'
238
						. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Nombre d\'observations avec indications géographiques" />';
244
						. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Nombre d\'observations avec indications géographiques" />';
239
				} else {
245
				} else {
240
					$html .= "Impossible d'authentifier l'utilisateur";
246
					$html .= "Impossible d'authentifier l'utilisateur";
241
				}
247
				}
242
			break;
248
			break;
243
			default:
249
			default:
244
				$this->messages[] = "Le mode '{$this->mode}' est inconnu.";
250
				$this->messages[] = "Le mode '{$this->mode}' est inconnu.";
245
		}
251
		}
246
		
252
		
247
		$html .= '</div>';
253
		$html .= '</div>';
248
		return $html;
254
		return $html;
249
	}
255
	}
250
 
256
 
251
	public function executerObservationsEvolution() {
257
	public function executerObservationsEvolution() {
252
		$html = "";
258
		$html = "";
253
		$html .= '<div class="flottant-gauche">'
259
		$html .= '<div class="flottant-gauche">'
254
				.'<h2>Observations - Activité</h2>';
260
				.'<h2>Observations - Activité</h2>';
255
		
261
		
256
		$url_service = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelStatistique');
262
		$url_service = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelStatistique');
257
		$i = 1;
263
		$i = 1;
258
		switch ($this->mode) {
264
		switch ($this->mode) {
259
			case self::MODE_DEFAUT :
265
			case self::MODE_DEFAUT :
260
				$html .= '<img class="stats" src="' . $url_service . '/EvolObsParMoisGlissant'
266
				$html .= '<img class="stats" src="' . $url_service . '/EvolObsParMoisGlissant'
261
					. '?serveur=' . $i++ . '" alt="Évolutions des observation sur le dernier mois glissant" />'
267
					. '?serveur=' . $i++ . '" alt="Évolutions des observation sur le dernier mois glissant" />'
262
					.'<img class="stats" src="' . $url_service . '/EvolObsParMois'
268
					.'<img class="stats" src="' . $url_service . '/EvolObsParMois'
263
					. '?serveur=' . $i++ . '" alt="Évolutions des observation par mois" />'
269
					. '?serveur=' . $i++ . '" alt="Évolutions des observation par mois" />'
264
					. '<br/>'
270
					. '<br/>'
265
					.'<img class="stats" src="' . $url_service . '/EvolObsParAn'
271
					.'<img class="stats" src="' . $url_service . '/EvolObsParAn'
266
					. '?serveur=' . $i++ . '" alt="Évolutions des observation par an" />';
272
					. '?serveur=' . $i++ . '" alt="Évolutions des observation par an" />';
267
			break;
273
			break;
268
			case self::MODE_UTILISATEUR :
274
			case self::MODE_UTILISATEUR :
269
				if ($this->authentifierUtilisateur()) {
275
				if ($this->authentifierUtilisateur()) {
270
					$utilisateur = $this->getAuthIdentifiant();
276
					$utilisateur = $this->getAuthIdentifiant();
271
					$utilisateur_nom_prenom = $this->recupererPrenomNomIdentifie();
277
					$utilisateur_nom_prenom = $this->recupererPrenomNomIdentifie();
272
					$html .= '<h4>utilisateur: ' . $utilisateur_nom_prenom . '</h4>';
278
					$html .= '<h4>utilisateur: ' . $utilisateur_nom_prenom . '</h4>';
273
					$html .= '<img class="stats" src="' . $url_service . '/EvolObsParMoisGlissant'
279
					$html .= '<img class="stats" src="' . $url_service . '/EvolObsParMoisGlissant'
274
						. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Évolutions des observation sur le dernier mois glissant" />'
280
						. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Évolutions des observation sur le dernier mois glissant" />'
275
						.'<img class="stats" src="' . $url_service . '/EvolObsParMois'
281
						.'<img class="stats" src="' . $url_service . '/EvolObsParMois'
276
						. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Évolutions des observation par mois" />'
282
						. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Évolutions des observation par mois" />'
277
						. '<br/>'
283
						. '<br/>'
278
						.'<img class="stats" src="' . $url_service . '/EvolObsParAn'
284
						.'<img class="stats" src="' . $url_service . '/EvolObsParAn'
279
						. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Évolutions des observation par an" />';
285
						. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Évolutions des observation par an" />';
280
				} else {
286
				} else {
281
					$html .= "Impossible d'authentifier l'utilisateur";
287
					$html .= "Impossible d'authentifier l'utilisateur";
282
				}
288
				}
283
			break;
289
			break;
284
			default:
290
			default:
285
				$this->messages[] = "Le mode '{$this->mode}' est inconnu.";
291
				$this->messages[] = "Le mode '{$this->mode}' est inconnu.";
286
		}
292
		}
287
		
293
		
288
		$html .= '</div>';
294
		$html .= '</div>';
289
		return $html;
295
		return $html;
290
	}
296
	}
291
 
297
 
292
	public function executerUtilisateurs() {
298
	public function executerUtilisateurs() {
293
		$html = "";
299
		$html = "";
294
		$html .= '<div class="flottant-gauche">'
300
		$html .= '<div class="flottant-gauche">'
295
				.'<h2>Observations - Activité</h2>';
301
				.'<h2>Observations - Activité</h2>';
296
 
302
 
297
		$url_service = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelStatistique');
303
		$url_service = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelStatistique');
298
		$i = 1;
304
		$i = 1;
299
		switch ($this->mode) {
305
		switch ($this->mode) {
300
			case self::MODE_DEFAUT :
306
			case self::MODE_DEFAUT :
301
				$html .= '<img class="stats" src="' . $url_service . '/NuagePointsObsParHeureEtJourSemaine'
307
				$html .= '<img class="stats" src="' . $url_service . '/NuagePointsObsParHeureEtJourSemaine'
302
					. '?serveur=' . $i++ . '" alt="Nuage de points d\'observation par heure et jour de la semaine" />'
308
					. '?serveur=' . $i++ . '" alt="Nuage de points d\'observation par heure et jour de la semaine" />'
303
					. '<img class="stats" src="' . $url_service . '/NbreObsParUtilisateur'
309
					. '<img class="stats" src="' . $url_service . '/NbreObsParUtilisateur'
304
					. '?serveur=' . $i++ . '" alt="Nombre d\'observations par utilisateur" />'
310
					. '?serveur=' . $i++ . '" alt="Nombre d\'observations par utilisateur" />'
305
					. '<img class="stats" src="' . $url_service . '/NbreObsParUtilisateurEtTest'
311
					. '<img class="stats" src="' . $url_service . '/NbreObsParUtilisateurEtTest'
306
					. '?serveur=' . $i++ . '" alt="Nombre d\'observations par utilisateur et test" />'
312
					. '?serveur=' . $i++ . '" alt="Nombre d\'observations par utilisateur et test" />'
307
					. '<img class="stats" src="' . $url_service . '/EvolUtilisateurParMois'
313
					. '<img class="stats" src="' . $url_service . '/EvolUtilisateurParMois'
308
					. '?serveur=' . $i++ . '" alt="Évolution des utilisateurs par mois" />'
314
					. '?serveur=' . $i++ . '" alt="Évolution des utilisateurs par mois" />'
309
					. '<img class="stats" src="' . $url_service . '/NuagePointsObsAnciennete'
315
					. '<img class="stats" src="' . $url_service . '/NuagePointsObsAnciennete'
310
					. '?serveur=' . $i++ . '" alt="Répartition des utilisateurs en fonction du nombre d\'observations et de l\'ancienneté" />';
316
					. '?serveur=' . $i++ . '" alt="Répartition des utilisateurs en fonction du nombre d\'observations et de l\'ancienneté" />';
311
			break;
317
			break;
312
			case self::MODE_UTILISATEUR :
318
			case self::MODE_UTILISATEUR :
313
				if ($this->authentifierUtilisateur()) {
319
				if ($this->authentifierUtilisateur()) {
314
					$utilisateur = $this->getAuthIdentifiant();
320
					$utilisateur = $this->getAuthIdentifiant();
315
					$html .= '<img class="stats" src="' . $url_service . '/NuagePointsObsParHeureEtJourSemaine'
321
					$html .= '<img class="stats" src="' . $url_service . '/NuagePointsObsParHeureEtJourSemaine'
316
						. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Nuage de points d\'observation par heure et jour de la semaine" />';
322
						. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Nuage de points d\'observation par heure et jour de la semaine" />';
317
				} else {
323
				} else {
318
					$html .= "Impossible d'authentifier l'utilisateur";
324
					$html .= "Impossible d'authentifier l'utilisateur";
319
				}
325
				}
320
			break;
326
			break;
321
			default:
327
			default:
322
				$this->messages[] = "Le mode '{$this->mode}' est inconnu.";
328
				$this->messages[] = "Le mode '{$this->mode}' est inconnu.";
323
		}
329
		}
324
 
330
 
325
		$html .= '</div>';
331
		$html .= '</div>';
326
		return $html;
332
		return $html;
327
	}
333
	}
328
 
334
 
329
	public function executerImages() {
335
	public function executerImages() {
330
		$html = "";
336
		$html = "";
331
		$html .= '<div class="flottant-gauche">'
337
		$html .= '<div class="flottant-gauche">'
332
				.'<h2>Observations - Activité</h2>';
338
				.'<h2>Observations - Activité</h2>';
333
		
339
		
334
		$url_service = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelStatistique');
340
		$url_service = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelStatistique');
335
		$i = 1;
341
		$i = 1;
336
		switch ($this->mode) {
342
		switch ($this->mode) {
337
			case self::MODE_DEFAUT :
343
			case self::MODE_DEFAUT :
338
				$html .= '<img class="stats" src="' . $url_service . '/EvolImgParMois'
344
				$html .= '<img class="stats" src="' . $url_service . '/EvolImgParMois'
339
						. '?serveur=' . $i++ . '" alt="Évolutions du dépôt d\'images par mois" />'
345
						. '?serveur=' . $i++ . '" alt="Évolutions du dépôt d\'images par mois" />'
340
						. '<img class="stats" src="' . $url_service . '/EvolImgLieesParMois'
346
						. '<img class="stats" src="' . $url_service . '/EvolImgLieesParMois'
341
						. '?serveur=' . $i++ . '" alt="Évolutions des images liées aux observations par mois" />';
347
						. '?serveur=' . $i++ . '" alt="Évolutions des images liées aux observations par mois" />';
342
						break;
348
						break;
343
			case self::MODE_UTILISATEUR :
349
			case self::MODE_UTILISATEUR :
344
				if ($this->authentifierUtilisateur()) {
350
				if ($this->authentifierUtilisateur()) {
345
					$utilisateur = $this->getAuthIdentifiant();
351
					$utilisateur = $this->getAuthIdentifiant();
346
					$html .= '<img class="stats" src="' . $url_service . '/EvolImgParMois'
352
					$html .= '<img class="stats" src="' . $url_service . '/EvolImgParMois'
347
							. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Évolutions du dépôt d\'images par mois" />'
353
							. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Évolutions du dépôt d\'images par mois" />'
348
							. '<img class="stats" src="' . $url_service . '/EvolImgLieesParMois'
354
							. '<img class="stats" src="' . $url_service . '/EvolImgLieesParMois'
349
							. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Évolutions des images liées aux observations par mois" />';
355
							. '?serveur=' . $i++ . '&utilisateur=' . $utilisateur . '" alt="Évolutions des images liées aux observations par mois" />';
350
				} else {
356
				} else {
351
					$html .= "Impossible d'authentifier l'utilisateur";
357
					$html .= "Impossible d'authentifier l'utilisateur";
352
				}
358
				}
353
				break;
359
				break;
354
			default:
360
			default:
355
				$this->messages[] = "Le mode '{$this->mode}' est inconnu.";
361
				$this->messages[] = "Le mode '{$this->mode}' est inconnu.";
356
		}
362
		}
357
		
363
		
358
		$html .= '</div>';
364
		$html .= '</div>';
359
		return $html;
365
		return $html;
360
	}
366
	}
361
 
367
 
362
	private function recupererPrenomNomIdentifie() {
368
	private function recupererPrenomNomIdentifie() {
363
		$nom = '';
369
		$nom = '';
364
		if ($this->getAuthIdentifiant() != null) {
370
		if ($this->getAuthIdentifiant() != null) {
365
			$infos_utilisateur = $this->recupererUtilisateursNomPrenom(array($this->getAuthIdentifiant()));
371
			$infos_utilisateur = $this->recupererUtilisateursNomPrenom(array($this->getAuthIdentifiant()));
366
			if (array_key_exists($this->getAuthIdentifiant(), $infos_utilisateur)) {
372
			if (array_key_exists($this->getAuthIdentifiant(), $infos_utilisateur)) {
367
				$utilisateur = (array) $infos_utilisateur[$this->getAuthIdentifiant()];
373
				$utilisateur = (array) $infos_utilisateur[$this->getAuthIdentifiant()];
368
				$nom = $utilisateur['prenom'].' '.$utilisateur['nom'];
374
				$nom = $utilisateur['prenom'].' '.$utilisateur['nom'];
369
			} else {
375
			} else {
370
				$nom = $this->getAuthIdentifiant();
376
				$nom = $this->getAuthIdentifiant();
371
			}
377
			}
372
		}
378
		}
373
		return $nom;
379
		return $nom;
374
	}
380
	}
375
	
381
	
376
	private function recupererStatsTxtNombres() {
382
	private function recupererStatsTxtNombres() {
377
		// Récupération des données au format Json
383
		// Récupération des données au format Json
378
		$service = "CelStatistiqueTxt/Nombres";
384
		$service = "CelStatistiqueTxt/Nombres";
379
		
385
		
380
		$parametres = array();
386
		$parametres = array();
381
		if (isset($this->parametres['mode']) && $this->parametres['mode'] == self::MODE_UTILISATEUR && $this->getAuthIdentifiant() != null) {
387
		if (isset($this->parametres['mode']) && $this->parametres['mode'] == self::MODE_UTILISATEUR && $this->getAuthIdentifiant() != null) {
382
			$parametres[] = 'utilisateur='.$this->getAuthIdentifiant();
388
			$parametres[] = 'utilisateur='.$this->getAuthIdentifiant();
383
		}
389
		}
384
		if (isset($this->parametres['num_taxon'])) {
390
		if (isset($this->parametres['num_taxon'])) {
385
			$parametres[] = 'num_taxon='.$this->parametres['num_taxon'];
391
			$parametres[] = 'num_taxon='.$this->parametres['num_taxon'];
386
		}
392
		}
387
		if (isset($this->parametres['taxon'])) {
393
		if (isset($this->parametres['taxon'])) {
388
			$parametres[] = 'taxon='.$this->parametres['taxon'];
394
			$parametres[] = 'taxon='.$this->parametres['taxon'];
389
		}
395
		}
390
		$service .= (count($parametres) > 0) ? '?'.implode('&', $parametres) : '';
396
		$service .= (count($parametres) > 0) ? '?'.implode('&', $parametres) : '';
391
		
397
		
392
		$url = sprintf($this->config['chemins']['baseURLServicesCelTpl'], $service);
398
		$url = sprintf($this->config['chemins']['baseURLServicesCelTpl'], $service);
393
		$json = $this->getDao()->consulter($url);
399
		$json = $this->getDao()->consulter($url);
394
		return (array) json_decode($json);
400
		return (array) json_decode($json);
395
	}
401
	}
396
	
402
	
397
	private function recupererStatsTxtListeTaxonsNbrePhotos() {
403
	private function recupererStatsTxtListeTaxonsNbrePhotos() {
398
		// Récupération des données au format Json
404
		// Récupération des données au format Json
399
		$service = "CelStatistiqueTxt/ListeTaxonsNbrePhotos";
405
		$service = "CelStatistiqueTxt/ListeTaxonsNbrePhotos";
400
		
406
		
401
		$parametres = array();
407
		$parametres = array();
402
		if (isset($this->parametres['mode']) && $this->parametres['mode'] == self::MODE_UTILISATEUR && $this->getAuthIdentifiant() != null) {
408
		if (isset($this->parametres['mode']) && $this->parametres['mode'] == self::MODE_UTILISATEUR && $this->getAuthIdentifiant() != null) {
403
			$parametres[] = 'utilisateur='.$this->getAuthIdentifiant();
409
			$parametres[] = 'utilisateur='.$this->getAuthIdentifiant();
404
		}
410
		}
405
		if (isset($this->parametres['num_taxon'])) {
411
		if (isset($this->parametres['num_taxon'])) {
406
			$parametres[] = 'num_taxon='.$this->parametres['num_taxon'];
412
			$parametres[] = 'num_taxon='.$this->parametres['num_taxon'];
407
		}
413
		}
408
		if (isset($this->parametres['taxon'])) {
414
		if (isset($this->parametres['taxon'])) {
409
			$parametres[] = 'taxon='.$this->parametres['taxon'];
415
			$parametres[] = 'taxon='.$this->parametres['taxon'];
410
		}
416
		}
411
		if (isset($this->parametres['start'])) {
417
		if (isset($this->parametres['start'])) {
412
			$parametres[] = 'start='.$this->parametres['start'];
418
			$parametres[] = 'start='.$this->parametres['start'];
413
		}
419
		}
414
		if (isset($this->parametres['limit'])) {
420
		if (isset($this->parametres['limit'])) {
415
			$parametres[] = 'limit='.$this->parametres['limit'];
421
			$parametres[] = 'limit='.$this->parametres['limit'];
416
		}
422
		}
417
		$service .= (count($parametres) > 0) ? '?'.implode('&', $parametres) : '';
423
		$service .= (count($parametres) > 0) ? '?'.implode('&', $parametres) : '';
418
		
424
		
419
		$url = sprintf($this->config['chemins']['baseURLServicesCelTpl'], $service);
425
		$url = sprintf($this->config['chemins']['baseURLServicesCelTpl'], $service);
420
		$json = $this->getDao()->consulter($url);
426
		$json = $this->getDao()->consulter($url);
421
		return (array) json_decode($json);
427
		return (array) json_decode($json);
422
	}
428
	}
423
	
429
	
424
	private function recupererStatsTxtListeUtilisateursNbrePhotos() {
430
	private function recupererStatsTxtListeUtilisateursNbrePhotos() {
425
		// Récupération des données au format Json
431
		// Récupération des données au format Json
426
		$service = "CelStatistiqueTxt/ListeUtilisateursNbrePhotos";
432
		$service = "CelStatistiqueTxt/ListeUtilisateursNbrePhotos";
427
		
433
		
428
		if (isset($this->parametres['mode']) && $this->parametres['mode'] == self::MODE_UTILISATEUR && $this->getAuthIdentifiant() != null) {
434
		if (isset($this->parametres['mode']) && $this->parametres['mode'] == self::MODE_UTILISATEUR && $this->getAuthIdentifiant() != null) {
429
			$this->getDao()->ajouterParametre('utilisateur', $this->getAuthIdentifiant());
435
			$this->getDao()->ajouterParametre('utilisateur', $this->getAuthIdentifiant());
430
		}
436
		}
431
		if (isset($this->parametres['num_taxon'])) {
437
		if (isset($this->parametres['num_taxon'])) {
432
			$this->getDao()->ajouterParametre('num_taxon', $this->parametres['num_taxon']);
438
			$this->getDao()->ajouterParametre('num_taxon', $this->parametres['num_taxon']);
433
		}
439
		}
434
		if (isset($this->parametres['taxon'])) {
440
		if (isset($this->parametres['taxon'])) {
435
			$this->getDao()->ajouterParametre('taxon', $this->parametres['taxon']);
441
			$this->getDao()->ajouterParametre('taxon', $this->parametres['taxon']);
436
		}
442
		}
437
		if (isset($this->parametres['start'])) {
443
		if (isset($this->parametres['start'])) {
438
			$this->getDao()->ajouterParametre('start', $this->parametres['start']);
444
			$this->getDao()->ajouterParametre('start', $this->parametres['start']);
439
		}
445
		}
440
		if (isset($this->parametres['limit'])) {
446
		if (isset($this->parametres['limit'])) {
441
			$this->getDao()->ajouterParametre('limit', $this->parametres['limit']);
447
			$this->getDao()->ajouterParametre('limit', $this->parametres['limit']);
442
		}
448
		}
443
		if (isset($this->parametres['tag'])) {
449
		if (isset($this->parametres['tag'])) {
444
			$this->getDao()->ajouterParametre('tag', $this->parametres['tag']);
450
			$this->getDao()->ajouterParametre('tag', $this->parametres['tag']);
445
		}
451
		}
446
		
452
		
447
		$url = sprintf($this->config['chemins']['baseURLServicesCelTpl'], $service);
453
		$url = sprintf($this->config['chemins']['baseURLServicesCelTpl'], $service);
448
		
454
		
449
		$json = $this->getDao()->consulter($url);
455
		$json = $this->getDao()->consulter($url);
450
		return (array) json_decode($json);
456
		return (array) json_decode($json);
451
	}
457
	}
452
 
458
 
453
	private function recupererStatsTxtGrandsContributeurs() {
459
	private function recupererStatsTxtGrandsContributeurs() {
454
		// Récupération des données au format Json
460
		// Récupération des données au format Json
455
		$service = "CelStatistiqueTxt/GrandsContributeurs";
461
		$service = "CelStatistiqueTxt/GrandsContributeurs";
456
 
462
 
457
		if (isset($this->parametres['nombre'])) {
463
		if (isset($this->parametres['nombre'])) {
458
			$this->getDao()->ajouterParametre('nombre', $this->parametres['nombre']);
464
			$this->getDao()->ajouterParametre('nombre', $this->parametres['nombre']);
459
		}
465
		}
460
		if (isset($this->parametres['jours'])) {
466
		if (isset($this->parametres['jours'])) {
461
			$this->getDao()->ajouterParametre('jours', $this->parametres['jours']);
467
			$this->getDao()->ajouterParametre('jours', $this->parametres['jours']);
462
		}
468
		}
463
		if (isset($this->parametres['critere'])) {
469
		if (isset($this->parametres['critere'])) {
464
			$this->getDao()->ajouterParametre('critere', $this->parametres['critere']);
470
			$this->getDao()->ajouterParametre('critere', $this->parametres['critere']);
465
		}
471
		}
466
		
472
		
467
		$url = sprintf($this->config['chemins']['baseURLServicesCelTpl'], $service);
473
		$url = sprintf($this->config['chemins']['baseURLServicesCelTpl'], $service);
468
		$json = $this->getDao()->consulter($url);
474
		$json = $this->getDao()->consulter($url);
469
 
475
 
470
		return (array) json_decode($json);
476
		return (array) json_decode($json);
471
	}
477
	}
472
}
478
}
473
?>
479
?>