Subversion Repositories eFlore/Applications.cel

Rev

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

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