Subversion Repositories eFlore/Applications.cel

Rev

Rev 1765 | Rev 2462 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1765 Rev 2143
Line 52... Line 52...
52
		}
52
		}
53
	}
53
	}
Line 54... Line 54...
54
 
54
 
55
	private function getEvolImgLieesParMois($param) {
55
	private function getEvolImgLieesParMois($param) {
56
		$utilisateur = isset($_GET['utilisateur']) ? Cel::db()->quote($_GET['utilisateur']) : null;
56
		$utilisateur = isset($_GET['utilisateur']) ? Cel::db()->quote($_GET['utilisateur']) : null;
57
		
57
 
58
		// Récupération des données
58
		// Récupération des données
59
		$requete = 	"SELECT DATE_FORMAT(date_creation, '%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 ".
60
			"FROM cel_obs_images coi LEFT JOIN cel_images ci ON (coi.id_image = ci.id_image) ".
60
			"FROM cel_obs_images coi LEFT JOIN cel_images ci ON (coi.id_image = ci.id_image) ".
61
			"WHERE date_creation != '0000-00-00 00:00:00' ".
61
			"WHERE date_creation != '0000-00-00 00:00:00' ".
62
			((isset($utilisateur)) ? " AND courriel_utilisateur = $utilisateur " : '').
62
			((isset($utilisateur)) ? " AND courriel_utilisateur = $utilisateur " : '').
63
			'GROUP BY periode '.
63
			'GROUP BY periode '.
Line 64... Line 64...
64
			'ORDER BY periode ';
64
			'ORDER BY periode ';
Line 65... Line 65...
65
 
65
 
66
		$resulats = Cel::db()->executerRequete($requete);
66
		$resulats = Cel::db()->requeter($requete);
67
 
67
 
68
		$img_totale = array();
68
		$img_totale = array();
Line 123... Line 123...
123
		return $graph;
123
		return $graph;
124
	}
124
	}
Line 125... Line 125...
125
 
125
 
126
	private function getEvolImgParMois($param) {
126
	private function getEvolImgParMois($param) {
127
		$utilisateur = isset($_GET['utilisateur']) ? Cel::db()->quote($_GET['utilisateur']) : null;
127
		$utilisateur = isset($_GET['utilisateur']) ? Cel::db()->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(date_creation, '%Y%m') AS periode, COUNT(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 date_creation != '0000-00-00 00:00:00' ".
132
			"WHERE date_creation != '0000-00-00 00:00:00' ".
133
			((isset($utilisateur)) ? " AND courriel_utilisateur = $utilisateur " : '').
133
			((isset($utilisateur)) ? " AND courriel_utilisateur = $utilisateur " : '').
134
			'GROUP BY periode '.
134
			'GROUP BY periode '.
Line 135... Line 135...
135
			'ORDER BY periode ';
135
			'ORDER BY periode ';
Line 136... Line 136...
136
 
136
 
137
		$resulats = Cel::db()->executerRequete($requete);
137
		$resulats = Cel::db()->requeter($requete);
138
 
138
 
139
		$img_totale = array();
139
		$img_totale = array();
Line 202... Line 202...
202
					'FROM cel_obs '.
202
					'FROM cel_obs '.
203
					"WHERE date_creation != '0000-00-00 00:00:00' ".
203
					"WHERE date_creation != '0000-00-00 00:00:00' ".
204
					"	AND courriel_utilisateur LIKE '%@%' ".
204
					"	AND courriel_utilisateur LIKE '%@%' ".
205
					'GROUP BY courriel_utilisateur '.
205
					'GROUP BY courriel_utilisateur '.
206
					'ORDER BY date_min ASC ';
206
					'ORDER BY date_min ASC ';
207
		$resultats = Cel::db()->executerRequete($requete);
207
		$resultats = Cel::db()->requeter($requete);
Line 208... Line 208...
208
 
208
 
209
		// 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
210
		$dates = array();
210
		$dates = array();
211
		$annees = array();
211
		$annees = array();
Line 258... Line 258...
258
	private function getEvolObsParMoisGlissant($param) {
258
	private function getEvolObsParMoisGlissant($param) {
259
		// Récupération des données
259
		// Récupération des données
260
		$format_date = '%Y%m%d';
260
		$format_date = '%Y%m%d';
261
		$where = 'date_creation > DATE_SUB(NOW(), INTERVAL 31 DAY)';
261
		$where = 'date_creation > DATE_SUB(NOW(), INTERVAL 31 DAY)';
262
		$obs_totale = $this->executerRequeteEvol('cel_obs', 'id_observation', $format_date, $where);
262
		$obs_totale = $this->executerRequeteEvol('cel_obs', 'id_observation', $format_date, $where);
263
		
263
 
264
		// Tri des dates pour les étiquettes des axes
264
		// Tri des dates pour les étiquettes des axes
265
		$dates = array();
265
		$dates = array();
266
		$annees = array();
266
		$annees = array();
267
		$annees_mois = array();
267
		$annees_mois = array();
268
		$jours = array();
268
		$jours = array();
269
		foreach ($obs_totale as $annee_mois_jours => $nbre) {
269
		foreach ($obs_totale as $annee_mois_jours => $nbre) {
270
			$annee = substr($annee_mois_jours, 0, 4);
270
			$annee = substr($annee_mois_jours, 0, 4);
271
			$mois = substr($annee_mois_jours, 4, 2);
271
			$mois = substr($annee_mois_jours, 4, 2);
272
			$jour = substr($annee_mois_jours, 6, 2);
272
			$jour = substr($annee_mois_jours, 6, 2);
273
			$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));
274
			
274
 
275
			if (!isset($dates[$annee][$mois][$jour])) {
275
			if (!isset($dates[$annee][$mois][$jour])) {
276
				$annees_mois[] = (!isset($dates[$annee][$mois]) ? $annee_mois_fmt_B : '');
276
				$annees_mois[] = (!isset($dates[$annee][$mois]) ? $annee_mois_fmt_B : '');
277
				$jours[] = $jour;
277
				$jours[] = $jour;
278
				// Ajouter au tableau dates tjrs à la fin
278
				// Ajouter au tableau dates tjrs à la fin
279
				$dates[$annee][$mois][$jour] = 1;
279
				$dates[$annee][$mois][$jour] = 1;
280
			}
280
			}
281
		}
281
		}
282
		
282
 
283
		// Post traitement des données
283
		// Post traitement des données
284
		$titre = 'Évolution des observations sur un mois glissant';
284
		$titre = 'Évolution des observations sur un mois glissant';
285
		$valeurs_max = max($obs_totale);
285
		$valeurs_max = max($obs_totale);
286
		$valeurs = implode(',', $obs_totale);
286
		$valeurs = implode(',', $obs_totale);
287
		$y_val_fin = $valeurs_max;
287
		$y_val_fin = $valeurs_max;
Line 301... Line 301...
301
			'chxl'	=>	'1:|'.$etiquettes_y2.'|2:|'.$etiquettes_x1.'|3:|'.$etiquettes_x2,
301
			'chxl'	=>	'1:|'.$etiquettes_y2.'|2:|'.$etiquettes_x1.'|3:|'.$etiquettes_x2,
302
			'chxp'	=>	'0,0|1,50',
302
			'chxp'	=>	'0,0|1,50',
303
			'chxr'	=>	"0,0,$y_val_fin,$y_pas",
303
			'chxr'	=>	"0,0,$y_val_fin,$y_pas",
304
			'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',
305
			'chxs'	=> '0,822013|1,822013');
305
			'chxs'	=> '0,822013|1,822013');
306
		
306
 
307
		return $graph;
307
		return $graph;
308
	}
308
	}
Line 309... Line 309...
309
 
309
 
310
	private function getEvolObsParMois($param) {
310
	private function getEvolObsParMois($param) {
Line 563... Line 563...
563
			'chxl'	=> "0:|$etiquettes",
563
			'chxl'	=> "0:|$etiquettes",
564
			//'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
565
			'chm'	=> 'B,FF000080,0,1.0,5.0');
565
			'chm'	=> 'B,FF000080,0,1.0,5.0');
566
		return $graph;
566
		return $graph;
567
	}
567
	}
568
	
568
 
569
	private function creerWhereIndicationGeo($champ) {
569
	private function creerWhereIndicationGeo($champ) {
570
		$where = null;
570
		$where = null;
571
		if (isset($champ)) {
571
		if (isset($champ)) {
572
			$where = "$champ != '000null' ".
572
			$where = "$champ != '000null' ".
573
				"AND $champ != '' ".
573
				"AND $champ != '' ".
Line 594... Line 594...
594
			"date_transmission NOT LIKE '$aujourdhui%' ", 'date_transmission');
594
			"date_transmission NOT LIKE '$aujourdhui%' ", 'date_transmission');
595
		$obs_aujourdhui = $this->executerRequeteNombre('cel_obs', 'id_observation',
595
		$obs_aujourdhui = $this->executerRequeteNombre('cel_obs', 'id_observation',
596
			"(date_creation LIKE '$aujourdhui%'
596
			"(date_creation LIKE '$aujourdhui%'
597
				OR date_modification LIKE '$aujourdhui%'
597
				OR date_modification LIKE '$aujourdhui%'
598
				OR date_transmission LIKE '$aujourdhui%') ");
598
				OR date_transmission LIKE '$aujourdhui%') ");
599
		
599
 
600
		// Cummul des obs crées, modifiées, transmises par jour
600
		// Cummul des obs crées, modifiées, transmises par jour
601
		$donnees = array();
601
		$donnees = array();
602
		foreach ($max_obs as $obs_par_jour) {
602
		foreach ($max_obs as $obs_par_jour) {
603
			foreach ($obs_par_jour as $annee_mois_jour => $nbre) {
603
			foreach ($obs_par_jour as $annee_mois_jour => $nbre) {
604
				if (!isset($donnees[$annee_mois_jour])) {
604
				if (!isset($donnees[$annee_mois_jour])) {
Line 641... Line 641...
641
	private function getNbreObsParUtilisateur($param) {
641
	private function getNbreObsParUtilisateur($param) {
642
		// Récupération des données
642
		// Récupération des données
643
		$requete = 	'SELECT courriel_utilisateur, COUNT(id_observation) AS nbre '.
643
		$requete = 	'SELECT courriel_utilisateur, COUNT(id_observation) AS nbre '.
644
					'FROM cel_obs '.
644
					'FROM cel_obs '.
645
					'GROUP BY courriel_utilisateur ';
645
					'GROUP BY courriel_utilisateur ';
646
		$utilisateurs = Cel::db()->executerRequete($requete);
646
		$utilisateurs = Cel::db()->requeter($requete);
Line 647... Line 647...
647
 
647
 
648
		// Création des classes d'utilisateurs
648
		// Création des classes d'utilisateurs
649
		$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);
650
		$donnees['Utilisateurs'] = $classes;
650
		$donnees['Utilisateurs'] = $classes;
Line 708... Line 708...
708
	private function getNbreObsParUtilisateurEtTest($param) {
708
	private function getNbreObsParUtilisateurEtTest($param) {
709
		// Récupération des données
709
		// Récupération des données
710
		$requete = 	'SELECT courriel_utilisateur, COUNT(id_observation) AS nbre '.
710
		$requete = 	'SELECT courriel_utilisateur, COUNT(id_observation) AS nbre '.
711
					'FROM cel_obs '.
711
					'FROM cel_obs '.
712
					'GROUP BY courriel_utilisateur ';
712
					'GROUP BY courriel_utilisateur ';
713
		$utilisateurs = Cel::db()->executerRequete($requete);
713
		$utilisateurs = Cel::db()->requeter($requete);
Line 714... Line 714...
714
 
714
 
715
		// Création des classes d'utilisateurs
715
		// Création des classes d'utilisateurs
716
		$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);
717
		$donnees['Utilisateurs'] = $classes;
717
		$donnees['Utilisateurs'] = $classes;
Line 778... Line 778...
778
		return $graph;
778
		return $graph;
779
	}
779
	}
Line 780... Line 780...
780
 
780
 
781
	private function getNuagePointsObsParHeureEtJourSemaine($param) {
781
	private function getNuagePointsObsParHeureEtJourSemaine($param) {
782
		$utilisateur = isset($_GET['utilisateur']) ? Cel::db()->quote($_GET['utilisateur']) : false;
782
		$utilisateur = isset($_GET['utilisateur']) ? Cel::db()->quote($_GET['utilisateur']) : false;
783
		
783
 
784
		// Récupération des données de la base
784
		// Récupération des données de la base
785
		$requete = 	'SELECT courriel_utilisateur, DATE_FORMAT(date_creation, "%w-%H") AS periode, (ROUND(LOG10(COUNT(id_observation))) + 1) AS nbre '.
785
		$requete = 	'SELECT courriel_utilisateur, DATE_FORMAT(date_creation, "%w-%H") AS periode, (ROUND(LOG10(COUNT(id_observation))) + 1) AS nbre '.
786
					'FROM cel_obs '.
786
					'FROM cel_obs '.
787
					'WHERE date_creation != "0000-00-00 00:00:00" '.
787
					'WHERE date_creation != "0000-00-00 00:00:00" '.
788
					'	AND courriel_utilisateur '.($utilisateur ? "= $utilisateur " : 'LIKE "%@%" ').
788
					'	AND courriel_utilisateur '.($utilisateur ? "= $utilisateur " : 'LIKE "%@%" ').
789
					'GROUP BY periode, courriel_utilisateur ';
789
					'GROUP BY periode, courriel_utilisateur ';
790
		$infos = Cel::db()->executerRequete($requete);
790
		$infos = Cel::db()->requeter($requete);
791
		
791
 
792
		// Traitement résulat requête
792
		// Traitement résulat requête
793
		$observations = array();
793
		$observations = array();
794
		foreach ($infos as $info) {
794
		foreach ($infos as $info) {
795
			if (isset($observations[$info['periode']])) {
795
			if (isset($observations[$info['periode']])) {
796
				$observations[$info['periode']] += $info['nbre'];
796
				$observations[$info['periode']] += $info['nbre'];
797
			} else {
797
			} else {
798
				$observations[$info['periode']] = $info['nbre'];
798
				$observations[$info['periode']] = $info['nbre'];
799
			}
799
			}
800
		}
800
		}
801
		
801
 
802
		// Postraitement des données
802
		// Postraitement des données
803
		// Jour de la semaine
803
		// Jour de la semaine
804
		$donnees['joursSemaine'] = array();
804
		$donnees['joursSemaine'] = array();
805
		for ($njs = 0; $njs < 7; $njs++) {
805
		for ($njs = 0; $njs < 7; $njs++) {
Line 859... Line 859...
859
					'FROM cel_obs '.
859
					'FROM cel_obs '.
860
					"WHERE date_creation != '0000-00-00 00:00:00' ".
860
					"WHERE date_creation != '0000-00-00 00:00:00' ".
861
					"	AND courriel_utilisateur LIKE '%@%' ".
861
					"	AND courriel_utilisateur LIKE '%@%' ".
862
					'GROUP BY courriel_utilisateur '.
862
					'GROUP BY courriel_utilisateur '.
863
					'ORDER BY date_min ASC ';
863
					'ORDER BY date_min ASC ';
864
		$resultats = Cel::db()->executerRequete($requete);
864
		$resultats = Cel::db()->requeter($requete);
Line 865... Line 865...
865
 
865
 
866
		// Trie des données
866
		// Trie des données
867
		$max_obs = 0;
867
		$max_obs = 0;
868
		$max_obs_log = 0;
868
		$max_obs_log = 0;
Line 926... Line 926...
926
		return $graph;
926
		return $graph;
927
	}
927
	}
Line 928... Line 928...
928
 
928
 
929
	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) {
930
		$utilisateur = isset($_GET['utilisateur']) ? Cel::db()->quote($_GET['utilisateur']) : false;
930
		$utilisateur = isset($_GET['utilisateur']) ? Cel::db()->quote($_GET['utilisateur']) : false;
931
		
931
 
932
		$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 ".
933
					"FROM $table ".
933
					"FROM $table ".
934
					"WHERE $champ_date != '0000-00-00 00:00:00' ".
934
					"WHERE $champ_date != '0000-00-00 00:00:00' ".
935
					(($utilisateur != false) ? " AND courriel_utilisateur = $utilisateur " : '').
935
					(($utilisateur != false) ? " AND courriel_utilisateur = $utilisateur " : '').
936
					((is_null($where)) ? '' : " AND $where ").
936
					((is_null($where)) ? '' : " AND $where ").
937
					'GROUP BY periode '.
937
					'GROUP BY periode '.
938
					((is_null($order_by)) ? '' : "ORDER BY $order_by ");
938
					((is_null($order_by)) ? '' : "ORDER BY $order_by ");
Line 939... Line 939...
939
					((is_null($limit)) ? '' : "LIMIT $limit ");
939
					((is_null($limit)) ? '' : "LIMIT $limit ");
Line 940... Line 940...
940
 
940
 
941
		$evolution = Cel::db()->executerRequete($requete);
941
		$evolution = Cel::db()->requeter($requete);
942
 
942
 
943
		// Traitement du tableau
943
		// Traitement du tableau
Line 954... Line 954...
954
		if (isset($_GET['utilisateur'])) {
954
		if (isset($_GET['utilisateur'])) {
955
			$utilisateur = Cel::db()->quote($_GET['utilisateur']);
955
			$utilisateur = Cel::db()->quote($_GET['utilisateur']);
956
			$where = isset($where) ? $where.' AND ' : '';
956
			$where = isset($where) ? $where.' AND ' : '';
957
			$where .= "courriel_utilisateur = $utilisateur ";
957
			$where .= "courriel_utilisateur = $utilisateur ";
958
		}
958
		}
959
		
959
 
960
		$requete = 	"SELECT COUNT($champ) AS nbre ".
960
		$requete = 	"SELECT COUNT($champ) AS nbre ".
961
					"FROM $table ".
961
					"FROM $table ".
962
					((isset($where)) ? "WHERE $where " : '');
962
					((isset($where)) ? "WHERE $where " : '');
Line 963... Line 963...
963
 
963
 
964
		$nbre = Cel::db()->executerRequete($requete, 'Column');
964
		$nbre = Cel::db()->requeterValeurUnique($requete);
965
		return $nbre;
965
		return $nbre;
966
	}
966
	}
967
}
967
}
968
?>
968
?>