Subversion Repositories eFlore/Applications.cel

Rev

Rev 792 | Rev 938 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 792 Rev 840
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Service fournissant une carte dynamique des obsertions publiques du CEL.
4
 * Service fournissant une carte dynamique des obsertions publiques du CEL.
5
 * Encodage en entrée : utf8
5
 * Encodage en entrée : utf8
6
 * Encodage en sortie : utf8
6
 * Encodage en sortie : utf8
7
 *
7
 *
8
 * Cas d'utilisation :
8
 * Cas d'utilisation :
9
 * /CelWidgetMap/Carte/Utilisateur : carte des observations publiques d'un utilisateur.
9
 * /CelWidgetMap/Carte/Utilisateur : carte des observations publiques d'un utilisateur.
10
 * /CelWidgetMap/Carte/Utilisateur/Projet : carte des observations publiques d'un utilisateur pour un projet.
10
 * /CelWidgetMap/Carte/Utilisateur/Projet : carte des observations publiques d'un utilisateur pour un projet.
11
 * /CelWidgetMap/Carte/Utilisateur/Projet/dept : carte des observations publiques d'un utilisateur pour un projet sur un département.
11
 * /CelWidgetMap/Carte/Utilisateur/Projet/dept : carte des observations publiques d'un utilisateur pour un projet sur un département.
12
 * /CelWidgetMap/Carte/Utilisateur/Projet/dept/num_taxon : carte des observations publiques d'un utilisateur pour un projet sur un département pour un taxon.
12
 * /CelWidgetMap/Carte/Utilisateur/Projet/dept/num_taxon : carte des observations publiques d'un utilisateur pour un projet sur un département pour un taxon.
13
 *
13
 *
14
 * Carte = Type de carte. Valeurs possible : defaut,
14
 * Carte = Type de carte. Valeurs possible : defaut,
15
 * Utilisateur = identifiant (= courriel) de l'utilisateur ou * pour tous les utilisateurs.
15
 * Utilisateur = identifiant (= courriel) de l'utilisateur ou * pour tous les utilisateurs.
16
 * Projet = mot-clé du projet
16
 * Projet = mot-clé du projet
17
 *
17
 *
18
 * @author Jean-Pascal MILCENT <jpm@clapas.org>
18
 * @author Jean-Pascal MILCENT <jpm@clapas.org>
19
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
19
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
20
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
20
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
21
 * @version $Id$
21
 * @version $Id$
22
 * @copyright © 2010, Jean-Pascal MILCENT
22
 * @copyright © 2010, Jean-Pascal MILCENT
23
 */
23
 */
24
// TODO : supprimer le TRIM quand les obs seront reliées correctements aux localisations (sur le code INSEE par exemple)
24
// TODO : supprimer le TRIM quand les obs seront reliées correctements aux localisations (sur le code INSEE par exemple)
25
class CelWidgetMap extends Cel {
25
class CelWidgetMap extends Cel {
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;
31
		$retour = null;
32
		$parametres = $this->traiterParametres(array('carte'), $params, false);
-
 
33
		extract($parametres);
32
		extract($this->parametres);
-
 
33
		
34
		
34
		$action = array_shift($ressources);
35
		if (isset($carte)) {
35
		if (isset($action)) {
36
			$methode = $this->traiterNomMethodeGet($carte);
36
			$methode = $this->traiterNomMethodeGet($action);
37
			if (method_exists($this, $methode)) {
-
 
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 {
44
			$this->messages[] = "Vous devez indiquer le type de carte.";
43
			$this->messages[] = "Vous devez indiquer le type de ressource.";
45
		}
44
		}
46
 
45
 
47
		if (is_null($retour)) {
46
		if (is_null($retour)) {
48
			$info = 'Un problème est survenu : '.print_r($this->messages, true);
47
			$info = 'Un problème est survenu : '.print_r($this->messages, true);
49
			$this->envoyer($info);
48
			$this->envoyer($info);
50
		} else if ($retour['type'] == 'json') {
49
		} else if ($retour['type'] == 'json') {
51
			$this->envoyerJsonVar($retour['variable_js'], $retour['donnees']);
50
			$this->envoyerJsonVar($retour['variable_js'], $retour['donnees']);
52
		}  else if ($retour['type'] == 'jsonp') {
51
		}  else if ($retour['type'] == 'jsonp') {
53
			$this->envoyerJsonp($retour['donnees']);
52
			$this->envoyerJsonp($retour['donnees']);
54
		} else {
53
		} else {
55
			$this->envoyer($retour, null, null, true);
54
			$this->envoyer($retour, null, null, true);
56
		}
55
		}
57
	}
56
	}
58
 
57
 
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);
-
 
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";
77
                    $resultats = $this->executerRequete($requete);
79
		$resultats = $this->requeter($requete);
78
		
80
		
79
		// Traitement des résultats
81
		// Traitement des résultats
80
		$mm = null;
82
		$mm = null;
81
		$points = array();
83
		$stations = 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'];
108
					$mm['max_x'] = ($mm['max_x'] < $enrg['coord_x']) ? $enrg['coord_x'] : $mm['max_x'];
111
						$mm['max_x'] = ($mm['max_x'] < $enrg['coord_x']) ? $enrg['coord_x'] : $mm['max_x'];
109
					$mm['max_y'] = ($mm['max_y'] < $enrg['coord_y']) ? $enrg['coord_y'] : $mm['max_y'];
112
						$mm['max_y'] = ($mm['max_y'] < $enrg['coord_y']) ? $enrg['coord_y'] : $mm['max_y'];
-
 
113
					}
110
				}
114
				}
111
			}
115
			}
112
		}
116
		}
113
		$points = array_values($points);
117
		$stations = array_values($stations);
-
 
118
		
-
 
119
		$requete =  'SELECT COUNT(id) AS nbre '.
-
 
120
                    "FROM $clause_from ".
-
 
121
                    "WHERE $clause_where ";
-
 
122
		$obs_nbre = (int) $this->requeter($requete, Cel::SQL_RETOUR_COLONNE);
114
 
123
 
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';
117
		$json['variable_js'] = 'obs';
126
		$json['variable_js'] = 'obs';
118
		
127
		
119
		$json['donnees']['points'] = $points;
128
		$json['donnees']['points'] = $stations;
-
 
129
		$json['donnees']['stats']['communes'] = count($stations);
120
		$json['donnees']['nombre'] = count($points);
130
		$json['donnees']['stats']['observations'] = $obs_nbre;
121
		$json['donnees']['centre_x'] = $mm['min_x'].'-'.$mm['max_x'];
131
		$json['donnees']['centre_x'] = $mm['min_x'].'-'.$mm['max_x'];
122
		$json['donnees']['centre_y'] = $mm['min_y'].'-'.$mm['max_y'];
-
 
123
 
-
 
124
 
-
 
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
	/**
136
	/**
130
	 * Données pour l'affichage des obs d'une station
137
	 * Données pour l'affichage des obs d'une station
131
	 */
138
	 */
132
	public function getObservations($params) {
139
	public function getObservations($params) {
133
		$json = null;
140
		$json = null;
134
		$parametres = $this->traiterParametres(array('station', 'utilisateur', 'projet', 'dept', 'num_taxon'), $params, false);
-
 
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
139
		//$this->debug[] = $station;
145
		$this->debug[] = $station;
140
		list($type, $coord) = explode(':', $station);
146
		list($type, $coord) = explode(':', $station);
141
		if ($type == 'UTM') {
147
		if ($type == 'UTM') {
142
			list($x_utm, $y_utm, $secteur) = explode('-', $coord);
148
			list($x_utm, $y_utm, $secteur) = explode('-', $coord);
143
		} else if ($type == 'LngLat') {
149
		} else if ($type == 'LngLat') {
144
			list($coord_y, $coord_x) = explode('-', $coord);
150
			list($coord_y, $coord_x) = explode('-', $coord);
145
		}
151
		}
146
		
152
		
147
		// Récupération du filtre where pour les mots clés "projet"
153
		// Récupération du filtre where pour les mots clés "projet"
148
		if (isset($projet)) {
154
		if (isset($projet)) {
149
			$projet_sql = $this->getSqlWhereProjet($projet);
155
			$projet_sql = $this->getSqlWhereProjet($projet);
150
		}
156
		}
151
 
157
 
152
		$requete = 	'SELECT id, identifiant, nom_sel, nom_ret, num_nom_sel, num_nom_ret, num_taxon, famille, '.
158
		$requete = 	'SELECT id, identifiant, nom_sel, nom_ret, num_nom_sel, num_nom_ret, num_taxon, famille, '.
153
					'	lieudit, location, date_observation, milieu, commentaire, '.
159
					'	lieudit, location, date_observation, milieu, commentaire, '.
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);
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);
174
		}
178
		}
175
		
179
		
176
		return $resultats;
180
		return $resultats;
177
	}
181
	}
178
	
182
	
179
	/**
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;
-
 
219
	}
-
 
220
	
-
 
221
	/**
180
	 * Liste des taxons présents sur la carte
222
	 * Liste des taxons présents sur la carte
181
	 */
223
	 */
182
	public function getTaxons($params) {
224
	public function getTaxons($params) {
183
		$json = null;
225
		$json = null;
184
		$parametres = $this->traiterParametres(array('utilisateur', 'projet', 'dept', 'num_taxon'), $params, false);
-
 
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"
188
		if (isset($projet)) {
229
		if (isset($projet)) {
189
			$projet_sql = $this->getSqlWhereProjet($projet);
230
			$projet_sql = $this->getSqlWhereProjet($projet);
190
		}
231
		}
191
 
232
 
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;
203
 
245
 
204
		$resultats = $this->executerRequete($requete);
246
		$resultats = $this->executerRequete($requete);
205
		
247
		
206
		// Post-traitement
248
		// Post-traitement
207
		if (is_array($resultats)) {
249
		if (is_array($resultats)) {
208
			$resultats = $this->nettoyerTableau($resultats);
250
			$resultats = $this->nettoyerTableau($resultats);
209
		}
251
		}
210
		
252
		
211
		return $resultats;
253
		return $resultats;
212
	}
254
	}
213
	
255
	
214
	/**
256
	/**
215
	 * Traitement de $projet pour construction du filtre dans la requête
257
	 * Traitement de $projet pour construction du filtre dans la requête
216
	 */
258
	 */
217
	private function getSqlWhereProjet($projet) {
259
	private function getSqlWhereProjet($projet) {
218
		$mot_cle_encode = $this->bdd->quote($this->encoderMotCle($projet));
260
		$mot_cle_encode = $this->bdd->quote($this->encoderMotCle($projet));
219
		
261
		
220
		// Construction de la requête
262
		// Construction de la requête
221
		$requete = 	'SELECT * '.
263
		$requete = 	'SELECT * '.
222
					'FROM cel_mots_cles_obs '.
264
					'FROM cel_mots_cles_obs '.
223
					"WHERE cmc_id_mot_cle_general = $mot_cle_encode ";
265
					"WHERE cmc_id_mot_cle_general = $mot_cle_encode ";
224
		$elements_projet = $this->executerRequete($requete);
266
		$elements_projet = $this->executerRequete($requete);
225
		
267
		
226
		$requete_projet = array();
268
		$requete_projet = array();
227
		if ($elements_projet != false && count($elements_projet) > 0) {
269
		if ($elements_projet != false && count($elements_projet) > 0) {
228
			// Pré-construction du where de la requête
270
			// Pré-construction du where de la requête
229
			$tpl_where = '(mots_cles LIKE "%%%s%%" AND identifiant = %s )';
271
			$tpl_where = '(mots_cles LIKE "%%%s%%" AND identifiant = %s )';
230
			
272
			
231
			foreach ($elements_projet as $occurence) {
273
			foreach ($elements_projet as $occurence) {
232
				$requete_projet[] = sprintf($tpl_where, $occurence['cmc_id_mot_cle_utilisateur'], $this->bdd->quote($occurence['cmc_id_proprietaire']));
274
				$requete_projet[] = sprintf($tpl_where, $occurence['cmc_id_mot_cle_utilisateur'], $this->bdd->quote($occurence['cmc_id_proprietaire']));
233
			}
275
			}
234
		} else {
276
		} else {
235
			$this->messages[] = "Aucune observation ne correspond à ce mot clé.";
277
			$this->messages[] = "Aucune observation ne correspond à ce mot clé.";
236
		}
278
		}
237
		
279
		
238
		$sql = implode(" \nOR ", $requete_projet);
280
		$sql = implode(" \nOR ", $requete_projet);
239
		return $sql;
281
		return $sql;
240
	}	
282
	}
-
 
283
 
241
}
284
}
242
285