Subversion Repositories Sites.obs-saisons.fr

Rev

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

Rev 327 Rev 330
Line 44... Line 44...
44
    	$this->type_mime = 'application/json';
44
    	$this->type_mime = 'application/json';
Line 45... Line 45...
45
 
45
 
46
    	return $donnees_formatees;
46
    	return $donnees_formatees;
Line -... Line 47...
-
 
47
    }
-
 
48
 
-
 
49
		public function getExportEvolutionPhenologiqueJson() {
-
 
50
 
-
 
51
				$evenements = explode(',', $_GET['evenements']);
-
 
52
				$condition_evenements = '';
-
 
53
				$sous_condition_evenements = [];
-
 
54
				foreach($evenements as $evenement) {
-
 
55
					$sous_condition_evenements[] = 'oo_ce_evenement = '.$this->proteger($evenement);
-
 
56
				}
-
 
57
				$condition_evenements .= '('.implode(' OR ', $sous_condition_evenements).')';
-
 
58
				$condition_espece = 'oi_ce_espece = '.$this->proteger($_GET['espece']);
-
 
59
 
-
 
60
				$formule_moyenne_date = 'FROM_UNIXTIME(AVG(UNIX_TIMESTAMP((oo_date))))';
-
 
61
 
-
 
62
				$requete = 'SELECT '.$formule_moyenne_date.' as date_moyenne, oo_ce_evenement FROM ods_observations oo '.
-
 
63
										'LEFT JOIN ods_individus oi ON oi_id_individu = oo_ce_individu '.
-
 
64
										'INNER JOIN ods_especes oe ON oe.oe_espece_active = 1 '.
-
 
65
										'AND oe.oe_id_espece = oi_ce_espece '.
-
 
66
										'WHERE oo_date != "0000-00-00" AND DAY(oo_date) != "00" '.
-
 
67
										'AND '.$condition_espece.' '.
-
 
68
										'AND '.$condition_evenements.' '.
-
 
69
										'AND oo_ce_participant != "4" AND oo_ce_participant != 1 AND oo_absence_evenement = "0" '.
-
 
70
										'GROUP BY YEAR(oo_date), oo_ce_evenement '.
-
 
71
										'ORDER BY oo_date DESC';
-
 
72
 
-
 
73
				$donnees = $this->executerRequete($requete);
-
 
74
 
-
 
75
				$donnees_formatees = [];
-
 
76
				foreach($donnees as $donnee) {
-
 
77
					$stade = $donnee['oo_ce_evenement'];
-
 
78
					if(empty($donnees_formatees[$stade])) {
-
 
79
						$donnees_formatees[$stade] = ['x' => [], 'y' => []];
-
 
80
					}
-
 
81
 
-
 
82
					$date_time = strtotime($donnee['date_moyenne']);
-
 
83
					// on ramène grossièrement la date de l'année à une valeur numérique
-
 
84
					// ex: le 15 janvier devient 1.5
-
 
85
					$nb_jours_dans_mois = date(' t ', strtotime($date_time));
-
 
86
					$jour_mois_num = (date('d', $date_time)/$nb_jours_dans_mois)+date('m', $date_time);
-
 
87
 
-
 
88
					$donnees_formatees[$stade]['x'][] = $donnee['date_moyenne'];
-
 
89
					$donnees_formatees[$stade]['y'][] = $jour_mois_num;
-
 
90
					$donnees_formatees[$stade]['text'][] = date('d/m/Y', strtotime($donnee['date_moyenne']));
-
 
91
				}
-
 
92
 
-
 
93
				$this->type_mime = 'application/json';
-
 
94
 
-
 
95
				return $donnees_formatees;
-
 
96
		}
-
 
97
 
-
 
98
		public function getExportPhasesPhenologiquesJson() {
-
 
99
 
-
 
100
			$evenements = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_EVENEMENTS);
-
 
101
			$evenements_a_regrouper = [];
-
 
102
 
-
 
103
			foreach($evenements as $evenement) {
-
 
104
				$nom_evenement = $evenement['ot_cle'];
-
 
105
				$nom_evenement_tab = explode('_', $nom_evenement);
-
 
106
 
-
 
107
				// évènement à plusieurs stades (evenement_floraison_stade_11 par exemple)
-
 
108
				if(count($nom_evenement_tab) == 4) {
-
 
109
					// on fait pointer la clé de l'évènement vers sont groupe (dans l'exemple floraison)
-
 
110
					$evenements_a_regrouper[$evenement['ot_id_triple']] = $nom_evenement_tab[1];
-
 
111
				} else {
-
 
112
					// sinon ce sont des evènements à un seul stade (comme premiere_apparition)
-
 
113
					// auquel cas on supprime juste le suffixe evenement_
-
 
114
					$evenements_a_regrouper[$evenement['ot_id_triple']] = str_replace('evenement_', '',$nom_evenement);
-
 
115
				}
-
 
116
			}
-
 
117
 
-
 
118
			$requete = 'SELECT oo_date, oo_ce_evenement FROM ods_observations oo '.
-
 
119
									'LEFT JOIN ods_individus oi ON oi_id_individu = oo_ce_individu '.
-
 
120
									'INNER JOIN ods_especes oe ON oe.oe_espece_active = 1 '.
-
 
121
									'AND oe.oe_id_espece = oi_ce_espece '.
-
 
122
									'WHERE oo_date != "0000-00-00" AND DAY(oo_date) != "00" '.
-
 
123
									'AND YEAR(oo_date) = '.$this->proteger($_GET['annee']).' '.
-
 
124
									'AND oi_ce_espece = '.$this->proteger($_GET['espece']).' '.
-
 
125
									'AND oo_ce_participant != "4" AND oo_ce_participant != 1 AND oo_absence_evenement = "0" '.
-
 
126
									'ORDER BY oo_date DESC';
-
 
127
 
-
 
128
			$donnees = $this->executerRequete($requete);
-
 
129
 
-
 
130
			$donnees_formatees = [];
-
 
131
			// Regroupement d'évenements allant ensemble (ex.: début et fin de floraison)
-
 
132
			foreach($donnees as $donnee) {
-
 
133
				$cle_groupe_evenements = $evenements_a_regrouper[$donnee['oo_ce_evenement']];
-
 
134
				if(empty($donnees_formatees[$cle_groupe_evenements])) {
-
 
135
					$donnees_formatees[$cle_groupe_evenements] = [];
-
 
136
				}
-
 
137
 
-
 
138
				$date_time = strtotime($donnee['oo_date']);
-
 
139
				// on ramène la date de l'année à une valeur numérique
-
 
140
				// ex: le 15 janvier devient 1.5 pour pouvoir afficher ça plus simplement
-
 
141
				// sur le graphique d'arrivée qui n'aura à travailler qu'avec des nombres
-
 
142
				$nb_jours_dans_mois = date(' t ', strtotime($date_time));
-
 
143
				$jour_mois_num = (date('d', $date_time)/$nb_jours_dans_mois)+date('m', $date_time);
-
 
144
				// on garde 7 chiffres après la virgule car côté client on a besoin de s'assurer d'une largeur
-
 
145
				// suffisante lors du calcul de la légende de chaque point.
-
 
146
				// En fait la largeur du nombre détermine la largeur de son conteneur affiché lorsdu hover sur le point,
-
 
147
				// or il est nécessaire de remplacer cette légende lors de l'affichage (qui contient un nombre) par une vraie date.
-
 
148
				$jour_mois_num = number_format($jour_mois_num, 7);
-
 
149
 
-
 
150
				$donnees_formatees[$cle_groupe_evenements]['x'][] = $jour_mois_num;
-
 
151
				$donnees_formatees[$cle_groupe_evenements]['text'][] = date('d/m/Y', strtotime($donnee['oo_date']));
-
 
152
 
-
 
153
 
-
 
154
				$donnees_formatees[$cle_groupe_evenements]['text_index']["'".$jour_mois_num."'"] = date('d/m/Y', strtotime($donnee['oo_date']));
-
 
155
			}
-
 
156
 
-
 
157
			$this->type_mime = 'application/json';
-
 
158
 
-
 
159
			return $donnees_formatees;
47
    }
160
		}
Line 48... Line 161...
48
 
161
 
49
    public function getExportStation($start = null,$limit = null, $order_by = 'oo_date') {
162
    public function getExportStation($start = null,$limit = null, $order_by = 'oo_date') {
50
 
163
 
Line 229... Line 342...
229
 
342
 
230
				case 'evenement':
343
				case 'evenement':
231
					$condition .= 'oo_ce_evenement = '.$this->proteger($valeur);
344
					$condition .= 'oo_ce_evenement = '.$this->proteger($valeur);
Line -... Line 345...
-
 
345
				break;
-
 
346
 
-
 
347
				case 'evenements':
-
 
348
					//$condition .= 'oo_ce_evenement IN ('.$this->proteger($valeur).')';
-
 
349
					$evenements = explode(',', $valeur);
-
 
350
					$sous_condition_evenements = [];
-
 
351
					foreach($evenements as $evenement) {
-
 
352
						$sous_condition_evenements[] = 'oo_ce_evenement = '.$this->proteger($evenement);
-
 
353
					}
-
 
354
					$condition .= '('.implode(' OR ', $sous_condition_evenements).')';
232
				break;
355
				break;
233
 
356
 
234
				case 'utilisateur':
357
				case 'utilisateur':
Line 235... Line 358...
235
					$condition .= 'oo_ce_participant = '.$this->proteger($valeur);
358
					$condition .= 'oo_ce_participant = '.$this->proteger($valeur);