Subversion Repositories eFlore/Applications.cel

Rev

Rev 1755 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1755 Rev 1765
Line 18... Line 18...
18
 
18
 
19
	public function obtenirIdObservationsPourOrdre($id_utilisateur, $ordre) {
19
	public function obtenirIdObservationsPourOrdre($id_utilisateur, $ordre) {
Line 20... Line 20...
20
		$requete_selection_id = 'SELECT id_observation FROM cel_obs WHERE ordre ';
20
		$requete_selection_id = 'SELECT id_observation FROM cel_obs WHERE ordre ';
21
 
21
 
22
		if (is_array($ordre)) {
22
		if (is_array($ordre)) {
23
			$ordre = array_map(array($this,'proteger'), $ordre);
23
			$ordre = array_map(array(Cel::db(),'proteger'), $ordre);
24
			$requete_selection_id .= ' IN ('.implode(',',$ordre).') ';
24
			$requete_selection_id .= ' IN ('.implode(',',$ordre).') ';
25
		} else {
25
		} else {
Line 26... Line 26...
26
			$requete_selection_id .= ' = '.$this->proteger($ordre).' ';
26
			$requete_selection_id .= ' = '.Cel::db()->proteger($ordre).' ';
27
		}
27
		}
Line 28... Line 28...
28
 
28
 
Line 29... Line 29...
29
		$requete_selection_id .= ' AND ce_utilisateur = '.$this->proteger($id_utilisateur).
29
		$requete_selection_id .= ' AND ce_utilisateur = '.Cel::db()->proteger($id_utilisateur).
30
			' ORDER BY id_observation';
30
			' ORDER BY id_observation';
31
 
31
 
32
		$resultat_ids = $this->executerRequete($requete_selection_id);
32
		$resultat_ids = Cel::db()->executerRequete($requete_selection_id);
Line 43... Line 43...
43
 
43
 
44
	public function rechercherObservations($id_utilisateur = null, $criteres = array(), $debut = 0, $limite = 50, $autoriser_sql_brut = FALSE) {
44
	public function rechercherObservations($id_utilisateur = null, $criteres = array(), $debut = 0, $limite = 50, $autoriser_sql_brut = FALSE) {
Line 45... Line 45...
45
		$requete_selection_observations = 'SELECT * FROM cel_obs ';
45
		$requete_selection_observations = 'SELECT * FROM cel_obs ';
46
 
46
 
47
		if ($id_utilisateur != null) {
47
		if ($id_utilisateur != null) {
48
			$requete_selection_observations .= 'WHERE ce_utilisateur = '.$this->proteger($id_utilisateur).' AND ';
48
			$requete_selection_observations .= 'WHERE ce_utilisateur = '.Cel::db()->proteger($id_utilisateur).' AND ';
49
		} else if(count($criteres) > 0) {
49
		} else if(count($criteres) > 0) {
Line 50... Line 50...
50
			$requete_selection_observations .= 'WHERE ';
50
			$requete_selection_observations .= 'WHERE ';
Line 65... Line 65...
65
		return $this;
65
		return $this;
66
	}
66
	}
Line 67... Line 67...
67
 
67
 
68
	public function get() {
68
	public function get() {
69
		if(!$this->requete_selection_observations) return FALSE;
69
		if(!$this->requete_selection_observations) return FALSE;
70
		return $this->executerRequete($this->requete_selection_observations);
70
		return Cel::db()->executerRequete($this->requete_selection_observations);
Line 71... Line 71...
71
	}
71
	}
72
 
72
 
Line 73... Line 73...
73
	public function compterObservations($id_utilisateur = null, $criteres = array()) {
73
	public function compterObservations($id_utilisateur = null, $criteres = array()) {
74
 		$requete_selection_observations = 'SELECT COUNT(*) as nb_obs FROM cel_obs ';
74
 		$requete_selection_observations = 'SELECT COUNT(*) as nb_obs FROM cel_obs ';
75
 
75
 
76
		if ($id_utilisateur != null) {
76
		if ($id_utilisateur != null) {
77
			$requete_selection_observations .= 'WHERE ce_utilisateur = '.$this->proteger($id_utilisateur).' AND ';
77
			$requete_selection_observations .= 'WHERE ce_utilisateur = '.Cel::db()->proteger($id_utilisateur).' AND ';
Line 78... Line 78...
78
		} else if(count($criteres) > 0) {
78
		} else if(count($criteres) > 0) {
Line 79... Line 79...
79
			$requete_selection_observations .= 'WHERE ';
79
			$requete_selection_observations .= 'WHERE ';
80
		}
80
		}
Line 81... Line 81...
81
 
81
 
82
		$sous_requete_recherche = $this->fabriquerSousRequeteRecherche($id_utilisateur, $criteres);
82
		$sous_requete_recherche = $this->fabriquerSousRequeteRecherche($id_utilisateur, $criteres);
Line 83... Line 83...
83
 
83
 
84
		$requete_selection_observations .= $sous_requete_recherche;
84
		$requete_selection_observations .= $sous_requete_recherche;
85
		$requete_selection_observations = rtrim($requete_selection_observations, 'AND ');
85
		$requete_selection_observations = rtrim($requete_selection_observations, 'AND ');
Line 126... Line 126...
126
 
126
 
127
		return $tableau_observations;
127
		return $tableau_observations;
Line 128... Line 128...
128
	}
128
	}
129
 
129
 
130
	public function obtenirCourrielUtilisateurPourIdObs($id_obs) {
130
	public function obtenirCourrielUtilisateurPourIdObs($id_obs) {
Line 131... Line 131...
131
		$id_obs = $this->proteger($id_obs);
131
		$id_obs = Cel::db()->proteger($id_obs);
Line 132... Line 132...
132
		$requete = "SELECT courriel_utilisateur FROM cel_obs WHERE id_observation = $id_obs";
132
		$requete = "SELECT courriel_utilisateur FROM cel_obs WHERE id_observation = $id_obs";
133
 
133
 
134
		$utilisateur_courriel = $this->executerRequete($requete . ' -- ' . __FILE__ . ':' . __LINE__);
134
		$utilisateur_courriel = Cel::db()->executerRequete($requete . ' -- ' . __FILE__ . ':' . __LINE__);
135
 
135
 
Line 142... Line 142...
142
 
142
 
143
	private function getIdsMotsClesObservation($id_observation) {
143
	private function getIdsMotsClesObservation($id_observation) {
144
		$requete_selection_mots_cles = 'SELECT DISTINCT id_mot_cle_obs '.
144
		$requete_selection_mots_cles = 'SELECT DISTINCT id_mot_cle_obs '.
145
			'FROM cel_obs_mots_cles '.
145
			'FROM cel_obs_mots_cles '.
146
			"WHERE id_observation = $id_observation ";
146
			"WHERE id_observation = $id_observation ";
147
		return $this->executerRequete($requete_selection_mots_cles);
147
		return Cel::db()->executerRequete($requete_selection_mots_cles);
Line 148... Line 148...
148
	}
148
	}
149
 
149
 
150
	// TODO: fonction temporaire
150
	// TODO: fonction temporaire
Line 174... Line 174...
174
					break;
174
					break;
175
				case 'annee':
175
				case 'annee':
176
					if ($valeur == "NULL") {
176
					if ($valeur == "NULL") {
177
						$sous_requete .= "(date_observation IS NULL OR year(date_observation) = 0000)" ;
177
						$sous_requete .= "(date_observation IS NULL OR year(date_observation) = 0000)" ;
178
					} else {
178
					} else {
179
						$sous_requete .= "(year(date_observation) = ".$this->proteger($valeur).")" ;
179
						$sous_requete .= "(year(date_observation) = ".Cel::db()->proteger($valeur).")" ;
180
					}
180
					}
181
					$sous_requete .= ' AND ' ;
181
					$sous_requete .= ' AND ' ;
182
					break;
182
					break;
183
				case 'mois':
183
				case 'mois':
184
					if ($valeur == "NULL") {
184
					if ($valeur == "NULL") {
185
						$sous_requete .= "date_observation IS NULL OR month(date_observation) = 00" ;
185
						$sous_requete .= "date_observation IS NULL OR month(date_observation) = 00" ;
186
					} else {
186
					} else {
187
						$sous_requete .= "month(date_observation) = ".$this->proteger($valeur) ;
187
						$sous_requete .= "month(date_observation) = ".Cel::db()->proteger($valeur) ;
188
					}
188
					}
189
					$sous_requete .= ' AND ' ;
189
					$sous_requete .= ' AND ' ;
190
					break;
190
					break;
191
				case 'jour':
191
				case 'jour':
192
					if ($valeur == "NULL") {
192
					if ($valeur == "NULL") {
193
						$sous_requete .= "date_observation IS NULL OR day(date_observation) = 00" ;
193
						$sous_requete .= "date_observation IS NULL OR day(date_observation) = 00" ;
194
					} else {
194
					} else {
195
						$sous_requete .= "day(date_observation) = ".$this->proteger($valeur) ;
195
						$sous_requete .= "day(date_observation) = ".Cel::db()->proteger($valeur) ;
196
					}
196
					}
197
					$sous_requete .= ' AND ' ;
197
					$sous_requete .= ' AND ' ;
198
					break;
198
					break;
199
				case 'departement':
199
				case 'departement':
200
					if ($valeur == "NULL") {
200
					if ($valeur == "NULL") {
Line 202... Line 202...
202
					} else {
202
					} else {
203
						if (strpos($valeur,',') !== false) {
203
						if (strpos($valeur,',') !== false) {
204
							$dpts = explode(',',$valeur);
204
							$dpts = explode(',',$valeur);
205
							$sous_requete .= '(';
205
							$sous_requete .= '(';
206
							foreach($dpts as $dpt) {
206
							foreach($dpts as $dpt) {
207
								$sous_requete .= "ce_zone_geo LIKE ".$this->proteger('INSEE-C:'.$dpt.'___').' OR ';
207
								$sous_requete .= "ce_zone_geo LIKE ".Cel::db()->proteger('INSEE-C:'.$dpt.'___').' OR ';
208
							}
208
							}
209
							$sous_requete = rtrim($sous_requete,' OR ').') ';
209
							$sous_requete = rtrim($sous_requete,' OR ').') ';
210
						} else {
210
						} else {
211
							$sous_requete .= "(ce_zone_geo LIKE ".$this->proteger('INSEE-C:'.$valeur.'___').')';
211
							$sous_requete .= "(ce_zone_geo LIKE ".Cel::db()->proteger('INSEE-C:'.$valeur.'___').')';
212
						}
212
						}
213
					}
213
					}
214
					$sous_requete .= ' AND ' ;
214
					$sous_requete .= ' AND ' ;
215
					break;
215
					break;
216
				case 'commune':
216
				case 'commune':
217
					if ($valeur == "NULL") {
217
					if ($valeur == "NULL") {
218
						$sous_requete .= "(zone_geo IS NULL OR zone_geo = '')";
218
						$sous_requete .= "(zone_geo IS NULL OR zone_geo = '')";
219
					} else {
219
					} else {
220
						$sous_requete .= "(zone_geo = ".$this->proteger($valeur).')';
220
						$sous_requete .= "(zone_geo = ".Cel::db()->proteger($valeur).')';
221
					}
221
					}
222
					$sous_requete .= ' AND ' ;
222
					$sous_requete .= ' AND ' ;
223
					break;
223
					break;
224
				case 'id_mots_cles':
224
				case 'id_mots_cles':
225
					$liste_mc = '"'.str_replace(';','","',$valeur).'"';
225
					$liste_mc = '"'.str_replace(';','","',$valeur).'"';
Line 230... Line 230...
230
				case 'recherche':
230
				case 'recherche':
231
					$sous_requete .= $this->fabriquerSousRequeteRechercheGenerale($id_utilisateur, $valeur);
231
					$sous_requete .= $this->fabriquerSousRequeteRechercheGenerale($id_utilisateur, $valeur);
232
					$sous_requete .= ' AND ';
232
					$sous_requete .= ' AND ';
233
					break;
233
					break;
234
				case 'date_debut':
234
				case 'date_debut':
235
					$sous_requete .= 'date_observation >= '.$this->proteger($this->formaterEnDateMysql($valeur));
235
					$sous_requete .= 'date_observation >= '.Cel::db()->proteger($this->formaterEnDateMysql($valeur));
236
					$sous_requete .= ' AND ';
236
					$sous_requete .= ' AND ';
237
					break;
237
					break;
238
				case 'date_fin':
238
				case 'date_fin':
239
					$sous_requete .= 'date_observation <= '.$this->proteger($this->formaterEnDateMysql($valeur));
239
					$sous_requete .= 'date_observation <= '.Cel::db()->proteger($this->formaterEnDateMysql($valeur));
240
					$sous_requete .= ' AND ';
240
					$sous_requete .= ' AND ';
241
					break;
241
					break;
242
				case 'taxon':
242
				case 'taxon':
243
					$valeur_protegee = $this->proteger($valeur."%");
243
					$valeur_protegee = Cel::db()->proteger($valeur."%");
244
					$sous_requete .= "( nom_sel LIKE ".$valeur_protegee." OR".
244
					$sous_requete .= "( nom_sel LIKE ".$valeur_protegee." OR".
245
								" nom_ret LIKE ".$valeur_protegee." OR".
245
								" nom_ret LIKE ".$valeur_protegee." OR".
246
								" famille LIKE ".$valeur_protegee.
246
								" famille LIKE ".$valeur_protegee.
247
								" ) AND ";
247
								" ) AND ";
248
					break;
248
					break;
Line 250... Line 250...
250
					$sous_requete .= $valeur;
250
					$sous_requete .= $valeur;
251
					$sous_requete .= ' AND ';
251
					$sous_requete .= ' AND ';
252
					break;
252
					break;
253
				default:
253
				default:
254
					if (trim($nom) != '') {
254
					if (trim($nom) != '') {
255
						$sous_requete .= $nom." = ".$this->proteger($valeur) ;
255
						$sous_requete .= $nom." = ".Cel::db()->proteger($valeur) ;
256
						$sous_requete .= ' AND ';
256
						$sous_requete .= ' AND ';
257
					}
257
					}
258
					if (trim($nom) == 'NULL') {
258
					if (trim($nom) == 'NULL') {
259
						$sous_requete .= "($nom IS NULL OR $nom = '')";
259
						$sous_requete .= "($nom IS NULL OR $nom = '')";
260
						$sous_requete .= ' AND ';
260
						$sous_requete .= ' AND ';
Line 274... Line 274...
274
		return $date;
274
		return $date;
275
	}
275
	}
Line 276... Line 276...
276
 
276
 
277
	private function fabriquerSousRequeteRechercheGenerale($id_utilisateur, $valeur) {
277
	private function fabriquerSousRequeteRechercheGenerale($id_utilisateur, $valeur) {
278
		$valeur = str_replace("*","%",$valeur);
278
		$valeur = str_replace("*","%",$valeur);
279
		$valeur = $this->proteger('%'.$valeur.'%');
279
		$valeur = Cel::db()->proteger('%'.$valeur.'%');
280
		$sous_requete = "(nom_sel LIKE ".$valeur.
280
		$sous_requete = "(nom_sel LIKE ".$valeur.
281
			" OR courriel_utilisateur LIKE ".$valeur.
281
			" OR courriel_utilisateur LIKE ".$valeur.
282
			" OR prenom_utilisateur LIKE ".$valeur.
282
			" OR prenom_utilisateur LIKE ".$valeur.
283
			" OR nom_utilisateur LIKE ".$valeur.
283
			" OR nom_utilisateur LIKE ".$valeur.
Line 305... Line 305...
305
	private function creerSousRequeteMotsCles($mot_cle) {
305
	private function creerSousRequeteMotsCles($mot_cle) {
306
		$requete = '';
306
		$requete = '';
307
		if (preg_match('/.*OU.*/', $mot_cle)) {
307
		if (preg_match('/.*OU.*/', $mot_cle)) {
308
			$mots_cles_tab = explode('OU',$mot_cle);
308
			$mots_cles_tab = explode('OU',$mot_cle);
309
			foreach($mots_cles_tab as $mot_cle_item) {
309
			foreach($mots_cles_tab as $mot_cle_item) {
310
				$requete .= '(mots_cles_texte LIKE '.$this->proteger('%'.$mot_cle_item.'%').') OR ';
310
				$requete .= '(mots_cles_texte LIKE '.Cel::db()->proteger('%'.$mot_cle_item.'%').') OR ';
311
			}
311
			}
312
			$requete = '('.rtrim($requete,'OR ').')';
312
			$requete = '('.rtrim($requete,'OR ').')';
313
		} else if (preg_match('/.*ET.*/', $mot_cle)) {
313
		} else if (preg_match('/.*ET.*/', $mot_cle)) {
314
			$mots_cles_tab = explode('ET',$mot_cle);
314
			$mots_cles_tab = explode('ET',$mot_cle);
315
			foreach($mots_cles_tab as $mot_cle_item) {
315
			foreach($mots_cles_tab as $mot_cle_item) {
316
				$requete .= '(mots_cles_texte LIKE '.$this->proteger('%'.$mot_cle_item.'%').') AND ';
316
				$requete .= '(mots_cles_texte LIKE '.Cel::db()->proteger('%'.$mot_cle_item.'%').') AND ';
317
			}
317
			}
318
			$requete = '('.rtrim($requete, 'AND ').') ';
318
			$requete = '('.rtrim($requete, 'AND ').') ';
319
		} else {
319
		} else {
320
			$requete = "(mots_cles_texte LIKE ".$this->proteger('%'.$mot_cle.'%').') ';
320
			$requete = "(mots_cles_texte LIKE ".Cel::db()->proteger('%'.$mot_cle.'%').') ';
321
		}
321
		}
322
		return $requete;
322
		return $requete;
323
	}
323
	}
Line 324... Line 324...
324
 
324
 
Line 330... Line 330...
330
		$champs = array('annee' => 'date_observation',
330
		$champs = array('annee' => 'date_observation',
331
			'mois' => 'date_observation',
331
			'mois' => 'date_observation',
332
			'jour' => 'date_observation',
332
			'jour' => 'date_observation',
333
			'departement' => 'ce_zone_geo',
333
			'departement' => 'ce_zone_geo',
334
			'commune' => 'zone_geo');
334
			'commune' => 'zone_geo');
335
		return $sous_requete .= $champs[$valeur]." = ".$this->proteger("");
335
		return $sous_requete .= $champs[$valeur]." = ".Cel::db()->proteger("");
336
	}
336
	}
337
}
337
}
338
?>
338
?>
339
339