Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 970 Rev 1359
1
<?php
1
<?php
2
/**
2
/**
3
 * Service fournissant des urls vers des images de graphiques sur les statistiques de l'application CEL.
3
 * Service fournissant des urls vers des images de graphiques sur les statistiques de l'application 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
 * Cas d'utilisation :
7
 * Cas d'utilisation :
8
 * /CelStatistique/TypeDeGraph : retourne le graphique demandé
8
 * /CelStatistique/TypeDeGraph : retourne le graphique demandé
9
 * Paramêtres :
9
 * Paramêtres :
10
 * serveur=[0-9] : retourne le graphique demandé sur le serveur numéro 0 à 9 (voir http://code.google.com/intl/fr/apis/chart/docs/making_charts.html#enhancements )
10
 * serveur=[0-9] : retourne le graphique demandé sur le serveur numéro 0 à 9 (voir http://code.google.com/intl/fr/apis/chart/docs/making_charts.html#enhancements )
11
 *
11
 *
12
 * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
12
 * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
13
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
13
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
14
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
14
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
15
 * @version $Id$
15
 * @version $Id$
16
 * @copyright 2009
16
 * @copyright 2009
17
 */
17
 */
18
class CelStatistique extends Cel {
18
class CelStatistique extends Cel {
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 getElement($param) {
23
	public function getElement($param) {
24
		$graph = null;
24
		$graph = null;
25
		$serveur = '';
25
		$serveur = '';
26
 
26
 
27
		if (isset($param[0])) {
27
		if (isset($param[0])) {
28
			$graph_demande = array_shift($param);
28
			$graph_demande = array_shift($param);
29
			$methode = 'get'.$graph_demande;
29
			$methode = 'get'.$graph_demande;
30
			if (method_exists($this, $methode)) {
30
			if (method_exists($this, $methode)) {
31
				$graph = $this->$methode($param);
31
				$graph = $this->$methode($param);
32
			} else {
32
			} else {
33
				$this->messages[] = "Ce type de graphique '$graph_demande' n'est pas disponible.";
33
				$this->messages[] = "Ce type de graphique '$graph_demande' n'est pas disponible.";
34
			}
34
			}
35
		} else {
35
		} else {
36
			$this->messages[] = "Le premier paramêtre du service CEL Statistique doit correspondre au type de graphique.";
36
			$this->messages[] = "Le premier paramêtre du service CEL Statistique doit correspondre au type de graphique.";
37
		}
37
		}
38
 
38
 
39
		if (!is_null($graph)) {
39
		if (!is_null($graph)) {
40
			$serveur = (isset($_GET['serveur']) && preg_match('/^[0-9]$/', $_GET['serveur'])) ? $_GET['serveur'].'.' : '';
40
			$serveur = (isset($_GET['serveur']) && preg_match('/^[0-9]$/', $_GET['serveur'])) ? $_GET['serveur'].'.' : '';
41
			$url = "http://{$serveur}chart.apis.google.com/chart";
41
			$url = "http://{$serveur}chart.apis.google.com/chart";
42
			$contexte = stream_context_create(
42
			$contexte = stream_context_create(
43
				array('http' => array(
43
				array('http' => array(
44
      				'method' => 'POST',
44
      				'method' => 'POST',
45
      				'content' => http_build_query($graph))));
45
      				'content' => http_build_query($graph),
-
 
46
					'header' => 'Content-Type: application/x-www-form-urlencoded')));
46
			$image = file_get_contents($url, false, $contexte);
47
			$image = file_get_contents($url, false, $contexte);
47
			$this->envoyer($image, 'image/png', null, false);
48
			$this->envoyer($image, 'image/png', null, false);
48
		} else {
49
		} else {
49
			$info = 'Un problème est survenu : '.print_r($this->messages, true);
50
			$info = 'Un problème est survenu : '.print_r($this->messages, true);
50
			$this->envoyer($info);
51
			$this->envoyer($info);
51
		}
52
		}
52
	}
53
	}
53
 
54
 
54
	private function getEvolImgLieesParMois($param) {
55
	private function getEvolImgLieesParMois($param) {
55
		$utilisateur = isset($_GET['utilisateur']) ? $this->bdd->quote($_GET['utilisateur']) : null;
56
		$utilisateur = isset($_GET['utilisateur']) ? $this->bdd->quote($_GET['utilisateur']) : null;
56
		
57
		
57
		// Récupération des données
58
		// Récupération des données
58
		$requete = 	"SELECT DATE_FORMAT(ci_meta_date_ajout, '%Y%m') AS periode, COUNT(ci_id_image) AS nbre ".
59
		$requete = 	"SELECT DATE_FORMAT(date_creation, '%Y%m') AS periode, COUNT(ci.id_image) AS nbre ".
59
			"FROM cel_obs_images LEFT JOIN cel_images ON (coi_ce_image = ci_id_image) ".
60
			"FROM cel_obs_images coi LEFT JOIN cel_images ci ON (coi.id_image = ci.id_image) ".
60
			"WHERE ci_meta_date_ajout != '0000-00-00 00:00:00' ".
61
			"WHERE date_creation != '0000-00-00 00:00:00' ".
61
			((isset($utilisateur)) ? " AND ci_ce_utilisateur = $utilisateur " : '').
62
			((isset($utilisateur)) ? " AND courriel_utilisateur = $utilisateur " : '').
62
			'GROUP BY periode '.
63
			'GROUP BY periode '.
63
			'ORDER BY periode ';
64
			'ORDER BY periode ';
-
 
65
 
64
		$resulats = $this->executerRequete($requete);
66
		$resulats = $this->executerRequete($requete);
65
 
67
 
66
		$img_totale = array();
68
		$img_totale = array();
67
		foreach ($resulats as $info) {
69
		foreach ($resulats as $info) {
68
			$img_totale[$info['periode']] = $info['nbre'];
70
			$img_totale[$info['periode']] = $info['nbre'];
69
		}
71
		}
70
 
72
 
71
		// Trie des dates pour les étiquettes des axes
73
		// Trie des dates pour les étiquettes des axes
72
		$dates = array();
74
		$dates = array();
73
		$annees = array();
75
		$annees = array();
74
		$les_mois = array();
76
		$les_mois = array();
75
		$pas = 3; // intervalle de mois entre deux étiquettes
77
		$pas = 1; // intervalle de mois entre deux étiquettes
76
		$periode = 0;
78
		$periode = 0;
77
		$cumul = 0;
79
		$cumul = 0;
78
		$img_totale_cumul = array();
80
		$img_totale_cumul = array();
79
		
-
 
80
		foreach ($img_totale as $annee_mois => $nbre) {
81
		foreach ($img_totale as $annee_mois => $nbre) {
81
			$annee = substr($annee_mois, 0, 4);
82
			$annee = substr($annee_mois, 0, 4);
82
			$mois = substr($annee_mois, 4, 2);
83
			$mois = substr($annee_mois, 4, 2);
83
			$mois_fmt_B = strftime('%b', strtotime("1999-$mois-01"));
84
			$mois_fmt_B = strftime('%b', strtotime("0000-$mois-01"));
84
			$cumul += $nbre;
85
			$cumul += $nbre;
85
			$img_totale_cumul[$annee_mois] = $cumul;
86
			$img_totale_cumul[$annee_mois] = $cumul;
86
 
87
 
87
			if (!isset($dates[$annee][$mois])) {
88
			if (!isset($dates[$annee][$mois])) {
88
				$annees[] = (!isset($dates[$annee]) ? $annee : '');
89
				$annees[] = (!isset($dates[$annee]) ? $annee : '');
89
				$les_mois[] = is_int($periode++ / $pas) ? $mois_fmt_B : '';
90
				$les_mois[] = is_int($periode++ / $pas) ? $mois_fmt_B : '';
90
				// Ajouter au tableau dates tjrs à la fin
91
				// Ajouter au tableau dates tjrs à la fin
91
				$dates[$annee][$mois] = 1;
92
				$dates[$annee][$mois] = 1;
92
			}
93
			}
93
		}
94
		}
94
 
95
 
95
		// Post traitement des données
96
		// Post traitement des données
96
		$titre = "Évolution des images liées aux observations par mois";
97
		$titre = "Évolution des images liées aux observations par mois";
97
		$valeurs_y = implode(',', $img_totale);
98
		$valeurs_y = implode(',', $img_totale);
98
		$valeurs_r = implode(',', $img_totale_cumul);
99
		$valeurs_r = implode(',', $img_totale_cumul);
99
		$valeurs_max_y = (count($img_totale) > 0 ) ? max($img_totale) : 0;
100
		$valeurs_max_y = max($img_totale);
100
		$valeurs_max_r = (count($img_totale_cumul) > 0 ) ? max($img_totale_cumul) : 0;
101
		$valeurs_max_r = max($img_totale_cumul);
101
		$y_val_fin = $valeurs_max_y;
102
		$y_val_fin = $valeurs_max_y;
102
		$y_pas = round(($valeurs_max_y / 6), 0);
103
		$y_pas = 200;
103
		$r_val_fin = $valeurs_max_r;
104
		$r_val_fin = $valeurs_max_r;
104
		$r_pas = round(($valeurs_max_r / 6), 0);
105
		$r_pas = 1000;
105
		$etiquettes_x1 = implode('|', $les_mois);
106
		$etiquettes_x1 = implode('|', $les_mois);
106
		$etiquettes_x2 = implode('|', $annees);
107
		$etiquettes_x2 = implode('|', $annees);
107
		$etiquettes_y = 'Images';
108
		$etiquettes_y = 'Images';
108
		$etiquettes_r2 = 'Cumul';
-
 
109
		
109
 
110
		// Construire de l'url de l'image
110
		// Construire de l'url de l'image
111
		$graph = array('cht' => 'lc',
111
		$graph = array('cht' => 'lc',
112
			'chtt'	=> $titre,
112
			'chtt'	=> $titre,
113
			'chs'	=> '600x200',
113
			'chs'	=> '600x200',
114
			'chco'	=> '007F00,99CC00',
114
			'chco'	=> '007F00,99CC00',
115
			'chd'	=> 't:'.$valeurs_y.'|'.$valeurs_r,
115
			'chd'	=> 't:'.$valeurs_y.'|'.$valeurs_r,
116
			'chds'	=> "0,$valeurs_max_y,0,$valeurs_max_r",
116
			'chds'	=> "0,$valeurs_max_y,0,$valeurs_max_r",
117
			'chxt'	=> 'y,y,x,x,r,r',
117
			'chxt'	=> 'y,y,x,x,r',
118
			'chxl'	=> '1:|'.$etiquettes_y.'|3:|'.$etiquettes_x2.'|2:|'.$etiquettes_x1.'|5:|'.$etiquettes_r2,
118
			'chxl'	=> '1:|'.$etiquettes_y.'|3:|'.$etiquettes_x2.'|2:|'.$etiquettes_x1.'',
119
			'chxp'	=> '1,50|3,0|5,50',
119
			'chxp'	=> '1,50|3,0',
120
			'chxr'	=> "0,0,$y_val_fin,$y_pas|4,0,$r_val_fin,$r_pas",
120
			'chxr'	=> "0,0,$y_val_fin,$y_pas|4,0,$r_val_fin,$r_pas",
121
			'chm'	=> 'N ** ,000000,0,-1,8,1.0,ht',
121
			'chm'	=> 'N ** ,000000,0,-1,8,1.0,ht',
122
			'chxs'	=> '0,007F00|1,007F00|4,99CC00|5,99CC00');
122
			'chxs'	=> '0,007F00|4,99CC00');
123
		return $graph;
123
		return $graph;
124
	}
124
	}
125
 
125
 
126
	private function getEvolImgParMois($param) {
126
	private function getEvolImgParMois($param) {
127
		$utilisateur = isset($_GET['utilisateur']) ? $this->bdd->quote($_GET['utilisateur']) : null;
127
		$utilisateur = isset($_GET['utilisateur']) ? $this->bdd->quote($_GET['utilisateur']) : null;
128
		
128
		
129
		// Récupération des données
129
		// Récupération des données
130
		$requete = 	"SELECT DATE_FORMAT(ci_meta_date_ajout, '%Y%m') AS periode, COUNT(ci_id_image) AS nbre ".
130
		$requete = 	"SELECT DATE_FORMAT(date_creation, '%Y%m') AS periode, COUNT(id_image) AS nbre ".
131
			"FROM cel_images ".
131
			"FROM cel_images ".
132
			"WHERE ci_meta_date_ajout != '0000-00-00 00:00:00' ".
132
			"WHERE date_creation != '0000-00-00 00:00:00' ".
133
			((isset($utilisateur)) ? " AND ci_ce_utilisateur = $utilisateur " : '').
133
			((isset($utilisateur)) ? " AND courriel_utilisateur = $utilisateur " : '').
134
			'GROUP BY periode '.
134
			'GROUP BY periode '.
135
			'ORDER BY periode ';
135
			'ORDER BY periode ';
-
 
136
 
136
		$resulats = $this->executerRequete($requete);
137
		$resulats = $this->executerRequete($requete);
137
 
138
 
138
		$img_totale = array();
139
		$img_totale = array();
139
		foreach ($resulats as $info) {
140
		foreach ($resulats as $info) {
140
			$img_totale[$info['periode']] = $info['nbre'];
141
			$img_totale[$info['periode']] = $info['nbre'];
141
		}
142
		}
142
 
143
 
143
		// Trie des dates pour les étiquettes des axes
144
		// Trie des dates pour les étiquettes des axes
144
		$dates = array();
145
		$dates = array();
145
		$annees = array();
146
		$annees = array();
146
		$les_mois = array();
147
		$les_mois = array();
147
		$pas = 3; // intervalle de mois entre deux étiquettes
148
		$pas = 1; // intervalle de mois entre deux étiquettes
148
		$periode = 0;
149
		$periode = 0;
149
		$cumul = 0;
150
		$cumul = 0;
150
		$img_totale_cumul = array();
151
		$img_totale_cumul = array();
151
		foreach ($img_totale as $annee_mois => $nbre) {
152
		foreach ($img_totale as $annee_mois => $nbre) {
152
			$annee = substr($annee_mois, 0, 4);
153
			$annee = substr($annee_mois, 0, 4);
153
			$mois = substr($annee_mois, 4, 2);
154
			$mois = substr($annee_mois, 4, 2);
154
			$mois_fmt_B = strftime('%b', strtotime("1999-$mois-01"));
155
			$mois_fmt_B = strftime('%b', strtotime("0000-$mois-01"));
155
			$this->debug[] = $mois."/".$mois_fmt_B;
-
 
156
			$cumul += $nbre;
156
			$cumul += $nbre;
157
			$img_totale_cumul[$annee_mois] = $cumul;
157
			$img_totale_cumul[$annee_mois] = $cumul;
158
 
158
 
159
			if (!isset($dates[$annee][$mois])) {
159
			if (!isset($dates[$annee][$mois])) {
160
				$annees[] = (!isset($dates[$annee]) ? $annee : '');
160
				$annees[] = (!isset($dates[$annee]) ? $annee : '');
161
				$les_mois[] = is_int($periode++ / $pas) ? $mois_fmt_B : '';
161
				$les_mois[] = is_int($periode++ / $pas) ? $mois_fmt_B : '';
162
				// Ajouter au tableau dates tjrs à la fin
162
				// Ajouter au tableau dates tjrs à la fin
163
				$dates[$annee][$mois] = 1;
163
				$dates[$annee][$mois] = 1;
164
			}
164
			}
165
		}
165
		}
166
 
166
 
167
		// Post traitement des données
167
		// Post traitement des données
168
		$titre = "Évolution du dépôt d'images par mois";
168
		$titre = "Évolution du dépôt d'images par mois";
169
		$valeurs_y = implode(',', $img_totale);
169
		$valeurs_y = implode(',', $img_totale);
170
		$valeurs_r = implode(',', $img_totale_cumul);
170
		$valeurs_r = implode(',', $img_totale_cumul);
171
		$valeurs_max_y = (count($img_totale) > 0 ) ? max($img_totale) : 0;
171
		$valeurs_max_y = max($img_totale);
172
		$valeurs_max_r = (count($img_totale_cumul) > 0 ) ? max($img_totale_cumul) : 0;
172
		$valeurs_max_r = max($img_totale_cumul);
173
		$y_val_fin = $valeurs_max_y;
173
		$y_val_fin = $valeurs_max_y;
174
		$y_pas = round(($valeurs_max_y / 6), 0);
174
		$y_pas = 500;
175
		$r_val_fin = $valeurs_max_r;
175
		$r_val_fin = $valeurs_max_r;
176
		$r_pas = round(($valeurs_max_r / 6), 0);
176
		$r_pas = 1000;
177
		$etiquettes_x1 = implode('|', $les_mois);
177
		$etiquettes_x1 = implode('|', $les_mois);
178
		$etiquettes_x2 = implode('|', $annees);
178
		$etiquettes_x2 = implode('|', $annees);
179
		$etiquettes_y = 'Images';
179
		$etiquettes_y = 'Images';
180
		$etiquettes_r2 = 'Cumul';
-
 
181
		
180
 
182
		// Construire de l'url de l'image
181
		// Construire de l'url de l'image
183
		$graph = array('cht' => 'lc',
182
		$graph = array('cht' => 'lc',
184
			'chtt'	=> $titre,
183
			'chtt'	=> $titre,
185
			'chs'	=> '600x200',
184
			'chs'	=> '600x200',
186
			'chco'	=> '007F00,99CC00',
185
			'chco'	=> '007F00,99CC00',
187
			'chd'	=> 't:'.$valeurs_y.'|'.$valeurs_r,
186
			'chd'	=> 't:'.$valeurs_y.'|'.$valeurs_r,
188
			'chds'	=> "0,$valeurs_max_y,0,$valeurs_max_r",
187
			'chds'	=> "0,$valeurs_max_y,0,$valeurs_max_r",
189
			'chxt'	=> 'y,y,x,x,r,r',
188
			'chxt'	=> 'y,y,x,x,r',
190
			'chxl'	=> '1:|'.$etiquettes_y.'|3:|'.$etiquettes_x2.'|2:|'.$etiquettes_x1.'|5:|'.$etiquettes_r2,
189
			'chxl'	=> '1:|'.$etiquettes_y.'|3:|'.$etiquettes_x2.'|2:|'.$etiquettes_x1.'',
191
			'chxp'	=> '1,50|3,0|5,50',
190
			'chxp'	=> '1,50|3,0',
192
			'chxr'	=> "0,0,$y_val_fin,$y_pas|4,0,$r_val_fin,$r_pas",
191
			'chxr'	=> "0,0,$y_val_fin,$y_pas|4,0,$r_val_fin,$r_pas",
193
			'chm'	=> 'h,C3C3C3,0,0.5,1,-1|N ** ,000000,0,-1,8,1.0,ht',
192
			'chm'	=> 'h,C3C3C3,0,0.5,1,-1|N ** ,000000,0,-1,8,1.0,ht',
194
			'chxs'	=> '0,007F00|1,007F00|4,99CC00|5,99CC00');
193
			'chxs'	=> '0,007F00|4,99CC00');
195
		return $graph;
194
		return $graph;
196
	}
195
	}
197
 
-
 
198
	private function getEvolImgParMoisGlissant($param) {
-
 
199
		$utilisateur = isset($_GET['utilisateur']) ? $this->bdd->quote($_GET['utilisateur']) : null;
-
 
200
		// Récupération des données
-
 
201
		$requete = 	"SELECT DATE_FORMAT(ci_meta_date_ajout, '%Y%m%d') AS periode, COUNT(ci_id_image) AS nbre ".
-
 
202
			"FROM cel_images ".
-
 
203
			"WHERE ci_meta_date_ajout != '0000-00-00 00:00:00' ".
-
 
204
			'	AND ci_meta_date_ajout > DATE_SUB(NOW(), INTERVAL 31 DAY) '.
-
 
205
			((isset($utilisateur)) ? " AND ci_ce_utilisateur = $utilisateur " : '').
-
 
206
			'GROUP BY periode '.
-
 
207
			'ORDER BY periode ';
-
 
208
		$resultats = $this->executerRequete($requete);
-
 
209
 
-
 
210
		// 	Traitement du resultat
-
 
211
		$img_totale = array();
-
 
212
		if ($resultats !== false) {
-
 
213
			foreach ($resultats as $info) {
-
 
214
				$img_totale[$info['periode']] = $info['nbre'];
-
 
215
			}		
-
 
216
		}
-
 
217
		
-
 
218
		// Trie des dates pour les étiquettes des axes
-
 
219
		$dates = array();
-
 
220
		$annees = array();
-
 
221
		$annees_mois = array();
-
 
222
		$jours = array();
-
 
223
		foreach ($img_totale as $annee_mois_jours => $nbre) {
-
 
224
			$annee = substr($annee_mois_jours, 0, 4);
-
 
225
			$mois = substr($annee_mois_jours, 4, 2);
-
 
226
			$jour = substr($annee_mois_jours, 6, 2);
-
 
227
			$annee_mois_fmt_B = strftime('%B %Y', mktime(0, 0, 0, $mois, 1, $annee));
-
 
228
			
-
 
229
			if (!isset($dates[$annee][$mois][$jour])) {
-
 
230
				$annees_mois[] = (!isset($dates[$annee][$mois]) ? $annee_mois_fmt_B : '');
-
 
231
				$jours[] = $jour;
-
 
232
				// Ajouter au tableau dates tjrs à la fin
-
 
233
				$dates[$annee][$mois][$jour] = 1;
-
 
234
			}
-
 
235
		}
-
 
236
		
-
 
237
		// Post traitement des données
-
 
238
		$titre = "Évolution du dépôt d'images sur un mois glissant";
-
 
239
		$valeurs_max = (count($img_totale) > 0) ? max($img_totale) : 0;
-
 
240
		$valeurs = implode(',', $img_totale);
-
 
241
		$y_val_fin = $valeurs_max;
-
 
242
		$y_pas = round($valeurs_max / 6);
-
 
243
		$etiquettes_x1 = implode('|', $jours);
-
 
244
		$etiquettes_x2 = implode('|', $annees_mois);
-
 
245
		$etiquettes_y2 = 'Images';
-
 
246
 
-
 
247
		// Construction de l'url de l'image
-
 
248
		$graph = array('cht' => 'lc',
-
 
249
			'chtt'	=>	$titre,
-
 
250
			'chs'	=>	'600x200',
-
 
251
			'chco'	=>	'007F00',
-
 
252
			'chd'	=>	't:'.$valeurs,
-
 
253
			'chds'	=>	'0,'.$valeurs_max,
-
 
254
			'chxt'	=>	'y,y,x,x',
-
 
255
			'chxl'	=>	'1:|'.$etiquettes_y2.'|2:|'.$etiquettes_x1.'|3:|'.$etiquettes_x2,
-
 
256
			'chxp'	=>	'0,0|1,50',
-
 
257
			'chxr'	=>	"0,0,$y_val_fin,$y_pas",
-
 
258
			'chm'	=> 'h,C3C3C3,0,0.5,1,-1|N,000000,0,1::1,8,1.0,ht',
-
 
259
			'chxs'	=> '0,007F00|1,007F00');
-
 
260
		$this->debug[] = $graph;
-
 
261
		return $graph;
-
 
262
	}
-
 
263
	
-
 
264
	private function getEvolImgParAn($param) {
-
 
265
		$utilisateur = isset($_GET['utilisateur']) ? $this->bdd->quote($_GET['utilisateur']) : null;
-
 
266
		// Récupération des données
-
 
267
		$requete = 	"SELECT DATE_FORMAT(ci_meta_date_ajout, '%Y') AS periode, COUNT(ci_id_image) AS nbre ".
-
 
268
			"FROM cel_images ".
-
 
269
			"WHERE ci_meta_date_ajout != '0000-00-00 00:00:00' ".
-
 
270
			((isset($utilisateur)) ? " AND ci_ce_utilisateur = $utilisateur " : '').
-
 
271
			'GROUP BY periode '.
-
 
272
			'ORDER BY periode ';
-
 
273
		$resulats = $this->executerRequete($requete);
-
 
274
 
-
 
275
		$img_totale = array();
-
 
276
		foreach ($resulats as $info) {
-
 
277
			$img_totale[$info['periode']] = $info['nbre'];
-
 
278
		}
-
 
279
 
-
 
280
		// Trie des dates pour les étiquettes des axes
-
 
281
		$dates = array();
-
 
282
		$annees = array();
-
 
283
		foreach ($img_totale as $annee => $nbre) {
-
 
284
			if (!isset($dates[$annee])) {
-
 
285
				$annees[] = $annee;
-
 
286
				$dates[$annee] = 1;
-
 
287
			}
-
 
288
		}
-
 
289
 
-
 
290
		// Post traitement des données
-
 
291
		$titre = "Évolution du dépôt d'images par année";
-
 
292
		$valeurs = implode(',', $img_totale);
-
 
293
		$valeurs_max = (count($img_totale) > 0) ? max($img_totale) : 0;
-
 
294
		$valeurs_min = (count($img_totale) > 0) ? min($img_totale) : 0;
-
 
295
		$y_val_deb = preg_replace('/[0-9]{2}$/', '00', $valeurs_min);
-
 
296
		$y_val_fin = $valeurs_max;
-
 
297
		$y_pas = round(($valeurs_max / 6), 0);
-
 
298
		$etiquettes_x = implode('|', $annees);;
-
 
299
		$etiquettes_y = 'Images';
-
 
300
 
-
 
301
		// Construire de l'url de l'image
-
 
302
		$graph = array('cht' => 'lc',
-
 
303
			'chtt'	=> $titre,
-
 
304
			'chs'	=> '600x200',
-
 
305
			'chco'	=> '007F00',
-
 
306
			'chd'	=> 't:'.$valeurs,
-
 
307
			'chds'	=> "$valeurs_min,$valeurs_max",
-
 
308
			'chxt'	=> 'y,y,x',
-
 
309
			'chxl'	=> '1:|'.$etiquettes_y.'|2:|'.$etiquettes_x.'',
-
 
310
			'chxp'	=> '0,0|1,50|2,0',
-
 
311
			'chxr'	=> "0,$y_val_deb,$y_val_fin,$y_pas",
-
 
312
			'chm'	=> 'h,C3C3C3,0,0.5,1,-1|N,000000,0,1::1,8,1.0,ht',
-
 
313
			'chxs'	=> '0,007F00|1,007F00');
-
 
314
		return $graph;
-
 
315
	}
-
 
316
	
196
 
317
	private function getEvolUtilisateurParMois($param) {
197
	private function getEvolUtilisateurParMois($param) {
318
		// Récupération des données
198
		// Récupération des données
319
		$requete = 	'SELECT  DISTINCT identifiant , '.
199
		$requete = 	'SELECT  DISTINCT courriel_utilisateur , '.
320
					'	MIN(date_creation) AS date_min, MAX(date_creation) AS date_max, '.
200
					'	MIN(date_creation) AS date_min, MAX(date_creation) AS date_max, '.
321
					'	COUNT(id) AS obs_nbre '.
201
					'	COUNT(id_observation) AS obs_nbre '.
322
					'FROM cel_inventory '.
202
					'FROM cel_obs '.
323
					"WHERE date_creation != '0000-00-00 00:00:00' ".
203
					"WHERE date_creation != '0000-00-00 00:00:00' ".
324
					"	AND identifiant LIKE '%@%' ".
204
					"	AND courriel_utilisateur LIKE '%@%' ".
325
					'GROUP BY identifiant '.
205
					'GROUP BY courriel_utilisateur '.
326
					'ORDER BY date_min ASC ';
206
					'ORDER BY date_min ASC ';
327
		$resultats = $this->executerRequete($requete);
207
		$resultats = $this->executerRequete($requete);
328
 
208
 
329
		// Trie des données et des dates pour les étiquettes des axes
209
		// Trie des données et des dates pour les étiquettes des axes
330
		$dates = array();
210
		$dates = array();
331
		$annees = array();
211
		$annees = array();
332
		$utilisateurs = array();
212
		$utilisateurs = array();
333
		$les_mois = array();
213
		$les_mois = array();
334
		$pas = 3; // intervalle de mois entre deux étiquettes
214
		$pas = 2; // intervalle de mois entre deux étiquettes
335
		$periode = 0;
215
		$periode = 0;
336
		foreach ($resultats as $enrg) {
216
		foreach ($resultats as $enrg) {
337
			$annee = substr($enrg['date_min'], 0, 4);
217
			$annee = substr($enrg['date_min'], 0, 4);
338
			$mois = substr($enrg['date_min'], 5, 2);
218
			$mois = substr($enrg['date_min'], 5, 2);
339
			$mois_fmt_B = strftime('%b', strtotime("1999-$mois-01"));
219
			$mois_fmt_B = strftime('%b', strtotime("0000-$mois-01"));
340
 
220
 
341
			if (!isset($dates[$annee][$mois])) {
221
			if (!isset($dates[$annee][$mois])) {
342
				$annees[] = (!isset($dates[$annee]) ? $annee : '');
222
				$annees[] = (!isset($dates[$annee]) ? $annee : '');
343
				$les_mois[] = is_int($periode++ / $pas) ? $mois_fmt_B : '';
223
				$les_mois[] = is_int($periode++ / $pas) ? $mois_fmt_B : '';
344
				$utilisateurs["$annee-$mois"] = 1;
224
				$utilisateurs["$annee-$mois"] = 1;
345
				// Ajouter au tableau dates tjrs à la fin
225
				// Ajouter au tableau dates tjrs à la fin
346
				$dates[$annee][$mois] = 1;
226
				$dates[$annee][$mois] = 1;
347
			} else {
227
			} else {
348
				$utilisateurs["$annee-$mois"]++;
228
				$utilisateurs["$annee-$mois"]++;
349
			}
229
			}
350
		}
230
		}
351
 
231
 
352
		// Post traitement des données
232
		// Post traitement des données
353
		$titre = 'Évolution des utilisateurs par mois';
233
		$titre = 'Évolution des utilisateurs par mois';
354
		$valeurs = implode(',', $utilisateurs);
234
		$valeurs = implode(',', $utilisateurs);
355
		$valeurs_max = max($utilisateurs);
235
		$valeurs_max = max($utilisateurs);
356
		$y_val_fin = $valeurs_max;
236
		$y_val_fin = $valeurs_max;
357
		$y_pas = 5;
237
		$y_pas = 5;
358
		$etiquettes_x1 = implode('|', $les_mois);
238
		$etiquettes_x1 = implode('|', $les_mois);
359
		$etiquettes_x2 = implode('|', $annees);
239
		$etiquettes_x2 = implode('|', $annees);
360
		$etiquettes_y = 'Utilisateurs';
240
		$etiquettes_y = 'Utilisateurs';
361
 
241
 
362
		// Construire de l'url de l'image
242
		// Construire de l'url de l'image
363
		$graph = array('cht' => 'lc',
243
		$graph = array('cht' => 'lc',
364
			'chtt'	=> $titre,
244
			'chtt'	=> $titre,
365
			'chs'	=> '600x200',
245
			'chs'	=> '600x200',
366
			'chco'	=> '0000FF',//4D89F9
246
			'chco'	=> '0000FF',//4D89F9
367
			'chd'	=> 't:'.$valeurs,
247
			'chd'	=> 't:'.$valeurs,
368
			'chds'	=> '0,'.$valeurs_max,
248
			'chds'	=> '0,'.$valeurs_max,
369
			'chxt'	=> 'y,y,x,x',
249
			'chxt'	=> 'y,y,x,x',
370
			'chxl'	=> '1:|'.$etiquettes_y.'|3:|'.$etiquettes_x2.'|2:|'.$etiquettes_x1.'',
250
			'chxl'	=> '1:|'.$etiquettes_y.'|3:|'.$etiquettes_x2.'|2:|'.$etiquettes_x1.'',
371
			'chxp'	=> '1,50|3,0',
251
			'chxp'	=> '1,50|3,0',
372
			'chxr'	=> "0,0,$y_val_fin,$y_pas",
252
			'chxr'	=> "0,0,$y_val_fin,$y_pas",
373
			'chm'	=> 'h,C3C3C3,0,0.5,1,-1|N ** ,000000,0,2::2,8,1.0,ht',
253
			'chm'	=> 'h,C3C3C3,0,0.5,1,-1|N ** ,000000,0,2::2,8,1.0,ht',
374
			'chxs'	=> '0,0000FF|1,0000FF');
254
			'chxs'	=> '0,0000FF|1,0000FF');
375
		return $graph;
255
		return $graph;
376
	}
256
	}
377
 
257
 
378
	private function getEvolObsParMoisGlissant($param) {
258
	private function getEvolObsParMoisGlissant($param) {
379
		// Récupération des données
259
		// Récupération des données
380
		$format_date = '%Y%m%d';
260
		$format_date = '%Y%m%d';
381
		$where = 'date_creation > DATE_SUB(NOW(), INTERVAL 31 DAY)';
261
		$where = 'date_creation > DATE_SUB(NOW(), INTERVAL 31 DAY)';
382
		$obs_totale = $this->executerRequeteEvol('cel_inventory', 'id', $format_date, $where);
262
		$obs_totale = $this->executerRequeteEvol('cel_obs', 'id_observation', $format_date, $where);
383
 
263
		
384
		// Trie des dates pour les étiquettes des axes
264
		// Tri des dates pour les étiquettes des axes
385
		$dates = array();
265
		$dates = array();
386
		$annees = array();
266
		$annees = array();
387
		$annees_mois = array();
267
		$annees_mois = array();
388
		$jours = array();
268
		$jours = array();
389
		foreach ($obs_totale as $annee_mois_jours => $nbre) {
269
		foreach ($obs_totale as $annee_mois_jours => $nbre) {
390
			$annee = substr($annee_mois_jours, 0, 4);
270
			$annee = substr($annee_mois_jours, 0, 4);
391
			$mois = substr($annee_mois_jours, 4, 2);
271
			$mois = substr($annee_mois_jours, 4, 2);
392
			$jour = substr($annee_mois_jours, 6, 2);
272
			$jour = substr($annee_mois_jours, 6, 2);
393
			$annee_mois_fmt_B = strftime('%B %Y', mktime(0, 0, 0, $mois, 1, $annee));
273
			$annee_mois_fmt_B = strftime('%B %Y', mktime(0, 0, 0, $mois, 1, $annee));
394
			
274
			
395
			if (!isset($dates[$annee][$mois][$jour])) {
275
			if (!isset($dates[$annee][$mois][$jour])) {
396
				$annees_mois[] = (!isset($dates[$annee][$mois]) ? $annee_mois_fmt_B : '');
276
				$annees_mois[] = (!isset($dates[$annee][$mois]) ? $annee_mois_fmt_B : '');
397
				$jours[] = $jour;
277
				$jours[] = $jour;
398
				// Ajouter au tableau dates tjrs à la fin
278
				// Ajouter au tableau dates tjrs à la fin
399
				$dates[$annee][$mois][$jour] = 1;
279
				$dates[$annee][$mois][$jour] = 1;
400
			}
280
			}
401
		}
281
		}
402
		
282
		
403
		// Post traitement des données
283
		// Post traitement des données
404
		$titre = 'Évolution des observations sur un mois glissant';
284
		$titre = 'Évolution des observations sur un mois glissant';
405
		$valeurs_max = (count($obs_totale) > 0 ) ? max($obs_totale) : 0;
285
		$valeurs_max = max($obs_totale);
406
		$valeurs = implode(',', $obs_totale);
286
		$valeurs = implode(',', $obs_totale);
407
		$y_val_fin = $valeurs_max;
287
		$y_val_fin = $valeurs_max;
408
		$y_pas = round($valeurs_max / 6);
288
		$y_pas = round($valeurs_max / 6);
409
		$etiquettes_x1 = implode('|', $jours);
289
		$etiquettes_x1 = implode('|', $jours);
410
		$etiquettes_x2 = implode('|', $annees_mois);
290
		$etiquettes_x2 = implode('|', $annees_mois);
411
		$etiquettes_y2 = 'Observations';
291
		$etiquettes_y2 = 'Observations';
412
 
292
 
413
		// Construction de l'url de l'image
293
		// Construire de l'url de l'image
414
		$graph = array('cht' => 'lc',
294
		$graph = array('cht' => 'lc',
415
			'chtt'	=>	$titre,
295
			'chtt'	=>	$titre,
416
			'chs'	=>	'600x200',
296
			'chs'	=>	'600x200',
417
			'chco'	=>	'822013',
297
			'chco'	=>	'822013',
418
			'chd'	=>	't:'.$valeurs,
298
			'chd'	=>	't:'.$valeurs,
419
			'chds'	=>	'0,'.$valeurs_max,
299
			'chds'	=>	'0,'.$valeurs_max,
420
			'chxt'	=>	'y,y,x,x',
300
			'chxt'	=>	'y,y,x,x',
421
			'chxl'	=>	'1:|'.$etiquettes_y2.'|2:|'.$etiquettes_x1.'|3:|'.$etiquettes_x2,
301
			'chxl'	=>	'1:|'.$etiquettes_y2.'|2:|'.$etiquettes_x1.'|3:|'.$etiquettes_x2,
422
			'chxp'	=>	'0,0|1,50',
302
			'chxp'	=>	'0,0|1,50',
423
			'chxr'	=>	"0,0,$y_val_fin,$y_pas",
303
			'chxr'	=>	"0,0,$y_val_fin,$y_pas",
424
			'chm'	=> 'h,C3C3C3,0,0.5,1,-1|N,000000,0,1::1,8,1.0,ht',
304
			'chm'	=> 'h,C3C3C3,0,0.5,1,-1|N,000000,0,1::1,8,1.0,ht',
425
			'chxs'	=> '0,822013|1,822013');
305
			'chxs'	=> '0,822013|1,822013');
-
 
306
		
426
		return $graph;
307
		return $graph;
427
	}
308
	}
428
 
309
 
429
	private function getEvolObsParMois($param) {
310
	private function getEvolObsParMois($param) {
430
		// Récupération des données
311
		// Récupération des données
431
		$obs_totale = $this->executerRequeteEvol('cel_inventory', 'id');
312
		$obs_totale = $this->executerRequeteEvol('cel_obs', 'id_observation');
432
 
313
 
433
		// Trie des dates pour les étiquettes des axes
314
		// Trie des dates pour les étiquettes des axes
434
		$dates = array();
315
		$dates = array();
435
		$annees = array();
316
		$annees = array();
436
		$les_mois = array();
317
		$les_mois = array();
437
		$pas = 3; // intervalle de mois entre deux étiquettes
318
		$pas = 3; // intervalle de mois entre deux étiquettes
438
		$periode = 0;
319
		$periode = 0;
439
		$cumul = 0;
320
		$cumul = 0;
440
		$obs_totale_cumul = array();
321
		$obs_totale_cumul = array();
441
		foreach ($obs_totale as $annee_mois => $nbre) {
322
		foreach ($obs_totale as $annee_mois => $nbre) {
442
			$annee = substr($annee_mois, 0, 4);
323
			$annee = substr($annee_mois, 0, 4);
443
			$mois = substr($annee_mois, 4, 2);
324
			$mois = substr($annee_mois, 4, 2);
444
			$mois_fmt_B = strftime('%b', strtotime("1999-$mois-01"));
325
			$mois_fmt_B = strftime('%b', strtotime("0000-$mois-01"));
445
			$cumul += $nbre;
326
			$cumul += $nbre;
446
			$obs_totale_cumul[$annee_mois] = $cumul;
327
			$obs_totale_cumul[$annee_mois] = $cumul;
447
 
328
 
448
			if (!isset($dates[$annee][$mois])) {
329
			if (!isset($dates[$annee][$mois])) {
449
				$annees[] = (!isset($dates[$annee]) ? $annee : '');
330
				$annees[] = (!isset($dates[$annee]) ? $annee : '');
450
				$les_mois[] = is_int($periode++ / $pas) ? $mois_fmt_B : '';
331
				$les_mois[] = is_int($periode++ / $pas) ? $mois_fmt_B : '';
451
				// Ajouter au tableau dates tjrs à la fin
332
				// Ajouter au tableau dates tjrs à la fin
452
				$dates[$annee][$mois] = 1;
333
				$dates[$annee][$mois] = 1;
453
			}
334
			}
454
		}
335
		}
455
 
336
 
456
		// Post traitement des données
337
		// Post traitement des données
457
		$titre = 'Évolution des observations par mois';
338
		$titre = 'Évolution des observations par mois';
458
		$valeurs_y = implode(',', $obs_totale);
339
		$valeurs_y = implode(',', $obs_totale);
459
		$valeurs_r = implode(',', $obs_totale_cumul);
340
		$valeurs_r = implode(',', $obs_totale_cumul);
460
		$valeurs_max_y = (count($obs_totale) > 0 ) ? max($obs_totale) : 0;
341
		$valeurs_max_y = max($obs_totale);
461
		$valeurs_max_r = (count($obs_totale_cumul) > 0 ) ? max($obs_totale_cumul) : 0;
342
		$valeurs_max_r = max($obs_totale_cumul);
462
		$y_val_fin = $valeurs_max_y;
343
		$y_val_fin = $valeurs_max_y;
463
		$y_pas = round(($valeurs_max_y / 6), 0);
344
		$y_pas = round(($valeurs_max_y / 6), 0);
464
		$r_val_fin = $valeurs_max_r;
345
		$r_val_fin = $valeurs_max_r;
465
		$r_pas = round(($valeurs_max_r / 6), 0);
346
		$r_pas = round(($valeurs_max_r / 6), 0);
466
		$etiquettes_x1 = implode('|', $les_mois);
347
		$etiquettes_x1 = implode('|', $les_mois);
467
		$etiquettes_x2 = implode('|', $annees);
348
		$etiquettes_x2 = implode('|', $annees);
468
		$etiquettes_y2 = 'Observations';
349
		$etiquettes_y2 = 'Observations';
469
		$etiquettes_r2 = 'Cumul';
350
		$etiquettes_r2 = 'Cumul obs.';
470
 
351
 
471
		// Construire de l'url de l'image
352
		// Construire de l'url de l'image
472
		$graph = array('cht' => 'lc',
353
		$graph = array('cht' => 'lc',
473
			'chtt'	=> $titre,
354
			'chtt'	=> $titre,
474
			'chs'	=> '600x200',
355
			'chs'	=> '600x200',
475
			'chco'	=> '822013,F1841D',
356
			'chco'	=> '822013,F1841D',
476
			'chd'	=> 't:'.$valeurs_y.'|'.$valeurs_r,
357
			'chd'	=> 't:'.$valeurs_y.'|'.$valeurs_r,
477
			'chds'	=> "0,$valeurs_max_y,0,$valeurs_max_r",
358
			'chds'	=> "0,$valeurs_max_y,0,$valeurs_max_r",
478
			'chxt'	=> 'y,y,x,x,r,r',
359
			'chxt'	=> 'y,y,x,x,r,r',
479
			'chxl'	=> '1:|'.$etiquettes_y2.'|2:|'.$etiquettes_x1.'|3:|'.$etiquettes_x2.'|5:|'.$etiquettes_r2.'',
360
			'chxl'	=> '1:|'.$etiquettes_y2.'|2:|'.$etiquettes_x1.'|3:|'.$etiquettes_x2.'|5:|'.$etiquettes_r2.'',
480
			'chxp'	=> '1,50|3,0|5,50',
361
			'chxp'	=> '1,50|3,0|5,50',
481
			'chxr'	=> "0,0,$y_val_fin,$y_pas|4,0,$r_val_fin,$r_pas",
362
			'chxr'	=> "0,0,$y_val_fin,$y_pas|4,0,$r_val_fin,$r_pas",
482
			'chm'	=> 'N ** ,000000,0,2::2,8,1.0,ht',
363
			'chm'	=> 'N ** ,000000,0,2::2,8,1.0,ht',
483
			'chxs'	=> '0,822013|1,822013|4,F1841D|5,F1841D');
364
			'chxs'	=> '0,822013|1,822013|4,F1841D|5,F1841D');
484
		return $graph;
365
		return $graph;
485
	}
366
	}
486
 
367
 
487
	private function getEvolObsParAn($param) {
368
	private function getEvolObsParAn($param) {
488
		// Récupération des données
369
		// Récupération des données
489
		$obs_totale = $this->executerRequeteEvol('cel_inventory', 'id', '%Y');
370
		$obs_totale = $this->executerRequeteEvol('cel_obs', 'id_observation', '%Y');
490
 
371
 
491
		// Trie des dates pour les étiquettes des axes
372
		// Trie des dates pour les étiquettes des axes
492
		$dates = array();
373
		$dates = array();
493
		$annees = array();
374
		$annees = array();
494
		foreach ($obs_totale as $annee => $nbre) {
375
		foreach ($obs_totale as $annee => $nbre) {
495
			if (!isset($dates[$annee])) {
376
			if (!isset($dates[$annee])) {
496
				$annees[] = $annee;
377
				$annees[] = $annee;
497
				$dates[$annee] = 1;
378
				$dates[$annee] = 1;
498
			}
379
			}
499
		}
380
		}
500
 
381
 
501
		// Post traitement des données
382
		// Post traitement des données
502
		$titre = 'Évolution des observations par année';
383
		$titre = 'Évolution des observations par année';
503
		$valeurs = implode(',', $obs_totale);
384
		$valeurs = implode(',', $obs_totale);
504
		$valeurs_max = (count($obs_totale) > 0 ) ? max($obs_totale) : 0;
385
		$valeurs_max = max($obs_totale);
505
		$valeurs_min = (count($obs_totale) > 0 ) ? min($obs_totale) : 0;
386
		$valeurs_min = min($obs_totale);
506
		$y_val_deb = preg_replace('/[0-9]{2}$/', '00', $valeurs_min);
387
		$y_val_deb = preg_replace('/[0-9]{2}$/', '00', $valeurs_min);
507
		$y_val_fin = $valeurs_max;
388
		$y_val_fin = $valeurs_max;
508
		$y_pas = round(($valeurs_max / 6), 0);
389
		$y_pas = round(($valeurs_max / 6), 0);
509
		$etiquettes_x = implode('|', $annees);;
390
		$etiquettes_x = implode('|', $annees);;
510
		$etiquettes_y = 'Observations';
391
		$etiquettes_y = 'Observations';
511
 
392
 
512
		// Construire de l'url de l'image
393
		// Construire de l'url de l'image
513
		$graph = array('cht' => 'lc',
394
		$graph = array('cht' => 'lc',
514
			'chtt'	=> $titre,
395
			'chtt'	=> $titre,
515
			'chs'	=> '600x200',
396
			'chs'	=> '600x200',
516
			'chco'	=> '822013',
397
			'chco'	=> '822013',
517
			'chd'	=> 't:'.$valeurs,
398
			'chd'	=> 't:'.$valeurs,
518
			'chds'	=> "$valeurs_min,$valeurs_max",
399
			'chds'	=> "$valeurs_min,$valeurs_max",
519
			'chxt'	=> 'y,y,x',
400
			'chxt'	=> 'y,y,x',
520
			'chxl'	=> '1:|'.$etiquettes_y.'|2:|'.$etiquettes_x.'',
401
			'chxl'	=> '1:|'.$etiquettes_y.'|2:|'.$etiquettes_x.'',
521
			'chxp'	=> '0,0|1,50|2,0',
402
			'chxp'	=> '0,0|1,50|2,0',
522
			'chxr'	=> "0,$y_val_deb,$y_val_fin,$y_pas",
403
			'chxr'	=> "0,$y_val_deb,$y_val_fin,$y_pas",
523
			'chm'	=> 'h,C3C3C3,0,0.5,1,-1|N,000000,0,1::1,8,1.0,ht',
404
			'chm'	=> 'h,C3C3C3,0,0.5,1,-1|N,000000,0,1::1,8,1.0,ht',
524
			'chxs'	=> '0,822013|1,822013');
405
			'chxs'	=> '0,822013|1,822013');
525
		return $graph;
406
		return $graph;
526
	}
407
	}
527
 
408
 
528
	private function getEvolObsHisto($param) {
409
	private function getEvolObsHisto($param) {
529
		// Récupération des données
410
		// Récupération des données
530
		$obs_totale = $this->executerRequeteEvol('cel_inventory', 'id');
411
		$obs_totale = $this->executerRequeteEvol('cel_obs', 'id_observation');
531
		$obs_identifiee = $this->executerRequeteEvol('cel_inventory', 'id', "identifiant LIKE '%@%' ");
412
		$obs_identifiee = $this->executerRequeteEvol('cel_obs', 'id_observation', "courriel_utilisateur LIKE '%@%' ");
532
		$lignes = array('total', 'obs. identifiée');
413
		$lignes = array('total', 'obs. identifiée');
533
 
414
 
534
		// Post traitement des données
415
		// Post traitement des données
535
		$titre = 'Évolution des observations';
416
		$titre = 'Évolution des observations';
536
		$valeurs = implode(',', $obs_totale).'|'.implode(',', $obs_identifiee);
417
		$valeurs = implode(',', $obs_totale).'|'.implode(',', $obs_identifiee);
537
		$valeurs_max = (count($obs_totale) > 0 ) ? max($obs_totale) : 0;
418
		$valeurs_max = max($obs_totale);
538
		$etiquettes = implode('|', array_keys($lignes));
419
		$etiquettes = implode('|', array_keys($lignes));
539
 
420
 
540
		// Construire de l'url de l'image
421
		// Construire de l'url de l'image
541
		$graph = array('cht' => 'lc',
422
		$graph = array('cht' => 'lc',
542
			'chtt'	=> $titre,
423
			'chtt'	=> $titre,
543
			'chs'	=> '500x300',
424
			'chs'	=> '500x300',
544
			'chco'	=> 'FF0000,00FF00',
425
			'chco'	=> 'FF0000,00FF00',
545
			'chd'	=> 't:'.$valeurs,
426
			'chd'	=> 't:'.$valeurs,
546
			'chds'	=> "0,$valeurs_max",
427
			'chds'	=> "0,$valeurs_max",
547
			'chxt'	=> 'y',
428
			'chxt'	=> 'y',
548
			'chxl'	=> '0:|'.$etiquettes.'',
429
			'chxl'	=> '0:|'.$etiquettes.'',
549
			'chm'	=> 'N,000000,0,-1,10');
430
			'chm'	=> 'N,000000,0,-1,10');
550
		return $graph;
431
		return $graph;
551
	}
432
	}
552
 
433
 
553
	private function getNbreObsIdVsTest($param) {
434
	private function getNbreObsIdVsTest($param) {
554
		// Récupération des données
435
		// Récupération des données
555
		$obs_totale = $this->executerRequeteNombre('cel_inventory', 'id');
436
		$obs_totale = $this->executerRequeteNombre('cel_obs', 'id_observation');
556
		$obs_identifiee = $this->executerRequeteNombre('cel_inventory', 'id', "identifiant LIKE '%@%' ");
437
		$obs_identifiee = $this->executerRequeteNombre('cel_obs', 'id_observation', "courriel_utilisateur LIKE '%@%' ");
557
		$obs_test = $obs_totale - $obs_identifiee;
438
		$obs_test = $obs_totale - $obs_identifiee;
558
		$pourcent_identifiee = round(($obs_identifiee / ($obs_totale / 100)), 2).'%';
439
		$pourcent_identifiee = round(($obs_identifiee / ($obs_totale / 100)), 2).'%';
559
		$pourcent_anonyme = round(($obs_test / ($obs_totale / 100)), 2).'%';
440
		$pourcent_anonyme = round(($obs_test / ($obs_totale / 100)), 2).'%';
560
 
441
 
561
		// Post traitement des données de la base de données
442
		// Post traitement des données de la base de données
562
		$titre = "Nombre d'observations|tests vs. identifiées";
443
		$titre = "Nombre d'observations|tests vs. identifiées";
563
		$etiquette_obs_test = "tests ($obs_test - $pourcent_anonyme)";
444
		$etiquette_obs_test = "tests ($obs_test - $pourcent_anonyme)";
564
		$etiquette_obs_id = "identifiées ($obs_identifiee - $pourcent_identifiee)";
445
		$etiquette_obs_id = "identifiées ($obs_identifiee - $pourcent_identifiee)";
565
		$donnees = array($etiquette_obs_test => $obs_test, $etiquette_obs_id => $obs_identifiee);
446
		$donnees = array($etiquette_obs_test => $obs_test, $etiquette_obs_id => $obs_identifiee);
566
		$valeurs = implode(',', $donnees);
447
		$valeurs = implode(',', $donnees);
567
		$etiquettes = implode('|', array_keys($donnees));
448
		$etiquettes = implode('|', array_keys($donnees));
568
 
449
 
569
		// Construire les paramêtres de l'url de l'image
450
		// Construire les paramêtres de l'url de l'image
570
		$graph = array('cht' => 'p3',
451
		$graph = array('cht' => 'p3',
571
			'chtt'	=> $titre,
452
			'chtt'	=> $titre,
572
			'chs'	=> '250x200',
453
			'chs'	=> '250x200',
573
			'chco'	=> 'FF0000,00FF00',
454
			'chco'	=> 'FF0000,00FF00',
574
			'chd'	=> 't:'.$valeurs,
455
			'chd'	=> 't:'.$valeurs,
575
			'chds'	=> "0,$obs_totale",
456
			'chds'	=> "0,$obs_totale",
576
			'chdl'	=> $etiquettes,
457
			'chdl'	=> $etiquettes,
577
			'chdlp'	=> 'bv|r',
458
			'chdlp'	=> 'bv|r',
578
			'chts'	=> '000000,12');
459
			'chts'	=> '000000,12');
579
		return $graph;
460
		return $graph;
580
	}
461
	}
581
 
462
 
582
	private function getNbreObsPublicVsPrivee($param) {
463
	private function getNbreObsPublicVsPrivee($param) {
583
		// Récupération des données
464
		// Récupération des données
584
		$obs_totale = $this->executerRequeteNombre('cel_inventory', 'id');
465
		$obs_totale = $this->executerRequeteNombre('cel_obs', 'id_observation');
585
		$obs_public = $this->executerRequeteNombre('cel_inventory', 'id', 'transmission = 1');
466
		$obs_public = $this->executerRequeteNombre('cel_obs', 'id_observation', 'transmission = 1');
586
		$obs_privee = $obs_totale - $obs_public;
467
		$obs_privee = $obs_totale - $obs_public;
587
		$pourcent_privee = round(($obs_privee / ($obs_totale / 100)), 2).'%';
468
		$pourcent_privee = round(($obs_privee / ($obs_totale / 100)), 2).'%';
588
		$pourcent_public = round(($obs_public / ($obs_totale / 100)), 2).'%';
469
		$pourcent_public = round(($obs_public / ($obs_totale / 100)), 2).'%';
589
 
470
 
590
		// Post traitement des données de la base de données
471
		// Post traitement des données de la base de données
591
		$titre = "Nombre d'observations|publiques vs. privées";
472
		$titre = "Nombre d'observations|publiques vs. privées";
592
		$etiquette_obs_public = "publiques ($obs_public - $pourcent_public)";
473
		$etiquette_obs_public = "publiques ($obs_public - $pourcent_public)";
593
		$etiquette_obs_privee = "privées ($obs_privee - $pourcent_privee)";
474
		$etiquette_obs_privee = "privées ($obs_privee - $pourcent_privee)";
594
		$donnees = array($etiquette_obs_privee => $obs_privee, $etiquette_obs_public => $obs_public);
475
		$donnees = array($etiquette_obs_privee => $obs_privee, $etiquette_obs_public => $obs_public);
595
		$valeurs = implode(',', $donnees);
476
		$valeurs = implode(',', $donnees);
596
		$etiquettes = implode('|', array_keys($donnees));
477
		$etiquettes = implode('|', array_keys($donnees));
597
 
478
 
598
		// Construire les paramêtres du graph
479
		// Construire les paramêtres du graph
599
		$graph = array('cht' => 'p3',
480
		$graph = array('cht' => 'p3',
600
			'chtt'	=> $titre,
481
			'chtt'	=> $titre,
601
			'chs'	=> '250x200',
482
			'chs'	=> '250x200',
602
			'chco'	=> 'FF0000,00FF00',
483
			'chco'	=> 'FF0000,00FF00',
603
			'chd'	=> 't:'.$valeurs,
484
			'chd'	=> 't:'.$valeurs,
604
			'chds'	=> "0,$obs_totale",
485
			'chds'	=> "0,$obs_totale",
605
			'chdl'	=> $etiquettes,
486
			'chdl'	=> $etiquettes,
606
			'chdlp'	=> 'bv|r',
487
			'chdlp'	=> 'bv|r',
607
			'chts'	=> '000000,12');
488
			'chts'	=> '000000,12');
608
		return $graph;
489
		return $graph;
609
	}
490
	}
610
 
491
 
611
	private function getNbreObsDetermineeVsInconnue($param) {
492
	private function getNbreObsDetermineeVsInconnue($param) {
612
		// Récupération des données
493
		// Récupération des données
613
		$obs_totale = $this->executerRequeteNombre('cel_inventory', 'id');
494
		$obs_totale = $this->executerRequeteNombre('cel_obs', 'id_observation');
614
		$obs_determinee = $this->executerRequeteNombre('cel_inventory', 'id', 'num_nom_sel != 0');
495
		$obs_determinee = $this->executerRequeteNombre('cel_obs', 'id_observation', 'nom_sel_nn != 0');
615
		$obs_inconnue = $obs_totale - $obs_determinee;
496
		$obs_inconnue = $obs_totale - $obs_determinee;
616
		$pourcent_determinee = round(($obs_determinee / ($obs_totale / 100)), 2).'%';
497
		$pourcent_determinee = round(($obs_determinee / ($obs_totale / 100)), 2).'%';
617
		$pourcent_inconnue = round(($obs_inconnue / ($obs_totale / 100)), 2).'%';
498
		$pourcent_inconnue = round(($obs_inconnue / ($obs_totale / 100)), 2).'%';
618
 
499
 
619
		// Post traitement des données de la base de données
500
		// Post traitement des données de la base de données
620
		$titre = "Nombre d'observations|determinées vs. inconnues";
501
		$titre = "Nombre d'observations|determinées vs. inconnues";
621
		$etiquette_obs_determinee = "determinées ($obs_determinee - $pourcent_determinee)";
502
		$etiquette_obs_determinee = "determinées ($obs_determinee - $pourcent_determinee)";
622
		$etiquette_obs_inconnue = "non déterminées ($obs_inconnue - $pourcent_inconnue)";
503
		$etiquette_obs_inconnue = "non déterminées ($obs_inconnue - $pourcent_inconnue)";
623
		$donnees = array($etiquette_obs_inconnue => $obs_inconnue, $etiquette_obs_determinee => $obs_determinee);
504
		$donnees = array($etiquette_obs_inconnue => $obs_inconnue, $etiquette_obs_determinee => $obs_determinee);
624
		$valeurs = implode(',', $donnees);
505
		$valeurs = implode(',', $donnees);
625
		$etiquettes = implode('|', array_keys($donnees));
506
		$etiquettes = implode('|', array_keys($donnees));
626
 
507
 
627
		// Construire les paramêtres du graph
508
		// Construire les paramêtres du graph
628
		$graph = array('cht' => 'p3',
509
		$graph = array('cht' => 'p3',
629
			'chtt'	=> $titre,
510
			'chtt'	=> $titre,
630
			'chs'	=> '250x200',
511
			'chs'	=> '250x200',
631
			'chco'	=> 'FF0000,00FF00',
512
			'chco'	=> 'FF0000,00FF00',
632
			'chd'	=> 't:'.$valeurs,
513
			'chd'	=> 't:'.$valeurs,
633
			'chds'	=> "0,$obs_totale",
514
			'chds'	=> "0,$obs_totale",
634
			'chdl'	=> $etiquettes,
515
			'chdl'	=> $etiquettes,
635
			'chdlp'	=> 'bv|r',
516
			'chdlp'	=> 'bv|r',
636
			'chts'	=> '000000,12');
517
			'chts'	=> '000000,12');
637
		return $graph;
518
		return $graph;
638
	}
519
	}
639
 
520
 
640
	private function getNbreObsAvecIndicationGeo($param) {
521
	private function getNbreObsAvecIndicationGeo($param) {
641
		// Récupération des données
522
		// Récupération des données
642
		$total = $this->executerRequeteNombre('cel_inventory', 'id');
523
		$total = $this->executerRequeteNombre('cel_obs', 'id_observation');
643
		$where_commune = $this->creerWhereIndicationGeo('location');
524
		$where_commune = $this->creerWhereIndicationGeo('zone_geo');
644
		$obs['commune'] = $this->executerRequeteNombre('cel_inventory', 'id', $where_commune);
525
		$obs['commune'] = $this->executerRequeteNombre('cel_obs', 'id_observation', $where_commune);
645
		$where_commune_id = $this->creerWhereIndicationGeo('id_location');
526
		$where_commune_id = $this->creerWhereIndicationGeo('ce_zone_geo');
646
		$obs['commune identifiée'] = $this->executerRequeteNombre('cel_inventory', 'id', $where_commune_id);
527
		$obs['commune identifiée'] = $this->executerRequeteNombre('cel_obs', 'id_observation', $where_commune_id);
647
		$where_lieudit = $this->creerWhereIndicationGeo('lieudit');
528
		$where_lieudit = $this->creerWhereIndicationGeo('lieudit');
648
		$obs['lieu-dit'] = $this->executerRequeteNombre('cel_inventory', 'id', $where_lieudit);
529
		$obs['lieu-dit'] = $this->executerRequeteNombre('cel_obs', 'id_observation', $where_lieudit);
649
		$where_station = $this->creerWhereIndicationGeo('station');
530
		$where_station = $this->creerWhereIndicationGeo('station');
650
		$obs['station'] = $this->executerRequeteNombre('cel_inventory', 'id', $where_station);
531
		$obs['station'] = $this->executerRequeteNombre('cel_obs', 'id_observation', $where_station);
651
		$where_milieu = $this->creerWhereIndicationGeo('milieu');
532
		$where_milieu = $this->creerWhereIndicationGeo('milieu');
652
		$obs['milieu'] = $this->executerRequeteNombre('cel_inventory', 'id', $where_milieu);
533
		$obs['milieu'] = $this->executerRequeteNombre('cel_obs', 'id_observation', $where_milieu);
653
		$where_xy = $this->creerWhereIndicationGeo('coord_x').' AND '.$this->creerWhereIndicationGeo('coord_y');
534
		$where_xy = $this->creerWhereIndicationGeo('latitude').' AND '.$this->creerWhereIndicationGeo('longitude');
654
		$obs['coordonnée'] = $this->executerRequeteNombre('cel_inventory', 'id', $where_xy);
535
		$obs['coordonnée'] = $this->executerRequeteNombre('cel_obs', 'id_observation', $where_xy);
655
 
536
 
656
		$donnees = array();
537
		$donnees = array();
657
		$num = 1;
538
		$num = 1;
658
		foreach ($obs as $etiquette => $nbre) {
539
		foreach ($obs as $etiquette => $nbre) {
659
			$pourcent = round(($obs[$etiquette] / ($total / 100)), 1).'%';
540
			$pourcent = round(($obs[$etiquette] / ($total / 100)), 1).'%';
660
			$legende = "$num : $etiquette ($nbre - $pourcent)";
541
			$legende = "$num : $etiquette ($nbre - $pourcent)";
661
			$donnees['valeurs'][] = $nbre;
542
			$donnees['valeurs'][] = $nbre;
662
			$donnees['etiquettes'][] = $num++;
543
			$donnees['etiquettes'][] = $num++;
663
			$donnees['legendes'][] = $legende;
544
			$donnees['legendes'][] = $legende;
664
		}
545
		}
665
 
546
 
666
 
547
 
667
		// Post traitement des données de la base de données
548
		// Post traitement des données de la base de données
668
		$titre = "Nombre d'observations|avec indications géographiques";
549
		$titre = "Nombre d'observations|avec indications géographiques";
669
		$valeurs = implode(',', $donnees['valeurs']);
550
		$valeurs = implode(',', $donnees['valeurs']);
670
		$etiquettes = implode('|', $donnees['etiquettes']);
551
		$etiquettes = implode('|', $donnees['etiquettes']);
671
		$legendes = implode('|', $donnees['legendes']);
552
		$legendes = implode('|', $donnees['legendes']);
672
 
553
 
673
		// Construire les paramêtres du graph
554
		// Construire les paramêtres du graph
674
		$graph = array('cht' => 'rs',
555
		$graph = array('cht' => 'rs',
675
			'chtt'	=> $titre,
556
			'chtt'	=> $titre,
676
			'chs'	=> '600x300',
557
			'chs'	=> '600x300',
677
			'chco'	=> 'FFFFFF',
558
			'chco'	=> 'FFFFFF',
678
			'chd'	=> 't:'.$valeurs,
559
			'chd'	=> 't:'.$valeurs,
679
			'chds'	=> "0,$total",
560
			'chds'	=> "0,$total",
680
			'chdl'	=> $legendes,
561
			'chdl'	=> $legendes,
681
			'chxt'	=> 'x',
562
			'chxt'	=> 'x',
682
			'chxl'	=> "0:|$etiquettes",
563
			'chxl'	=> "0:|$etiquettes",
683
			//'chxp'	=> '1,0,20,40,60,80,100',// Grille sous forme de cible
564
			//'chxp'	=> '1,0,20,40,60,80,100',// Grille sous forme de cible
684
			'chm'	=> 'B,FF000080,0,1.0,5.0');
565
			'chm'	=> 'B,FF000080,0,1.0,5.0');
685
		return $graph;
566
		return $graph;
686
	}
567
	}
687
	
568
	
688
	private function creerWhereIndicationGeo($champ) {
569
	private function creerWhereIndicationGeo($champ) {
689
		$where = null;
570
		$where = null;
690
		if (isset($champ)) {
571
		if (isset($champ)) {
691
			$where = "$champ != '000null' ".
572
			$where = "$champ != '000null' ".
692
				"AND $champ != '' ".
573
				"AND $champ != '' ".
693
				"AND $champ IS NOT NULL ";
574
				"AND $champ IS NOT NULL ";
694
		}
575
		}
695
		return $where;
576
		return $where;
696
	}
577
	}
697
 
578
 
698
	private function getUtilisationJournaliere($param) {
579
	private function getUtilisationJournaliere($param) {
699
		// Sur quel jour, voulons nous estimer l'utilisation
580
		// Sur quel jour, voulons nous estimer l'utilisation
700
		$aujourdhui = date('Y-m-d');
581
		$aujourdhui = date('Y-m-d');
701
		if (isset($param[0]) && preg_match('/^[0-9]{4}(?:-[0-9]{2}){2}$/', $param[0])) {
582
		if (isset($param[0]) && preg_match('/^[0-9]{4}(?:-[0-9]{2}){2}$/', $param[0])) {
702
			$aujourdhui = $param[0];
583
			$aujourdhui = $param[0];
703
		}
584
		}
704
		$aujourdhui_fmt = strftime('%d %b %Y', strtotime($aujourdhui));
585
		$aujourdhui_fmt = strftime('%d %b %Y', strtotime($aujourdhui));
705
 
586
 
706
		// Récupération des données
587
		// Récupération des données
707
		$max_obs = array();
588
		$max_obs = array();
708
		$max_obs[] = $this->executerRequeteEvol('cel_inventory', 'id', '%Y%m%d',
589
		$max_obs[] = $this->executerRequeteEvol('cel_obs', 'id_observation', '%Y%m%d',
709
			"date_creation NOT LIKE '$aujourdhui%' ", 'date_creation');
590
			"date_creation NOT LIKE '$aujourdhui%' ", 'date_creation');
710
		$max_obs[] = $this->executerRequeteEvol('cel_inventory', 'id', '%Y%m%d',
591
		$max_obs[] = $this->executerRequeteEvol('cel_obs', 'id_observation', '%Y%m%d',
711
			"date_modification NOT LIKE '$aujourdhui%' ", 'date_modification');
592
			"date_modification NOT LIKE '$aujourdhui%' ", 'date_modification');
712
		$max_obs[] = $this->executerRequeteEvol('cel_inventory', 'id', '%Y%m%d',
593
		$max_obs[] = $this->executerRequeteEvol('cel_obs', 'id_observation', '%Y%m%d',
713
			"date_transmission NOT LIKE '$aujourdhui%' ", 'date_transmission');
594
			"date_transmission NOT LIKE '$aujourdhui%' ", 'date_transmission');
714
		$obs_aujourdhui = $this->executerRequeteNombre('cel_inventory', 'id',
595
		$obs_aujourdhui = $this->executerRequeteNombre('cel_obs', 'id_observation',
715
			"(date_creation LIKE '$aujourdhui%'
596
			"(date_creation LIKE '$aujourdhui%'
716
				OR date_modification LIKE '$aujourdhui%'
597
				OR date_modification LIKE '$aujourdhui%'
717
				OR date_transmission LIKE '$aujourdhui%') ");
598
				OR date_transmission LIKE '$aujourdhui%') ");
718
		
599
		
719
		// Cummul des obs crées, modifiées, transmises par jour
600
		// Cummul des obs crées, modifiées, transmises par jour
720
		$donnees = array();
601
		$donnees = array();
721
		foreach ($max_obs as $obs_par_jour) {
602
		foreach ($max_obs as $obs_par_jour) {
722
			foreach ($obs_par_jour as $annee_mois_jour => $nbre) {
603
			foreach ($obs_par_jour as $annee_mois_jour => $nbre) {
723
				if (!isset($donnees[$annee_mois_jour])) {
604
				if (!isset($donnees[$annee_mois_jour])) {
724
					$donnees[$annee_mois_jour] = $nbre;
605
					$donnees[$annee_mois_jour] = $nbre;
725
				} else {
606
				} else {
726
					$donnees[$annee_mois_jour] += $nbre;
607
					$donnees[$annee_mois_jour] += $nbre;
727
				}
608
				}
728
			}
609
			}
729
		}
610
		}
730
 
611
 
731
		// Post traitement des données
612
		// Post traitement des données
732
		$valeur = $obs_aujourdhui;
613
		$valeur = $obs_aujourdhui;
733
		$valeur_max = 400;
614
		$valeur_max = 400;
734
		if ($valeur > $valeur_max) {
615
		if ($valeur > $valeur_max) {
735
			$pourcentage = 100;
616
			$pourcentage = 100;
736
		} else {
617
		} else {
737
			$pourcentage = round(($valeur / ($valeur_max / 100)), 0);
618
			$pourcentage = round(($valeur / ($valeur_max / 100)), 0);
738
		}
619
		}
739
		$etiquettes_x = $aujourdhui_fmt;
620
		$etiquettes_x = $aujourdhui_fmt;
740
		$etiquettes_y = "faible|moyenne|forte";
621
		$etiquettes_y = "faible|moyenne|forte";
741
		$titre = "Intensité d'utilisation pour le $aujourdhui_fmt";
622
		$titre = "Intensité d'utilisation pour le $aujourdhui_fmt";
742
		$legende = "$valeur changements";
623
		$legende = "$valeur changements";
743
 
624
 
744
		// Construire de l'url de l'image
625
		// Construire de l'url de l'image
745
		$graph = array('cht' => 'gom',
626
		$graph = array('cht' => 'gom',
746
			'chtt'	=> $titre,
627
			'chtt'	=> $titre,
747
			'chdl'	=> "$legende",
628
			'chdl'	=> "$legende",
748
			'chdlp'	=> 'b',
629
			'chdlp'	=> 'b',
749
			'chs'	=> '350x200',
630
			'chs'	=> '350x200',
750
			'chco'	=> 'FFFF00,0A7318',
631
			'chco'	=> 'FFFF00,0A7318',
751
			'chls'	=> '3|10',
632
			'chls'	=> '3|10',
752
			'chma'	=> '0,0,0,0|300,40',
633
			'chma'	=> '0,0,0,0|300,40',
753
			'chd'	=> 't:'.$pourcentage,
634
			'chd'	=> 't:'.$pourcentage,
754
			'chxt'	=> 'x,y',
635
			'chxt'	=> 'x,y',
755
			'chxl'	=> '0:|'.$etiquettes_x.'|1:|'.$etiquettes_y.'',
636
			'chxl'	=> '0:|'.$etiquettes_x.'|1:|'.$etiquettes_y.'',
756
			'chxp'	=> '0,50');
637
			'chxp'	=> '0,50');
757
		return $graph;
638
		return $graph;
758
	}
639
	}
759
 
640
 
760
	private function getNbreObsParUtilisateur($param) {
641
	private function getNbreObsParUtilisateur($param) {
761
		// Récupération des données
642
		// Récupération des données
762
		$requete = 	'SELECT identifiant, COUNT(id) AS nbre '.
643
		$requete = 	'SELECT courriel_utilisateur, COUNT(id_observation) AS nbre '.
763
					'FROM cel_inventory '.
644
					'FROM cel_obs '.
764
					'GROUP BY identifiant ';
645
					'GROUP BY courriel_utilisateur ';
765
		$utilisateurs = $this->executerRequete($requete);
646
		$utilisateurs = $this->executerRequete($requete);
766
 
647
 
767
		// Création des classes d'utilisateurs
648
		// Création des classes d'utilisateurs
768
		$classes = array('00->10' => 0, '11->50' => 0, '51->100' => 0, '101->500' => 0, '500->∞' => 0);
649
		$classes = array('00->10' => 0, '11->50' => 0, '51->100' => 0, '101->500' => 0, '500->∞' => 0);
769
		$donnees['Utilisateurs'] = $classes;
650
		$donnees['Utilisateurs'] = $classes;
770
		$valeur_max = 0;
651
		$valeur_max = 0;
771
		foreach ($utilisateurs as $utilisateur) {
652
		foreach ($utilisateurs as $utilisateur) {
772
			$id = $utilisateur['identifiant'];
653
			$id = $utilisateur['courriel_utilisateur'];
773
			$nbre = $utilisateur['nbre'];
654
			$nbre = $utilisateur['nbre'];
774
 
655
 
775
			// Détermination de la classe
656
			// Détermination de la classe
776
			$classe = '';
657
			$classe = '';
777
			if (0 < $nbre && $nbre <= 10) {
658
			if (0 < $nbre && $nbre <= 10) {
778
				$classe = '00->10';
659
				$classe = '00->10';
779
			} else if (10 < $nbre && $nbre <= 50) {
660
			} else if (10 < $nbre && $nbre <= 50) {
780
				$classe = '11->50';
661
				$classe = '11->50';
781
			} else if (50 < $nbre && $nbre <= 100) {
662
			} else if (50 < $nbre && $nbre <= 100) {
782
				$classe = '51->100';
663
				$classe = '51->100';
783
			} else if (100 < $nbre && $nbre <= 500) {
664
			} else if (100 < $nbre && $nbre <= 500) {
784
				$classe = '101->500';
665
				$classe = '101->500';
785
			} else if (500 < $nbre) {
666
			} else if (500 < $nbre) {
786
				$classe = '500->∞';
667
				$classe = '500->∞';
787
			}
668
			}
788
 
669
 
789
			// Détermination du type d'utilisateur
670
			// Détermination du type d'utilisateur
790
			if (strstr($id, '@')) {
671
			if (strstr($id, '@')) {
791
				$type = 'Utilisateurs';
672
				$type = 'Utilisateurs';
792
				// Incrémentation du tableau de données et récupration de la valeur max
673
				// Incrémentation du tableau de données et récupration de la valeur max
793
				$donnees[$type][$classe]++;
674
				$donnees[$type][$classe]++;
794
				if ($donnees[$type][$classe] > $valeur_max) {
675
				if ($donnees[$type][$classe] > $valeur_max) {
795
					$valeur_max = $donnees[$type][$classe];
676
					$valeur_max = $donnees[$type][$classe];
796
				}
677
				}
797
			}
678
			}
798
		}
679
		}
799
 
680
 
800
		// Post traitement des données
681
		// Post traitement des données
801
		$titre = "Nombre d'observations par utilisateur";
682
		$titre = "Nombre d'observations par utilisateur";
802
		$y1_val_fin = $valeur_max;
683
		$y1_val_fin = $valeur_max;
803
		$y1_pas = '100';
684
		$y1_pas = '100';
804
		$valeurs = implode(',', $donnees['Utilisateurs']);
685
		$valeurs = implode(',', $donnees['Utilisateurs']);
805
		$etiquettes_x1 = implode('|', array_keys($classes));
686
		$etiquettes_x1 = implode('|', array_keys($classes));
806
		$etiquettes_x2 = 'Observations';
687
		$etiquettes_x2 = 'Observations';
807
		$etiquettes_y2 = 'Utilisateurs';
688
		$etiquettes_y2 = 'Utilisateurs';
808
		$legendes = implode('|', array_keys($donnees));
689
		$legendes = implode('|', array_keys($donnees));
809
 
690
 
810
		// Construire de l'url de l'image
691
		// Construire de l'url de l'image
811
		$graph = array('cht' => 'bvg',
692
		$graph = array('cht' => 'bvg',
812
			'chtt'	=> $titre,
693
			'chtt'	=> $titre,
813
			'chs'	=> '400x200',
694
			'chs'	=> '400x200',
814
			'chco'	=> '00FF00,FF0000',
695
			'chco'	=> '00FF00,FF0000',
815
			'chbh'	=> 'r,0.3,1',
696
			'chbh'	=> 'r,0.3,1',
816
			'chd'	=> 't:'.$valeurs,
697
			'chd'	=> 't:'.$valeurs,
817
			'chds'	=> "0,$valeur_max",
698
			'chds'	=> "0,$valeur_max",
818
			'chxt'	=> 'x,x,y,y',
699
			'chxt'	=> 'x,x,y,y',
819
			'chxl'	=> '0:|'.$etiquettes_x1.'|1:|'.$etiquettes_x2.'|3:|'.$etiquettes_y2.'',
700
			'chxl'	=> '0:|'.$etiquettes_x1.'|1:|'.$etiquettes_x2.'|3:|'.$etiquettes_y2.'',
820
			'chxp'	=> '1,100|3,100',
701
			'chxp'	=> '1,100|3,100',
821
			'chxr'	=> "2,0,$y1_val_fin,$y1_pas",
702
			'chxr'	=> "2,0,$y1_val_fin,$y1_pas",
822
			'chm'	=> 'h,C3C3C3,0,0.5,1,-1|N,000000,0,0::1,8,1.0,e');
703
			'chm'	=> 'h,C3C3C3,0,0.5,1,-1|N,000000,0,0::1,8,1.0,e');
823
		//echo '<pre>'.print_r($graph,true).'</pre>';
704
		//echo '<pre>'.print_r($graph,true).'</pre>';
824
		return $graph;
705
		return $graph;
825
	}
706
	}
826
 
707
 
827
	private function getNbreObsParUtilisateurEtTest($param) {
708
	private function getNbreObsParUtilisateurEtTest($param) {
828
		// Récupération des données
709
		// Récupération des données
829
		$requete = 	'SELECT identifiant, COUNT(id) AS nbre '.
710
		$requete = 	'SELECT courriel_utilisateur, COUNT(id_observation) AS nbre '.
830
					'FROM cel_inventory '.
711
					'FROM cel_obs '.
831
					'GROUP BY identifiant ';
712
					'GROUP BY courriel_utilisateur ';
832
		$utilisateurs = $this->executerRequete($requete);
713
		$utilisateurs = $this->executerRequete($requete);
833
 
714
 
834
		// Création des classes d'utilisateurs
715
		// Création des classes d'utilisateurs
835
		$classes = array('00->10' => 0, '11->50' => 0, '51->100' => 0, '101->500' => 0, '500->∞' => 0);
716
		$classes = array('00->10' => 0, '11->50' => 0, '51->100' => 0, '101->500' => 0, '500->∞' => 0);
836
		$donnees['Utilisateurs'] = $classes;
717
		$donnees['Utilisateurs'] = $classes;
837
		$donnees['Tests'] = $classes;
718
		$donnees['Tests'] = $classes;
838
		$valeur_max = 0;
719
		$valeur_max = 0;
839
		foreach ($utilisateurs as $utilisateur) {
720
		foreach ($utilisateurs as $utilisateur) {
840
			$id = $utilisateur['identifiant'];
721
			$id = $utilisateur['courriel_utilisateur'];
841
			$nbre = $utilisateur['nbre'];
722
			$nbre = $utilisateur['nbre'];
842
 
723
 
843
			// Détermination de la classe
724
			// Détermination de la classe
844
			$classe = '';
725
			$classe = '';
845
			if (0 < $nbre && $nbre <= 10) {
726
			if (0 < $nbre && $nbre <= 10) {
846
				$classe = '00->10';
727
				$classe = '00->10';
847
			} else if (10 < $nbre && $nbre <= 50) {
728
			} else if (10 < $nbre && $nbre <= 50) {
848
				$classe = '11->50';
729
				$classe = '11->50';
849
			} else if (50 < $nbre && $nbre <= 100) {
730
			} else if (50 < $nbre && $nbre <= 100) {
850
				$classe = '51->100';
731
				$classe = '51->100';
851
			} else if (100 < $nbre && $nbre <= 500) {
732
			} else if (100 < $nbre && $nbre <= 500) {
852
				$classe = '101->500';
733
				$classe = '101->500';
853
			} else if (500 < $nbre) {
734
			} else if (500 < $nbre) {
854
				$classe = '500->∞';
735
				$classe = '500->∞';
855
			}
736
			}
856
 
737
 
857
			// Détermination du type d'utilisateur
738
			// Détermination du type d'utilisateur
858
			if (strstr($id, '@')) {
739
			if (strstr($id, '@')) {
859
				$type = 'Utilisateurs';
740
				$type = 'Utilisateurs';
860
			} else {
741
			} else {
861
				$type = 'Tests';
742
				$type = 'Tests';
862
			}
743
			}
863
 
744
 
864
			// Incrémentation du tableau de données et récupration de la valeur max
745
			// Incrémentation du tableau de données et récupration de la valeur max
865
			$donnees[$type][$classe]++;
746
			$donnees[$type][$classe]++;
866
			if ($donnees[$type][$classe] > $valeur_max) {
747
			if ($donnees[$type][$classe] > $valeur_max) {
867
				$valeur_max = $donnees[$type][$classe];
748
				$valeur_max = $donnees[$type][$classe];
868
			}
749
			}
869
		}
750
		}
870
 
751
 
871
		// Post traitement des données
752
		// Post traitement des données
872
		$titre = "Nombre d'observations par utilisateur et test";
753
		$titre = "Nombre d'observations par utilisateur et test";
873
		$y1_val_fin = $valeur_max;
754
		$y1_val_fin = $valeur_max;
874
		$y1_pas = '100';
755
		$y1_pas = '100';
875
		$valeurs = implode(',', $donnees['Utilisateurs']).'|'.implode(',', $donnees['Tests']);
756
		$valeurs = implode(',', $donnees['Utilisateurs']).'|'.implode(',', $donnees['Tests']);
876
		$etiquettes_x1 = implode('|', array_keys($classes));
757
		$etiquettes_x1 = implode('|', array_keys($classes));
877
		$etiquettes_x2 = 'Observations';
758
		$etiquettes_x2 = 'Observations';
878
		$etiquettes_y2 = 'Utilisateurs';
759
		$etiquettes_y2 = 'Utilisateurs';
879
		$legendes = implode('|', array_keys($donnees));
760
		$legendes = implode('|', array_keys($donnees));
880
 
761
 
881
		// Construire de l'url de l'image
762
		// Construire de l'url de l'image
882
		$graph = array('cht' => 'bvg',
763
		$graph = array('cht' => 'bvg',
883
			'chtt'	=> $titre,
764
			'chtt'	=> $titre,
884
			'chs'	=> '400x200',
765
			'chs'	=> '400x200',
885
			'chco'	=> '00FF00,FF0000',
766
			'chco'	=> '00FF00,FF0000',
886
			'chbh'	=> 'r,0.3,1',
767
			'chbh'	=> 'r,0.3,1',
887
			'chd'	=> 't:'.$valeurs,
768
			'chd'	=> 't:'.$valeurs,
888
			'chds'	=> "0,$valeur_max",
769
			'chds'	=> "0,$valeur_max",
889
			'chxt'	=> 'x,x,y,y',
770
			'chxt'	=> 'x,x,y,y',
890
			'chxl'	=> '0:|'.$etiquettes_x1.'|1:|'.$etiquettes_x2.'|3:|'.$etiquettes_y2.'',
771
			'chxl'	=> '0:|'.$etiquettes_x1.'|1:|'.$etiquettes_x2.'|3:|'.$etiquettes_y2.'',
891
			'chxp'	=> '1,100|3,100',
772
			'chxp'	=> '1,100|3,100',
892
			'chxr'	=> "2,0,$y1_val_fin,$y1_pas",
773
			'chxr'	=> "2,0,$y1_val_fin,$y1_pas",
893
			'chm'	=> 'h,C3C3C3,0,0.5,1,-1|N,000000,0,0::1,8,1.0,e|N,000000,1,0::1,8,1.0,e',
774
			'chm'	=> 'h,C3C3C3,0,0.5,1,-1|N,000000,0,0::1,8,1.0,e|N,000000,1,0::1,8,1.0,e',
894
			'chdl'	=> $legendes,
775
			'chdl'	=> $legendes,
895
			'chdlp'	=> 'b');
776
			'chdlp'	=> 'b');
896
		//echo '<pre>'.print_r($graph,true).'</pre>';
777
		//echo '<pre>'.print_r($graph,true).'</pre>';
897
		return $graph;
778
		return $graph;
898
	}
779
	}
899
 
780
 
900
	private function getNuagePointsObsParHeureEtJourSemaine($param) {
781
	private function getNuagePointsObsParHeureEtJourSemaine($param) {
901
		$utilisateur = isset($_GET['utilisateur']) ? $this->bdd->quote($_GET['utilisateur']) : false;
782
		$utilisateur = isset($_GET['utilisateur']) ? $this->bdd->quote($_GET['utilisateur']) : false;
902
		
783
		
903
		// Récupération des données de la base
784
		// Récupération des données de la base
904
		$requete = 	'SELECT identifiant, DATE_FORMAT(date_creation, "%w-%H") AS periode, (ROUND(LOG10(COUNT(id))) + 1) AS nbre '.
785
		$requete = 	'SELECT courriel_utilisateur, DATE_FORMAT(date_creation, "%w-%H") AS periode, (ROUND(LOG10(COUNT(id_observation))) + 1) AS nbre '.
905
					'FROM cel_inventory '.
786
					'FROM cel_obs '.
906
					'WHERE date_creation != "0000-00-00 00:00:00" '.
787
					'WHERE date_creation != "0000-00-00 00:00:00" '.
907
					'	AND identifiant '.($utilisateur ? "= $utilisateur " : 'LIKE "%@%" ').
788
					'	AND courriel_utilisateur '.($utilisateur ? "= $utilisateur " : 'LIKE "%@%" ').
908
					'GROUP BY periode, identifiant ';
789
					'GROUP BY periode, courriel_utilisateur ';
909
		$infos = $this->executerRequete($requete);
790
		$infos = $this->executerRequete($requete);
910
		
791
		
911
		// Traitement résulat requête
792
		// Traitement résulat requête
912
		$observations = array();
793
		$observations = array();
913
		foreach ($infos as $info) {
794
		foreach ($infos as $info) {
914
			if (isset($observations[$info['periode']])) {
795
			if (isset($observations[$info['periode']])) {
915
				$observations[$info['periode']] += $info['nbre'];
796
				$observations[$info['periode']] += $info['nbre'];
916
			} else {
797
			} else {
917
				$observations[$info['periode']] = $info['nbre'];
798
				$observations[$info['periode']] = $info['nbre'];
918
			}
799
			}
919
		}
800
		}
920
		
801
		
921
		// Postraitement des données
802
		// Postraitement des données
922
		// Jour de la semaine
803
		// Jour de la semaine
923
		$donnees['joursSemaine'] = array();
804
		$donnees['joursSemaine'] = array();
924
		for ($njs = 0; $njs < 7; $njs++) {
805
		for ($njs = 0; $njs < 7; $njs++) {
925
			$donnees['joursSemaine'][] = strftime('%A', strtotime('2010-05-'.(16+$njs)));
806
			$donnees['joursSemaine'][] = strftime('%A', strtotime('2010-05-'.(16+$njs)));
926
		}
807
		}
927
		// Heure
808
		// Heure
928
		$donnees['heures'] = array();
809
		$donnees['heures'] = array();
929
		for ($h = 0; $h < 24; $h++) {
810
		for ($h = 0; $h < 24; $h++) {
930
			$heure_fmt = sprintf('%02s', $h);// Format numérique 00
811
			$heure_fmt = sprintf('%02s', $h);// Format numérique 00
931
			$donnees['heures'][] = strftime('%H', strtotime("0000-00-00 $heure_fmt:00:00"));
812
			$donnees['heures'][] = strftime('%H', strtotime("0000-00-00 $heure_fmt:00:00"));
932
		}
813
		}
933
		// Nbre
814
		// Nbre
934
		$valeur_max = max($observations);
815
		$valeur_max = max($observations);
935
		for ($njs = 0; $njs < 7; $njs++) {
816
		for ($njs = 0; $njs < 7; $njs++) {
936
			for ($h = 0; $h < 24; $h++) {
817
			for ($h = 0; $h < 24; $h++) {
937
				$hfmt = sprintf('%02s', $h);// Format numérique 00
818
				$hfmt = sprintf('%02s', $h);// Format numérique 00
938
				$periode = $njs.'-'.$hfmt;
819
				$periode = $njs.'-'.$hfmt;
939
				$donnees['valeurs_x'][] = round(($h + 1) * (100 / 24), 0);
820
				$donnees['valeurs_x'][] = round(($h + 1) * (100 / 24), 0);
940
				$donnees['valeurs_y'][] = round(($njs + 1) * (100 / 7), 0);
821
				$donnees['valeurs_y'][] = round(($njs + 1) * (100 / 7), 0);
941
				$ps = 0;
822
				$ps = 0;
942
				if (isset($observations[$periode])) {
823
				if (isset($observations[$periode])) {
943
					$ps = round($observations[$periode] * (100 / $valeur_max), 0);
824
					$ps = round($observations[$periode] * (100 / $valeur_max), 0);
944
				}
825
				}
945
				$donnees['valeurs_ps'][] = $ps;
826
				$donnees['valeurs_ps'][] = $ps;
946
			}
827
			}
947
		}
828
		}
948
		//echo '<pre>'.print_r($donnees,true).'</pre>';
829
		//echo '<pre>'.print_r($donnees,true).'</pre>';
949
		// Préparation des paramêtres du graph
830
		// Préparation des paramêtres du graph
950
		$titre = "Nombre de création d'observation|par heure et jour de la semaine";
831
		$titre = "Nombre de création d'observation|par heure et jour de la semaine";
951
		$valeurs = implode(',', $donnees['valeurs_x'])."|".implode(',', $donnees['valeurs_y'])."|".implode(',', $donnees['valeurs_ps']);
832
		$valeurs = implode(',', $donnees['valeurs_x'])."|".implode(',', $donnees['valeurs_y'])."|".implode(',', $donnees['valeurs_ps']);
952
		$etiquettes_x1 = '|'.implode('|', $donnees['heures']);
833
		$etiquettes_x1 = '|'.implode('|', $donnees['heures']);
953
		$etiquettes_x2 = 'Heures';
834
		$etiquettes_x2 = 'Heures';
954
		$etiquettes_y1 = '|'.implode('|', $donnees['joursSemaine']);
835
		$etiquettes_y1 = '|'.implode('|', $donnees['joursSemaine']);
955
		$x_axis_step_size = str_replace(',', '.', (100 / 24));
836
		$x_axis_step_size = str_replace(',', '.', (100 / 24));
956
		$y_axis_step_size = str_replace(',', '.', (100 / 7));
837
		$y_axis_step_size = str_replace(',', '.', (100 / 7));
957
 
838
 
958
		// Construction du tableau des paramêtres du graph
839
		// Construction du tableau des paramêtres du graph
959
		$graph = array('cht' => 's',
840
		$graph = array('cht' => 's',
960
			'chtt'	=> $titre,
841
			'chtt'	=> $titre,
961
			'chs'	=> '400x200',
842
			'chs'	=> '400x200',
962
			'chco'	=> '00FF00',
843
			'chco'	=> '00FF00',
963
			'chd'	=> 't:'.$valeurs,
844
			'chd'	=> 't:'.$valeurs,
964
			'chxt'	=> 'x,x,y',
845
			'chxt'	=> 'x,x,y',
965
			'chxr'	=> "0,-1,23,1|2,-1,6,1",
846
			'chxr'	=> "0,-1,23,1|2,-1,6,1",
966
			'chxp'	=> '1,100',
847
			'chxp'	=> '1,100',
967
			'chxl'	=> '0:|'.$etiquettes_x1.'|1:|'.$etiquettes_x2.'|2:|'.$etiquettes_y1.'',
848
			'chxl'	=> '0:|'.$etiquettes_x1.'|1:|'.$etiquettes_x2.'|2:|'.$etiquettes_y1.'',
968
			'chg'	=> "$x_axis_step_size,$y_axis_step_size,1,5");
849
			'chg'	=> "$x_axis_step_size,$y_axis_step_size,1,5");
969
		//echo '<pre>'.print_r($graph,true).'</pre>';
850
		//echo '<pre>'.print_r($graph,true).'</pre>';
970
		return $graph;
851
		return $graph;
971
	}
852
	}
972
 
853
 
973
	private function getNuagePointsObsAnciennete($param) {
854
	private function getNuagePointsObsAnciennete($param) {
974
		// Récupération des données de la base
855
		// Récupération des données de la base
975
		$requete = 	'SELECT  DISTINCT identifiant , '.
856
		$requete = 	'SELECT  DISTINCT courriel_utilisateur , '.
976
					'	MIN(date_creation) AS date_min, MAX(date_creation) AS date_max, '.
857
					'	MIN(date_creation) AS date_min, MAX(date_creation) AS date_max, '.
977
					'	COUNT(id) AS obs_nbre '.
858
					'	COUNT(id_observation) AS obs_nbre '.
978
					'FROM cel_inventory '.
859
					'FROM cel_obs '.
979
					"WHERE date_creation != '0000-00-00 00:00:00' ".
860
					"WHERE date_creation != '0000-00-00 00:00:00' ".
980
					"	AND identifiant LIKE '%@%' ".
861
					"	AND courriel_utilisateur LIKE '%@%' ".
981
					'GROUP BY identifiant '.
862
					'GROUP BY courriel_utilisateur '.
982
					'ORDER BY date_min ASC ';
863
					'ORDER BY date_min ASC ';
983
		$resultats = $this->executerRequete($requete);
864
		$resultats = $this->executerRequete($requete);
984
 
865
 
985
		// Trie des données
866
		// Trie des données
986
		$max_obs = 0;
867
		$max_obs = 0;
987
		$max_obs_log = 0;
868
		$max_obs_log = 0;
988
		$max_anciennete = 0;
869
		$max_anciennete = 0;
989
		$donnees = array();
870
		$donnees = array();
990
		foreach ($resultats as $enrg) {
871
		foreach ($resultats as $enrg) {
991
			$tps_deb = strtotime($enrg['date_min']);
872
			$tps_deb = strtotime($enrg['date_min']);
992
			$tps_fin = strtotime($enrg['date_max']);
873
			$tps_fin = strtotime($enrg['date_max']);
993
 
874
 
994
			$donnee = array();
875
			$donnee = array();
995
			if (($tps_fin - $tps_deb) == 0) {
876
			if (($tps_fin - $tps_deb) == 0) {
996
				$donnee['anciennete'] = 1;
877
				$donnee['anciennete'] = 1;
997
			} else {
878
			} else {
998
				$donnee['anciennete'] = round((($tps_fin - $tps_deb) / 86400), 0);
879
				$donnee['anciennete'] = round((($tps_fin - $tps_deb) / 86400), 0);
999
			}
880
			}
1000
			$donnee['obs'] = $enrg['obs_nbre'];
881
			$donnee['obs'] = $enrg['obs_nbre'];
1001
			$donnee['obs_log'] = log10($enrg['obs_nbre']);
882
			$donnee['obs_log'] = log10($enrg['obs_nbre']);
1002
			$donnees[] = $donnee;
883
			$donnees[] = $donnee;
1003
 
884
 
1004
			$max_obs_log = ($donnee['obs_log'] > $max_obs_log) ? $donnee['obs_log'] : $max_obs_log;
885
			$max_obs_log = ($donnee['obs_log'] > $max_obs_log) ? $donnee['obs_log'] : $max_obs_log;
1005
			$max_obs = ($donnee['obs'] > $max_obs) ? $donnee['obs'] : $max_obs;
886
			$max_obs = ($donnee['obs'] > $max_obs) ? $donnee['obs'] : $max_obs;
1006
			$max_anciennete = ($donnee['anciennete'] > $max_anciennete) ? $donnee['anciennete'] : $max_anciennete;
887
			$max_anciennete = ($donnee['anciennete'] > $max_anciennete) ? $donnee['anciennete'] : $max_anciennete;
1007
		}
888
		}
1008
 
889
 
1009
		// Postraitement des données
890
		// Postraitement des données
1010
		foreach ($donnees as $donnee) {
891
		foreach ($donnees as $donnee) {
1011
			$donnees['valeurs_x'][] = round($donnee['anciennete'] * (100 / $max_anciennete), 0);
892
			$donnees['valeurs_x'][] = round($donnee['anciennete'] * (100 / $max_anciennete), 0);
1012
			$donnees['valeurs_y'][] = round($donnee['obs_log'] * (100 / $max_obs_log), 0);
893
			$donnees['valeurs_y'][] = round($donnee['obs_log'] * (100 / $max_obs_log), 0);
1013
			$donnees['valeurs_ps'][] = 20;
894
			$donnees['valeurs_ps'][] = 20;
1014
		}
895
		}
1015
 
896
 
1016
		// Échelle log des obs
897
		// Échelle log des obs
1017
		$donnees['echelle_y1'] = array();
898
		$donnees['echelle_y1'] = array();
1018
		$pas = $max_obs_log / 100 ;
899
		$pas = $max_obs_log / 100 ;
1019
		for ($i = 0 ; $i < 5 ; $i++) {
900
		for ($i = 0 ; $i < 5 ; $i++) {
1020
			$donnees['echelle_y1'][] = round(pow(10, (($i*20) * $pas)), 0);
901
			$donnees['echelle_y1'][] = round(pow(10, (($i*20) * $pas)), 0);
1021
		}
902
		}
1022
		$donnees['echelle_y1'][] = $max_obs;
903
		$donnees['echelle_y1'][] = $max_obs;
1023
 
904
 
1024
		//echo '<pre>'.print_r($donnees['valeurs_x'],true).'</pre>';
905
		//echo '<pre>'.print_r($donnees['valeurs_x'],true).'</pre>';
1025
		// Préparation des paramêtres du graph
906
		// Préparation des paramêtres du graph
1026
		$titre = "Répartition des utilisateurs en fonction|du nombre d'observations et de l'ancienneté";
907
		$titre = "Répartition des utilisateurs en fonction|du nombre d'observations et de l'ancienneté";
1027
		$valeurs = implode(',', $donnees['valeurs_x'])."|".implode(',', $donnees['valeurs_y'])."|".implode(',', $donnees['valeurs_ps']);
908
		$valeurs = implode(',', $donnees['valeurs_x'])."|".implode(',', $donnees['valeurs_y'])."|".implode(',', $donnees['valeurs_ps']);
1028
		$etiquettes_x2 = 'Ancienneté en jours';
909
		$etiquettes_x2 = 'Ancienneté en jours';
1029
		$etiquettes_y1 = implode('|', $donnees['echelle_y1']);
910
		$etiquettes_y1 = implode('|', $donnees['echelle_y1']);
1030
		$etiquettes_y2 = 'Observations';
911
		$etiquettes_y2 = 'Observations';
1031
		$x_axis_step_size = $max_anciennete;
912
		$x_axis_step_size = $max_anciennete;
1032
 
913
 
1033
		// Construction du tableau des paramêtres du graph
914
		// Construction du tableau des paramêtres du graph
1034
		$graph = array('cht' => 's',
915
		$graph = array('cht' => 's',
1035
			'chtt'	=> $titre,
916
			'chtt'	=> $titre,
1036
			'chs'	=> '400x200',
917
			'chs'	=> '400x200',
1037
			'chco'	=> '0000FF',
918
			'chco'	=> '0000FF',
1038
			'chxt'	=> 'x,x,y,y',
919
			'chxt'	=> 'x,x,y,y',
1039
			'chd'	=> 't:'.$valeurs,
920
			'chd'	=> 't:'.$valeurs,
1040
			'chxr'	=> "0,0,$x_axis_step_size|2,0,$max_obs",//|2,0,$y_axis_step_size,$pas
921
			'chxr'	=> "0,0,$x_axis_step_size|2,0,$max_obs",//|2,0,$y_axis_step_size,$pas
1041
			'chxp'	=> '1,100|3,100',
922
			'chxp'	=> '1,100|3,100',
1042
			'chm'	=> 'h,C3C3C3,0,-0.2,0.2,-1',
923
			'chm'	=> 'h,C3C3C3,0,-0.2,0.2,-1',
1043
			'chxl'	=> '1:|'.$etiquettes_x2.'|2:|'.$etiquettes_y1.'|3:|'.$etiquettes_y2.'');//
924
			'chxl'	=> '1:|'.$etiquettes_x2.'|2:|'.$etiquettes_y1.'|3:|'.$etiquettes_y2.'');//
1044
		//echo '<pre>'.print_r($graph,true).'</pre>';
925
		//echo '<pre>'.print_r($graph,true).'</pre>';
1045
		return $graph;
926
		return $graph;
1046
	}
927
	}
1047
 
928
 
1048
	private function executerRequeteEvol($table, $champ, $format_date = '%Y%m', $where = null, $champ_date = 'date_creation', $order_by = null, $limit = null) {
929
	private function executerRequeteEvol($table, $champ, $format_date = '%Y%m', $where = null, $champ_date = 'date_creation', $order_by = null, $limit = null) {
1049
		$utilisateur = isset($_GET['utilisateur']) ? $this->bdd->quote($_GET['utilisateur']) : false;
930
		$utilisateur = isset($_GET['utilisateur']) ? $this->bdd->quote($_GET['utilisateur']) : false;
1050
		
931
		
1051
		$requete = 	"SELECT DATE_FORMAT($champ_date, '$format_date') AS periode, COUNT($champ) AS nbre ".
932
		$requete = 	"SELECT DATE_FORMAT($champ_date, '$format_date') AS periode, COUNT($champ) AS nbre ".
1052
					"FROM $table ".
933
					"FROM $table ".
1053
					"WHERE $champ_date != '0000-00-00 00:00:00' ".
934
					"WHERE $champ_date != '0000-00-00 00:00:00' ".
1054
					(($utilisateur != false) ? " AND identifiant = $utilisateur " : '').
935
					(($utilisateur != false) ? " AND courriel_utilisateur = $utilisateur " : '').
1055
					((is_null($where)) ? '' : " AND $where ").
936
					((is_null($where)) ? '' : " AND $where ").
1056
					'GROUP BY periode '.
937
					'GROUP BY periode '.
1057
					((is_null($order_by)) ? '' : "ORDER BY $order_by ");
938
					((is_null($order_by)) ? '' : "ORDER BY $order_by ");
1058
					((is_null($limit)) ? '' : "LIMIT $limit ");
939
					((is_null($limit)) ? '' : "LIMIT $limit ");
-
 
940
 
1059
		$evolution = $this->executerRequete($requete);
941
		$evolution = $this->executerRequete($requete);
1060
 
942
 
1061
		// Traitement du tableau
943
		// Traitement du tableau
1062
		$donnees_traitees = array();
944
		$donnees_traitees = array();
1063
		if ($evolution !== false) {
-
 
1064
			foreach ($evolution as $info) {
945
		foreach ($evolution as $info) {
1065
				$donnees_traitees[$info['periode']] = $info['nbre'];
946
			$donnees_traitees[$info['periode']] = $info['nbre'];
1066
			}
-
 
1067
		}
947
		}
-
 
948
 
1068
		return $donnees_traitees;
949
		return $donnees_traitees;
1069
	}
950
	}
1070
 
951
 
1071
	private function executerRequeteNombre($table, $champ, $where = null) {
952
	private function executerRequeteNombre($table, $champ, $where = null) {
1072
		$utilisateur = null;
953
		$utilisateur = null;
1073
		if (isset($_GET['utilisateur'])) {
954
		if (isset($_GET['utilisateur'])) {
1074
			$utilisateur = $this->bdd->quote($_GET['utilisateur']);
955
			$utilisateur = $this->bdd->quote($_GET['utilisateur']);
1075
			$where = isset($where) ? $where.' AND ' : '';
956
			$where = isset($where) ? $where.' AND ' : '';
1076
			$where .= "identifiant = $utilisateur ";
957
			$where .= "courriel_utilisateur = $utilisateur ";
1077
		}
958
		}
1078
		
959
		
1079
		$requete = 	"SELECT COUNT($champ) AS nbre ".
960
		$requete = 	"SELECT COUNT($champ) AS nbre ".
1080
					"FROM $table ".
961
					"FROM $table ".
1081
					((isset($where)) ? "WHERE $where " : '');
962
					((isset($where)) ? "WHERE $where " : '');
1082
		
963
 
1083
		$nbre = $this->executerRequete($requete, 'Column');
964
		$nbre = $this->executerRequete($requete, 'Column');
1084
		return $nbre;
965
		return $nbre;
1085
	}
966
	}
1086
}
-
 
1087
967
}
-
 
968
?>
-
 
969
1088
970