Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 792 Rev 840
Line 25... Line 25...
25
class CelWidgetMap extends Cel {
25
class CelWidgetMap extends Cel {
Line 26... Line 26...
26
	
26
	
27
	/**
27
	/**
28
	 * Méthode appelée avec une requête de type GET.
28
	 * Méthode appelée avec une requête de type GET.
29
	 */
29
	 */
30
	public function getElement($params) {
30
	public function getElement($ressources) {
31
		$retour = null;
-
 
32
		$parametres = $this->traiterParametres(array('carte'), $params, false);
31
		$retour = null;
Line -... Line 32...
-
 
32
		extract($this->parametres);
33
		extract($parametres);
33
		
34
		
34
		$action = array_shift($ressources);
35
		if (isset($carte)) {
35
		if (isset($action)) {
36
			$methode = $this->traiterNomMethodeGet($carte);
-
 
37
			if (method_exists($this, $methode)) {
36
			$methode = $this->traiterNomMethodeGet($action);
38
				array_shift($params);
37
			if (method_exists($this, $methode)) {
39
				$retour = $this->$methode($params);
38
				$retour = $this->$methode($ressources);
40
			} else {
39
			} else {
41
				$this->messages[] = "Ce type de carte '$methode' n'est pas disponible.";
40
				$this->messages[] = "Ce type de ressource '$methode' n'est pas disponible.";
42
			}
41
			}
43
		} else {
42
		} else {
Line 44... Line 43...
44
			$this->messages[] = "Vous devez indiquer le type de carte.";
43
			$this->messages[] = "Vous devez indiquer le type de ressource.";
45
		}
44
		}
46
 
45
 
Line 59... Line 58...
59
	/**
58
	/**
60
	 * Données de la carte par défaut
59
	 * Données de la carte par défaut
61
	 */
60
	 */
62
	public function getCarteDefautJson($params) {
61
	public function getCarteDefautJson($params) {
63
		$json = null;
62
		$json = null;
64
		$parametres = $this->traiterParametres(array('utilisateur', 'projet', 'dept', 'num_taxon'), $params, false);
-
 
65
		extract($parametres);
63
		extract($this->parametres);
66
		$dept = $this->traiterValeursMultiples($dept);
64
		$dept = $this->traiterValeursMultiples($dept);
Line -... Line 65...
-
 
65
		
-
 
66
		$clause_from = 	'cel_inventory AS i '.
-
 
67
                    	'   LEFT JOIN locations AS l '.
-
 
68
                    	'       ON (l.name = i.location AND l.code = i.id_location)';
-
 
69
		$clause_where = "transmission = '1' ".
-
 
70
                    (!$this->etreNull($utilisateur) ? " AND identifiant = |$utilisateur| " : '' ).
-
 
71
                    (!$this->etreNull($dept) ? " AND l.code IN ($dept) " : '').
-
 
72
                    (!$this->etreNull($num_taxon) ? " AND num_taxon = |$num_taxon| " : '' ).
-
 
73
                    (!$this->etreNull($commune) ? " AND location LIKE |$commune| " : '' ).
-
 
74
                    (!$this->etreNull($projet) ? ' AND ('.$this->getSqlWhereProjet($projet).') ' : '' );
67
		
75
		
68
		$requete =  'SELECT sector, x_utm, y_utm '.
76
		$requete =  'SELECT sector, x_utm, y_utm '.
69
                    'FROM cel_inventory AS i '.
-
 
70
                    '   LEFT JOIN locations AS l '.
-
 
71
                    "       ON (l.name = i.location AND l.code = i.id_location) ".
77
                    "FROM $clause_from ".
72
                    "WHERE transmission = '1' ".
-
 
73
                    (isset($utilisateur) ? " AND identifiant = '$utilisateur' " : '' ).
-
 
74
                    (isset($dept) ? " AND l.code IN ($dept) " : '').
-
 
75
                    (isset($num_taxon) ? " AND num_taxon = '$num_taxon' " : '' ).
-
 
76
                    (isset($projet) ? ' AND ('.$this->getSqlWhereProjet($projet).') ' : '' );
78
                    "WHERE $clause_where";
Line 77... Line 79...
77
                    $resultats = $this->executerRequete($requete);
79
		$resultats = $this->requeter($requete);
78
		
80
		
79
		// Traitement des résultats
81
		// Traitement des résultats
-
 
82
		$mm = null;
80
		$mm = null;
83
		$stations = array();
81
		$points = array();
84
		if ($resultats !== false) {
82
		foreach ($resultats as $enrg) {
85
			foreach ($resultats as $enrg) {
83
			if ($enrg['x_utm'] != null && $enrg['y_utm'] != null) {
86
				if ($enrg['x_utm'] != null && $enrg['y_utm'] != null) {
84
				$convertisseur = new gPoint();
87
					$convertisseur = new gPoint();
85
				$convertisseur->setUTM($enrg['x_utm'], $enrg['y_utm'], $enrg['sector']);
88
					$convertisseur->setUTM($enrg['x_utm'], $enrg['y_utm'], $enrg['sector']);
86
				$convertisseur->convertTMtoLL();
89
					$convertisseur->convertTMtoLL();
87
				$enrg['coord_x'] = $convertisseur->Lat();
90
					$enrg['coord_x'] = $convertisseur->Lat();
88
				$enrg['coord_y'] = $convertisseur->Long();
91
					$enrg['coord_y'] = $convertisseur->Long();
89
				$enrg['id'] = 'UTM:'.$enrg['x_utm'].'-'.$enrg['y_utm'].'-'.$enrg['sector'];
92
					$enrg['id'] = 'UTM:'.$enrg['x_utm'].'-'.$enrg['y_utm'].'-'.$enrg['sector'];
90
				
93
					
91
				$id = $enrg['coord_x'].'-'.$enrg['coord_y'];
94
					$id = $enrg['coord_x'].'-'.$enrg['coord_y'];
92
				if (!isset($points[$id])) {
95
					if (!isset($stations[$id])) {
93
					$points[$id] = $enrg;
96
						$stations[$id] = $enrg;
94
					$points[$id]['nbre'] = 1;
97
						$stations[$id]['nbre'] = 1;
95
				} else {
98
					} else {
96
					$points[$id]['nbre']++;
99
						$stations[$id]['nbre']++;
97
				}
100
					}
98
	
101
		
99
				// Détermination x et y min et max
102
					// Détermination x et y min et max
100
				if (is_null($mm)) {
103
					if (is_null($mm)) {
101
					$mm = array('min_x' => $enrg['coord_x'],
104
						$mm = array('min_x' => $enrg['coord_x'],
102
						'max_x' => $enrg['coord_x'],
105
							'max_x' => $enrg['coord_x'],
103
						'min_y' => $enrg['coord_y'],
106
							'min_y' => $enrg['coord_y'],
104
						'max_y' => $enrg['coord_y']);
107
							'max_y' => $enrg['coord_y']);
105
				} else {
108
					} else {
106
					$mm['min_x'] = ($mm['min_x'] > $enrg['coord_x']) ? $enrg['coord_x'] : $mm['min_x'];
109
						$mm['min_x'] = ($mm['min_x'] > $enrg['coord_x']) ? $enrg['coord_x'] : $mm['min_x'];
107
					$mm['min_y'] = ($mm['min_y'] > $enrg['coord_y']) ? $enrg['coord_y'] : $mm['min_y'];
110
						$mm['min_y'] = ($mm['min_y'] > $enrg['coord_y']) ? $enrg['coord_y'] : $mm['min_y'];
-
 
111
						$mm['max_x'] = ($mm['max_x'] < $enrg['coord_x']) ? $enrg['coord_x'] : $mm['max_x'];
108
					$mm['max_x'] = ($mm['max_x'] < $enrg['coord_x']) ? $enrg['coord_x'] : $mm['max_x'];
112
						$mm['max_y'] = ($mm['max_y'] < $enrg['coord_y']) ? $enrg['coord_y'] : $mm['max_y'];
109
					$mm['max_y'] = ($mm['max_y'] < $enrg['coord_y']) ? $enrg['coord_y'] : $mm['max_y'];
113
					}
110
				}
114
				}
111
			}
115
			}
-
 
116
		}
-
 
117
		$stations = array_values($stations);
-
 
118
		
-
 
119
		$requete =  'SELECT COUNT(id) AS nbre '.
-
 
120
                    "FROM $clause_from ".
Line 112... Line 121...
112
		}
121
                    "WHERE $clause_where ";
113
		$points = array_values($points);
122
		$obs_nbre = (int) $this->requeter($requete, Cel::SQL_RETOUR_COLONNE);
114
 
123
 
Line 115... Line 124...
115
		// Création des infos du widget
124
		// Création des infos du widget
116
		$json['type'] = (isset($this->formatRetour)) ? $this->formatRetour : 'json';
125
		$json['type'] = (isset($this->formatRetour)) ? $this->formatRetour : 'json';
-
 
126
		$json['variable_js'] = 'obs';
117
		$json['variable_js'] = 'obs';
127
		
118
		
128
		$json['donnees']['points'] = $stations;
119
		$json['donnees']['points'] = $points;
-
 
120
		$json['donnees']['nombre'] = count($points);
-
 
121
		$json['donnees']['centre_x'] = $mm['min_x'].'-'.$mm['max_x'];
-
 
122
		$json['donnees']['centre_y'] = $mm['min_y'].'-'.$mm['max_y'];
129
		$json['donnees']['stats']['communes'] = count($stations);
123
 
130
		$json['donnees']['stats']['observations'] = $obs_nbre;
Line 124... Line 131...
124
 
131
		$json['donnees']['centre_x'] = $mm['min_x'].'-'.$mm['max_x'];
125
		//echo '<pre>'.print_r($json, true).'</pre>';
132
		$json['donnees']['centre_y'] = $mm['min_y'].'-'.$mm['max_y'];
126
		return $json;
133
		return $json;
127
	}
134
	}
128
	
135
	
129
	/**
-
 
130
	 * Données pour l'affichage des obs d'une station
136
	/**
131
	 */
137
	 * Données pour l'affichage des obs d'une station
Line 132... Line 138...
132
	public function getObservations($params) {
138
	 */
133
		$json = null;
139
	public function getObservations($params) {
134
		$parametres = $this->traiterParametres(array('station', 'utilisateur', 'projet', 'dept', 'num_taxon'), $params, false);
140
		$json = null;
135
		extract($parametres);
141
		extract($this->parametres);
136
		$dept = $this->traiterValeursMultiples($dept);
142
		$dept = $this->traiterValeursMultiples($dept);
137
		
143
		
138
		// Récupération des coordonnées depuis l'id station
144
		// Récupération des coordonnées depuis l'id station
Line 154... Line 160...
154
					'	sector, x_utm, y_utm, insee_code '.
160
					'	sector, x_utm, y_utm, insee_code '.
155
					'FROM cel_inventory AS i '.
161
					'FROM cel_inventory AS i '.
156
					'	LEFT JOIN locations AS l '.
162
					'	LEFT JOIN locations AS l '.
157
					"		ON (l.name = i.location AND l.code = i.id_location) ".
163
					"		ON (l.name = i.location AND l.code = i.id_location) ".
158
					"WHERE transmission = '1' ".
164
					"WHERE transmission = '1' ".
159
					(($type == 'UTM') ? "	AND (sector = '$secteur' AND x_utm = '$x_utm' AND y_utm = '$y_utm' ) " : '').
165
					(($type == 'UTM') ? "	AND (sector = |$secteur| AND x_utm = |$x_utm| AND y_utm = |$y_utm| ) " : '').
160
					(($type == 'LngLat') ? "	AND (coord_x = '$coord_x' AND coord_y = '$coord_y' ) " : '').
166
					(($type == 'LngLat') ? "	AND (coord_x = |$coord_x| AND coord_y = |$coord_y| ) " : '').
161
					(isset($utilisateur) ? " AND identifiant = '$utilisateur' " : '').
167
					(isset($utilisateur) ? " AND identifiant = |$utilisateur| " : '').
162
					(isset($dept) ? " AND l.code IN ($dept) " : '').
-
 
163
                    (isset($num_taxon) ? " AND num_taxon = '$num_taxon' " : '' ).
168
                    (isset($num_taxon) ? " AND num_taxon = |$num_taxon| " : '' ).
164
                    ((isset($projet) && $projet_sql != '') ? " AND ($projet_sql) " : '' ).
169
                    ((isset($projet) && $projet_sql != '') ? " AND ($projet_sql) " : '' ).
165
                    'ORDER BY nom_sel ASC ';
170
                    'ORDER BY nom_sel ASC '.
166
                    
-
 
-
 
171
                    "LIMIT {$this->start},{$this->limit} ";
167
		//$this->debug[] = $requete;
172
		$this->debug[] = $requete;
168
 
-
 
169
		$resultats = $this->executerRequete($requete);
173
		$resultats = $this->requeter($requete);
Line 170... Line 174...
170
		
174
		
171
		// Post-traitement
175
		// Post-traitement
172
		if (is_array($resultats)) {
176
		if (is_array($resultats)) {
173
			$resultats = $this->nettoyerTableau($resultats);
177
			$resultats = $this->nettoyerTableau($resultats);
Line 174... Line 178...
174
		}
178
		}
175
		
179
		
Line 176... Line 180...
176
		return $resultats;
180
		return $resultats;
-
 
181
	}
-
 
182
	
-
 
183
	/**
-
 
184
	 * Nombre d'obs d'une station
-
 
185
	 */
-
 
186
	public function getObservationsNombre($params) {
-
 
187
		$json = null;
-
 
188
		extract($this->parametres);
-
 
189
		$dept = $this->traiterValeursMultiples($dept);
-
 
190
		
-
 
191
		// Récupération des coordonnées depuis l'id station
-
 
192
		$this->debug[] = $station;
-
 
193
		list($type, $coord) = explode(':', $station);
-
 
194
		if ($type == 'UTM') {
-
 
195
			list($x_utm, $y_utm, $secteur) = explode('-', $coord);
-
 
196
		} else if ($type == 'LngLat') {
-
 
197
			list($coord_y, $coord_x) = explode('-', $coord);
-
 
198
		}
-
 
199
		
-
 
200
		// Récupération du filtre where pour les mots clés "projet"
-
 
201
		if (isset($projet)) {
-
 
202
			$projet_sql = $this->getSqlWhereProjet($projet);
-
 
203
		}
-
 
204
 
-
 
205
		$requete = 	'SELECT COUNT(id) AS nbre '.
-
 
206
					'FROM cel_inventory AS i '.
-
 
207
					'	LEFT JOIN locations AS l '.
-
 
208
					'		ON (l.name = i.location AND l.code = i.id_location) '.
-
 
209
					"WHERE transmission = '1' ".
-
 
210
					(($type == 'UTM') ? "	AND (sector = |$secteur| AND x_utm = |$x_utm| AND y_utm = |$y_utm| ) " : '').
-
 
211
					(($type == 'LngLat') ? "	AND (coord_x = |$coord_x| AND coord_y = |$coord_y| ) " : '').
-
 
212
					(isset($utilisateur) ? " AND identifiant = |$utilisateur| " : '').
-
 
213
                    (isset($num_taxon) ? " AND num_taxon = |$num_taxon| " : '' ).
-
 
214
                    ((isset($projet) && $projet_sql != '') ? " AND ($projet_sql) " : '' );
-
 
215
		
-
 
216
		$nbre = $this->requeter($requete, Cel::SQL_RETOUR_COLONNE);
-
 
217
		
-
 
218
		return $nbre;
177
	}
219
	}
178
	
220
	
179
	/**
221
	/**
180
	 * Liste des taxons présents sur la carte
222
	 * Liste des taxons présents sur la carte
181
	 */
-
 
182
	public function getTaxons($params) {
223
	 */
183
		$json = null;
224
	public function getTaxons($params) {
184
		$parametres = $this->traiterParametres(array('utilisateur', 'projet', 'dept', 'num_taxon'), $params, false);
225
		$json = null;
185
		extract($parametres);
226
		extract($this->parametres);
186
		$dept = $this->traiterValeursMultiples($dept);
227
		$dept = $this->traiterValeursMultiples($dept);
187
		// Récupération du filtre where pour les mots clés "projet"
228
		// Récupération du filtre where pour les mots clés "projet"
Line 192... Line 233...
192
		$requete = 	'SELECT DISTINCT nom_sel, num_nom_sel, nom_ret, num_nom_ret, num_taxon, famille '.
233
		$requete = 	'SELECT DISTINCT nom_sel, num_nom_sel, nom_ret, num_nom_ret, num_taxon, famille '.
193
					'FROM cel_inventory AS i '.
234
					'FROM cel_inventory AS i '.
194
					'	LEFT JOIN locations AS l '.
235
					'	LEFT JOIN locations AS l '.
195
					"		ON (l.name = i.location AND l.code = i.id_location) ".
236
					"		ON (l.name = i.location AND l.code = i.id_location) ".
196
					"WHERE transmission = '1' ".
237
					"WHERE transmission = '1' ".
197
					(isset($utilisateur) ? " AND identifiant = '$utilisateur' " : '').
238
					(!$this->etreNull($utilisateur) ? " AND identifiant = '$utilisateur' " : '').
-
 
239
					(!$this->etreNull($num_taxon) ? " AND num_taxon = '$num_taxon' " : '' ).
198
					(isset($dept) ? " AND l.code IN ($dept) " : '').
240
					(!$this->etreNull($dept) ? " AND l.code IN ($dept) " : '').
199
                    (isset($num_taxon) ? " AND num_taxon = '$num_taxon' " : '' ).
241
					(!$this->etreNull($commune) ? " AND location LIKE |$commune| " : '' ).
200
                    ((isset($projet) && $projet_sql != '') ? " AND ($projet_sql) " : '' ).
242
                    ((!$this->etreNull($projet) && $projet_sql != '') ? " AND ($projet_sql) " : '' ).
201
                    'ORDER BY nom_ret ASC ';
243
                    'ORDER BY nom_ret ASC ';
202
		//$this->debug[] = $requete;
244
		$this->debug[] = $requete;
Line 203... Line 245...
203
 
245
 
Line 204... Line 246...
204
		$resultats = $this->executerRequete($requete);
246
		$resultats = $this->executerRequete($requete);
205
		
247
		
Line 235... Line 277...
235
			$this->messages[] = "Aucune observation ne correspond à ce mot clé.";
277
			$this->messages[] = "Aucune observation ne correspond à ce mot clé.";
236
		}
278
		}
Line 237... Line 279...
237
		
279
		
238
		$sql = implode(" \nOR ", $requete_projet);
280
		$sql = implode(" \nOR ", $requete_projet);
239
		return $sql;
281
		return $sql;
-
 
282
	}
240
	}	
283
 
241
}
284
}