Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 485 Rev 487
Line 55... Line 55...
55
	/**
55
	/**
56
	 * Données de la carte par défaut
56
	 * Données de la carte par défaut
57
	 */
57
	 */
58
	public function getCarteDefautJson($params) {
58
	public function getCarteDefautJson($params) {
59
		$json = null;
59
		$json = null;
60
		$parametres = $this->traiterParametres(array('utilisateur','projet','dept','num_taxon'), $params, false);
60
		$parametres = $this->traiterParametres(array('utilisateur', 'projet', 'dept', 'num_taxon'), $params, false);
61
		extract($parametres);
61
		extract($parametres);
Line 62... Line -...
62
		
-
 
63
		// Traitement de $projet pour construction de filtre dans la requête
-
 
64
		if (isset($projet)) {
-
 
65
			$mot_cle_encode = $this->bdd->quote($this->encoderMotCle($projet));
-
 
66
			// Construction de la requête
-
 
67
			$requete = 	'SELECT * '.
-
 
68
				'FROM cel_mots_cles_obs '.
-
 
69
				"WHERE cmc_id_mot_cle_general = $mot_cle_encode ";
-
 
70
			$elements_projet = $this->executerRequete($requete);
-
 
71
			
-
 
72
			if ($elements_projet != false && count($elements_projet) > 0) {
-
 
73
				// Pré-construction du where de la requête
-
 
74
				$tpl_where = '(mots_cles LIKE "%%%s%%" AND identifiant = %s )';
-
 
75
				$requete_projet = array();
-
 
76
				foreach ($elements_projet as $occurence) {
-
 
77
					$requete_projet[] = sprintf($tpl_where, $occurence['cmc_id_mot_cle_utilisateur'], $this->bdd->quote($occurence['cmc_id_proprietaire']));
-
 
78
				}
-
 
79
			} else {
-
 
80
				$this->messages[] = "Aucune observation ne correspond à ce mot clé.";
-
 
81
			}
-
 
82
		}
-
 
83
		
-
 
84
		
62
		
85
		$requete =  'SELECT sector, x_utm, y_utm, coord_x, coord_y, ref_geo '.
63
		$requete =  'SELECT sector, x_utm, y_utm '.
86
                    'FROM cel_inventory AS i '.
64
                    'FROM cel_inventory AS i '.
87
                    '   LEFT JOIN locations AS l '.
65
                    '   LEFT JOIN locations AS l '.
88
                    '       ON (l.name = i.location AND l.code = i.id_location) '.
66
                    '       ON (l.name = i.location AND l.code = i.id_location) '.
89
                    "WHERE transmission = '1' ".
67
                    "WHERE transmission = '1' ".
90
                    (isset($utilisateur) ? " AND identifiant = '$utilisateur' " : '' ).
68
                    (isset($utilisateur) ? " AND identifiant = '$utilisateur' " : '' ).
91
                    (isset($dept) ? " AND l.insee_code LIKE '$dept%' " : '').
69
                    (isset($dept) ? " AND l.insee_code LIKE '$dept%' " : '').
92
                    (isset($num_taxon) ? " AND num_taxon = '$num_taxon' " : '' ).
70
                    (isset($num_taxon) ? " AND num_taxon = '$num_taxon' " : '' ).
93
                    (isset($projet) ? ' AND '.implode(" \nOR ", $requete_projet) : '' );
71
                    (isset($projet) ? ' AND ('.$this->getSqlWhereProjet($projet).') ' : '' );
Line 94... Line 72...
94
                    $resultats = $this->executerRequete($requete);
72
                    $resultats = $this->executerRequete($requete);
95
		
73
		
96
		// Traitement des résultats
74
		// Traitement des résultats
97
		$mm = array('min_x' => 0,'max_x' => 0,'min_y' => 0,'max_y' => 0);
75
		$mm = array('min_x' => 0,'max_x' => 0,'min_y' => 0,'max_y' => 0);
98
		$points = array();
-
 
99
		foreach ($resultats as $enrg) {
-
 
100
			$enrg['id'] = 'LngLat:'.$enrg['coord_y'].'-'.$enrg['coord_x'];
-
 
101
			if ($enrg['coord_x'] == '' && $enrg['coord_y'] == '' && $enrg['x_utm'] != '' && $enrg['y_utm'] != '') {
-
 
102
				$enrg['id'] = 'UTM:'.$enrg['x_utm'].'-'.$enrg['y_utm'].'-'.$enrg['sector'];
76
		$points = array();
103
				
77
		foreach ($resultats as $enrg) {
104
				$convertisseur = new gPoint();
78
			$convertisseur = new gPoint();
105
				$convertisseur->setUTM($enrg['x_utm'], $enrg['y_utm'], $enrg['sector']);
79
			$convertisseur->setUTM($enrg['x_utm'], $enrg['y_utm'], $enrg['sector']);
106
				$convertisseur->convertTMtoLL();
80
			$convertisseur->convertTMtoLL();
107
				$enrg['coord_x'] = $convertisseur->Lat();
-
 
108
				$enrg['coord_y'] = $convertisseur->Long();
-
 
-
 
81
			$enrg['coord_x'] = $convertisseur->Lat();
109
			}
82
			$enrg['coord_y'] = $convertisseur->Long();
110
 
83
			$enrg['id'] = 'UTM:'.$enrg['x_utm'].'-'.$enrg['y_utm'].'-'.$enrg['sector'];
111
 
84
			
112
			$id = $enrg['coord_x'].'-'.$enrg['coord_y'];
85
			$id = $enrg['coord_x'].'-'.$enrg['coord_y'];
113
			if (!isset($points[$id])) {
86
			if (!isset($points[$id])) {
114
				$points[$id] = $enrg;
87
				$points[$id] = $enrg;
Line 141... Line 114...
141
		//echo '<pre>'.print_r($json, true).'</pre>';
114
		//echo '<pre>'.print_r($json, true).'</pre>';
142
		return $json;
115
		return $json;
143
	}
116
	}
Line 144... Line 117...
144
	
117
	
-
 
118
	/**
-
 
119
	 * Données de la carte par défaut
-
 
120
	 */
-
 
121
	public function getCartePreciseJson($params) {
-
 
122
		$json = null;
-
 
123
		$parametres = $this->traiterParametres(array('cle', 'utilisateur', 'projet', 'dept', 'num_taxon'), $params, false);
-
 
124
		extract($parametres);
-
 
125
		
-
 
126
		// Vérification que la clé passée dans l'url est correspond à celle attendue
-
 
127
		if ($cle == $this->config['jrest_admin']['cleCarto']) {
-
 
128
			$requete =  'SELECT sector, x_utm, y_utm, coord_x, coord_y, ref_geo '.
-
 
129
	                    'FROM cel_inventory AS i '.
-
 
130
	                    '   LEFT JOIN locations AS l '.
-
 
131
	                    '       ON (l.name = i.location AND l.code = i.id_location) '.
-
 
132
	                    "WHERE transmission = '1' ".
-
 
133
	                    (isset($utilisateur) ? " AND identifiant = '$utilisateur' " : '' ).
-
 
134
	                    (isset($dept) ? " AND l.insee_code LIKE '$dept%' " : '').
-
 
135
	                    (isset($num_taxon) ? " AND num_taxon = '$num_taxon' " : '' ).
-
 
136
	                    (isset($projet) ? ' AND ('.$this->getSqlWhereProjet($projet).') ' : '' );
-
 
137
	                    $resultats = $this->executerRequete($requete);
-
 
138
			
-
 
139
			// Traitement des résultats
-
 
140
			$mm = array('min_x' => 0,'max_x' => 0,'min_y' => 0,'max_y' => 0);
-
 
141
			$points = array();
-
 
142
			foreach ($resultats as $enrg) {
-
 
143
				$enrg['id'] = 'LngLat:'.$enrg['coord_y'].'-'.$enrg['coord_x'];
-
 
144
				if ($enrg['coord_x'] == '' && $enrg['coord_y'] == '' && $enrg['x_utm'] != '' && $enrg['y_utm'] != '') {
-
 
145
					$enrg['id'] = 'UTM:'.$enrg['x_utm'].'-'.$enrg['y_utm'].'-'.$enrg['sector'];
-
 
146
					
-
 
147
					$convertisseur = new gPoint();
-
 
148
					$convertisseur->setUTM($enrg['x_utm'], $enrg['y_utm'], $enrg['sector']);
-
 
149
					$convertisseur->convertTMtoLL();
-
 
150
					$enrg['coord_x'] = $convertisseur->Lat();
-
 
151
					$enrg['coord_y'] = $convertisseur->Long();
-
 
152
				}
-
 
153
	
-
 
154
	
-
 
155
				$id = $enrg['coord_x'].'-'.$enrg['coord_y'];
-
 
156
				if (!isset($points[$id])) {
-
 
157
					$points[$id] = $enrg;
-
 
158
					$points[$id]['nbre'] = 1;
-
 
159
				} else {
-
 
160
					$points[$id]['nbre']++;
-
 
161
				}
-
 
162
	
-
 
163
				// Détermination x et y min et max
-
 
164
				$mm['min_x'] = ($mm['min_x'] > $enrg['coord_x']) ? $enrg['coord_x'] : $mm['min_x'];
-
 
165
				$mm['min_y'] = ($mm['min_y'] > $enrg['coord_y']) ? $enrg['coord_y'] : $mm['min_y'];
-
 
166
				$mm['max_x'] = ($mm['max_x'] < $enrg['coord_x']) ? $enrg['coord_x'] : $mm['max_x'];
-
 
167
				$mm['max_y'] = ($mm['max_y'] < $enrg['coord_y']) ? $enrg['coord_y'] : $mm['max_y'];
-
 
168
			}
-
 
169
	
-
 
170
			// Post-traitement des résultats
-
 
171
			$x_moyen = str_replace(',', '.', ($mm['max_x'] - $mm['min_x']));
-
 
172
			$y_moyen = str_replace(',', '.', ($mm['max_y'] - $mm['min_y']));
-
 
173
			$points = array_values($points);
-
 
174
	
-
 
175
			// Création des infos du widget
-
 
176
			$json['type'] = 'json';
-
 
177
			$json['variable_js'] = 'obs';
-
 
178
			$json['donnees']['points'] = $points;
-
 
179
			$json['donnees']['nombre'] = count($points);
-
 
180
			$json['donnees']['centre_x'] = $x_moyen;
-
 
181
			$json['donnees']['centre_y'] = $y_moyen;
-
 
182
		}
-
 
183
 
-
 
184
		//echo '<pre>'.print_r($json, true).'</pre>';
-
 
185
		return $json;
-
 
186
	}
-
 
187
	
145
	/**
188
	/**
146
	 * Données pour l'affichage des obs d'une station
189
	 * Données pour l'affichage des obs d'une station
147
	 */
190
	 */
148
	public function getObservations($params) {
191
	public function getObservations($params) {
149
		$json = null;
192
		$json = null;
150
		$parametres = $this->traiterParametres(array('station', 'utilisateur'), $params, false);
193
		$parametres = $this->traiterParametres(array('station', 'utilisateur', 'projet', 'dept', 'num_taxon'), $params, false);
Line -... Line 194...
-
 
194
		extract($parametres);
151
		extract($parametres);
195
		
152
		
196
		// Récupération des coordonnées depuis l'id station
153
		//$this->debug[] = $station;
197
		//$this->debug[] = $station;
154
		list($type, $coord) = explode(':', $station);
198
		list($type, $coord) = explode(':', $station);
155
		if ($type == 'UTM') {
199
		if ($type == 'UTM') {
156
			list($x_utm, $y_utm, $secteur) = explode('-', $coord);
200
			list($x_utm, $y_utm, $secteur) = explode('-', $coord);
157
		} else if ($type == 'LngLat') {
201
		} else if ($type == 'LngLat') {
-
 
202
			list($coord_y, $coord_x) = explode('-', $coord);
-
 
203
		}
-
 
204
		
-
 
205
		// Récupération du filtre where pour les mots clés "projet"
-
 
206
		if (isset($projet)) {
Line 158... Line 207...
158
			list($coord_y, $coord_x) = explode('-', $coord);
207
			$projet_sql = $this->getSqlWhereProjet($projet);
159
		}
208
		}
160
 
209
 
161
		$requete = 	'SELECT identifiant, nom_sel, nom_ret, num_nom_sel, num_nom_ret, num_taxon, famille, '.
210
		$requete = 	'SELECT identifiant, nom_sel, nom_ret, num_nom_sel, num_nom_ret, num_taxon, famille, '.
162
					'	lieudit, location, date_observation, milieu, commentaire, '.
211
					'	lieudit, location, date_observation, milieu, commentaire, '.
163
					'	sector, x_utm, y_utm, coord_x, coord_y, ref_geo '.
212
					'	sector, x_utm, y_utm, insee_code '.
164
					'FROM cel_inventory AS i '.
213
					'FROM cel_inventory AS i '.
165
					'	LEFT JOIN locations AS l '.
214
					'	LEFT JOIN locations AS l '.
166
					'		ON (l.name = i.location AND l.code = i.id_location) '.
215
					'		ON (l.name = i.location AND l.code = i.id_location) '.
167
					"WHERE transmission = '1' ".
216
					"WHERE transmission = '1' ".
-
 
217
					(($type == 'UTM') ? "	AND (sector = '$secteur' AND x_utm = '$x_utm' AND y_utm = '$y_utm' ) " : '').
-
 
218
					(($type == 'LngLat') ? "	AND (coord_x = '$coord_x' AND coord_y = '$coord_y' ) " : '').
-
 
219
					(isset($utilisateur) ? " AND identifiant = '$utilisateur' " : '').
168
					(($type == 'UTM') ? "	AND (sector = '$secteur' AND x_utm = '$x_utm' AND y_utm = '$y_utm' ) " : '').
220
					(isset($dept) ? " AND l.insee_code LIKE '$dept%' " : '').
-
 
221
                    (isset($num_taxon) ? " AND num_taxon = '$num_taxon' " : '' ).
169
					(($type == 'LngLat') ? "	AND (coord_x = '$coord_x' AND coord_y = '$coord_y' ) " : '').
222
                    ((isset($projet) && $projet_sql != '') ? " AND ($projet_sql) " : '' );
Line 170... Line 223...
170
					(isset($utilisateur) ? " AND identifiant = '$utilisateur' " : '');
223
		//$this->debug[] = $requete;
-
 
224
 
171
		//$this->debug[] = $requete;
225
		$resultats = $this->executerRequete($requete);
-
 
226
		
Line 172... Line 227...
172
		$resultats = $this->executerRequete($requete);
227
		// Post-traitement
173
		
228
		if (is_array($resultats)) {
Line 174... Line 229...
174
		// Post-traitement
229
			$resultats = $this->nettoyerTableau($resultats);
Line 182... Line 237...
182
	 */
237
	 */
183
	public function getTaxons($params) {
238
	public function getTaxons($params) {
Line 184... Line 239...
184
		
239
		
Line -... Line 240...
-
 
240
	}
-
 
241
	
-
 
242
	/**
-
 
243
	 * Traitement de $projet pour construction du filtre dans la requête
-
 
244
	 */
-
 
245
	private function getSqlWhereProjet($projet) {
-
 
246
		$mot_cle_encode = $this->bdd->quote($this->encoderMotCle($projet));
-
 
247
		
-
 
248
		// Construction de la requête
-
 
249
		$requete = 	'SELECT * '.
-
 
250
					'FROM cel_mots_cles_obs '.
-
 
251
					"WHERE cmc_id_mot_cle_general = $mot_cle_encode ";
-
 
252
		$elements_projet = $this->executerRequete($requete);
-
 
253
		
-
 
254
		$requete_projet = array();
-
 
255
		if ($elements_projet != false && count($elements_projet) > 0) {
-
 
256
			// Pré-construction du where de la requête
-
 
257
			$tpl_where = '(mots_cles LIKE "%%%s%%" AND identifiant = %s )';
-
 
258
			
-
 
259
			foreach ($elements_projet as $occurence) {
-
 
260
				$requete_projet[] = sprintf($tpl_where, $occurence['cmc_id_mot_cle_utilisateur'], $this->bdd->quote($occurence['cmc_id_proprietaire']));
-
 
261
			}
-
 
262
		} else {
-
 
263
			$this->messages[] = "Aucune observation ne correspond à ce mot clé.";
-
 
264
		}
-
 
265
		
-
 
266
		$sql = implode(" \nOR ", $requete_projet);
-
 
267
		return $sql;
185
	}
268
	}
186
	
269