Subversion Repositories eFlore/Applications.del

Rev

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

Rev 704 Rev 705
Line 16... Line 16...
16
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
16
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
17
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                        |
17
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                        |
18
// | GNU General Public License for more details.                                                         |
18
// | GNU General Public License for more details.                                                         |
19
// |                                                                                                      |
19
// |                                                                                                      |
20
// | You should have received a copy of the  GNU General Public License                                    |
20
// | You should have received a copy of the  GNU General Public License                                    |
21
// | along with Foobar; if not, write to the Free Software                                                |
21
// | along with Del; if not, write to the Free Software                                                |
22
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
22
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
23
// +------------------------------------------------------------------------------------------------------+
23
// +------------------------------------------------------------------------------------------------------+
24
// CVS : $Id: effi_cel.action.php,v 1.9 2007-11-06 10:54:03 jp_milcent Exp $
24
// CVS : $Id: effi_cel.action.php,v 1.9 2007-11-06 10:54:03 jp_milcent Exp $
25
/**
25
/**
26
 * Le web service image récupère toutes les données de la table del_obs_images
26
 * Le web service image récupère toutes les données de la table del_obs_images
Line 31... Line 31...
31
 * @author	Grégoire Duché <gregoire@tela-botanica.org>
31
 * @author	Grégoire Duché <gregoire@tela-botanica.org>
32
 * @copyright     Tela-Botanica 2000-2012
32
 * @copyright     Tela-Botanica 2000-2012
33
 * @version       $Revision: 1.9 $ $Date: 2007-11-06 10:54:03 $
33
 * @version       $Revision: 1.9 $ $Date: 2007-11-06 10:54:03 $
34
// +------------------------------------------------------------------------------------------------------+
34
// +------------------------------------------------------------------------------------------------------+
35
 */
35
 */
-
 
36
 
-
 
37
// TODO : conteneur, n'étendra plus rien
-
 
38
// Le contenu viendra du constructeur 
36
class Images extends Commun {
39
class Images extends Commun {
Line 37... Line 40...
37
	
40
	
38
	private $config;
41
	private $config;
39
	private $schemaBdd;
42
	private $schemaBdd;
Line 55... Line 58...
55
		
58
		
56
		if (!empty($ressources)) {
59
		if (!empty($ressources)) {
57
			$this->idImage = $ressources[0];
60
			$this->idImage = $ressources[0];
Line -... Line 61...
-
 
61
		}
58
		}
62
		
59
		
63
		//TODO : enlever les appels par référence
-
 
64
		// Gestion des configuration du script
-
 
65
		// TODO : gérer les erreurs de config
60
		// Gestion des configuration du script
66
		// voir les paramètres par défaut
61
		// TODO : gérer les erreurs de config
67
		// vérifier les valeurs (voir try catch JP)
62
		// TODO : voir la classe Conteneur
68
		// TODO : voir la classe Conteneur
63
		$this->config = Config::get('images');
69
		$this->config = Config::get('images');
64
		$this->schemaBdd = $this->config['schemaBdd'];
70
		$this->schemaBdd = $this->config['schemaBdd'];
-
 
71
		$this->UrlNavigation = new Url($this->config['url_service']);
-
 
72
		$this->chargerParametres($parametres);
65
		$this->UrlNavigation = new Url($this->config['url_service']);
73
		
Line 66... Line 74...
66
		$this->chargerParametres($parametres);
74
		// TODO : voir CEL ou CHORODEP eflore ou CARTOPOINT pour calc find rows
-
 
75
		$this->compterImages();
67
		$this->compterImages();
76
		
68
		
77
		// Lancement du service
-
 
78
		// TODO : changer le résultat par id => objetImage
-
 
79
		$liaisons = $this->chargerLiaisons();
69
		// Lancement du service
80
		$images = $this->chargerImage($liaisons);
Line 70... Line 81...
70
		$liaisons = $this->chargerLiaisons();
81
		
71
		$images = $this->chargerImage($liaisons);
82
		//TODO : gérer un retour de chargervote plutot que référence
72
		$this->chargerVotes($images);
83
		$this->chargerVotes($images);
Line 93... Line 104...
93
		
104
		
94
		if (isset($this->parametres['navigation.limite'])) {
105
		if (isset($this->parametres['navigation.limite'])) {
95
			$this->limite = $this->parametres['navigation.limite'];
106
			$this->limite = $this->parametres['navigation.limite'];
Line -... Line 107...
-
 
107
		}
-
 
108
		
96
		}
109
		
97
		
110
		// TODO : voir méthode gérer Masque pour gérer les spécificités de chaque paramètre
98
		foreach ($parametres as $id => $parametre) {
111
		foreach ($parametres as $id => $parametre) {
99
			if (strpos($id, 'masque.') === 0) {
112
			if (strpos($id, 'masque.') === 0) {
100
				$champ = substr($id, 7, strlen($id));	
113
				$champ = substr($id, 7, strlen($id));	
Line 113... Line 126...
113
	/**
126
	/**
114
	* Charger la clause WHERE en fonction des paramètres de masque
127
	* Charger la clause WHERE en fonction des paramètres de masque
115
	* */
128
	* */
116
	private function chargerClauseWhere() {
129
	private function chargerClauseWhere() {
117
		$where = array();
130
		$where = array();
-
 
131
		
-
 
132
		// TODO : factoriser ci-dessous 
118
		if (isset($this->idImage)) {
133
		if (isset($this->idImage)) {
119
			$where[] = " id_image = ".$this->getBdd()->proteger($this->idImage);	
134
			$where[] = " id_image = ".$this->getBdd()->proteger($this->idImage);	
120
		}
135
		}
Line 121... Line 136...
121
		
136
		
Line 145... Line 160...
145
			if (is_numeric($auteurId)) {
160
			if (is_numeric($auteurId)) {
146
				$where[] = " ce_utilisateur = ".$this->masque['auteur'];
161
				$where[] = " ce_utilisateur = ".$this->masque['auteur'];
147
			} else {
162
			} else {
148
				if (strpos($auteurId, '@') === false) {
163
				if (strpos($auteurId, '@') === false) {
Line -... Line 164...
-
 
164
					
149
					
165
					// TODO : bug sur nom/prenom
150
					// TODO : j'ai utilisé implode car ça évite de faire un rtrim à la fin
166
					// TODO : j'ai utilisé implode car ça évite de faire un rtrim à la fin
151
					// mais comme je ne peux pas protéger chaque valeur d'un tableau, ca alourdit le code.
167
					// mais comme je ne peux pas protéger chaque valeur d'un tableau, ca alourdit le code.
-
 
168
					// quid ?
152
					// quid ?
169
					// TODO : voir méthode pour protéger les valeurs d'un tableau (cel.php, services web du cel ...)
153
					$nomPrenom = explode(' ', $auteurId);
170
					$nomPrenom = explode(' ', $auteurId);
154
					foreach ($nomPrenom as &$valeur) {
171
					foreach ($nomPrenom as &$valeur) {
155
						$valeur = $this->getBdd()->proteger($valeur);
172
						$valeur = $this->getBdd()->proteger($valeur);
156
					}
173
					}
157
					$chaineNomPrenom = implode(', ', $nomPrenom);
174
					$chaineNomPrenom = implode(', ', $nomPrenom);
Line 158... Line 175...
158
					$where[] = '((nom IN ('.$chaineNomPrenom.')) OR (prenom IN('.$chaineNomPrenom.')))';
175
					$where[] = '((nom IN ('.$chaineNomPrenom.')) OR (prenom IN ('.$chaineNomPrenom.')))';
159
					
176
					
160
				} else {
177
				} else {
161
					$where[] = " courriel LIKE ".$this->getBdd()->proteger($this->masque['auteur'].'%')." ";
178
					$where[] = " courriel LIKE ".$this->getBdd()->proteger($this->masque['auteur'].'%')." ";
162
				}
179
				}
Line 163... Line 180...
163
			}			
180
			}			
164
		}
181
		}
-
 
182
		
165
		
183
		//TODO : gérer le format de la date ?
166
		//TODO : gérer le format de la date ?
184
		// rechercher sur LIKE DATE % ?
167
		// rechercher sur LIKE DATE % ?
185
		// TODO : recherche sur JOUR MOIS ou ANNEE
Line 168... Line 186...
168
		if (isset($this->masque['date'])) {
186
		if (isset($this->masque['date'])) {
169
			$where[] = " date_observation = ".$this->getBdd()->proteger($this->masque['date']);
187
			$where[] = " date_observation = ".$this->getBdd()->proteger($this->masque['date']);
170
		}
188
		}
Line 171... Line 189...
171
		
189
		
172
		
-
 
173
		if (isset($this->masque['commune'])) {
190
		
174
			$where[] = " zone_geo LIKE ".$this->getBdd()->proteger($this->masque['commune']);
191
		if (isset($this->masque['commune'])) {
175
		}
192
			$where[] = " zone_geo LIKE ".$this->getBdd()->proteger($this->masque['commune']);
-
 
193
		}
-
 
194
		
-
 
195
		if (isset($this->masque['departement'])) {
176
		
196
			$dept = $this->masque['departement'];
177
		if (isset($this->masque['departement'])) {
197
			if (is_numeric($dept)) {
Line 178... Line 198...
178
			//TODO : que faire si le département n'est pas numérique ?
198
				$where[] = " ce_zone_geo LIKE ".$this->getBdd()->proteger('INSEE-C:'.$this->masque['departement'].'%');
179
			$dept = $this->masque['departement'];
199
			} else {
Line 195... Line 215...
195
	
215
	
196
	/**
216
	/**
197
	 * Compter le nombre total d'images dans la base pour affichage dans entete.
217
	 * Compter le nombre total d'images dans la base pour affichage dans entete.
198
	 * */
218
	 * */
-
 
219
	private function compterImages() {
-
 
220
		// TODO : n'est pas la bonne requête
199
	private function compterImages() {
221
		// voir dans les services web eflore
200
		$requeteNbImages = 'SELECT COUNT(*) AS nb '.
222
		$requeteNbImages = 'SELECT COUNT(*) AS nb '.
201
						   'FROM '.$this->schemaBdd.'.del_image ';
223
						   'FROM '.$this->schemaBdd.'.del_image ';
202
		$resultatNbImages = $this->getBdd()->recuperer($requeteNbImages);
224
		$resultatNbImages = $this->getBdd()->recuperer($requeteNbImages);
203
		$this->total = $resultatNbImages['nb'];
225
		$this->total = $resultatNbImages['nb'];
Line 255... Line 277...
255
			$requeteVotes = 'SELECT * FROM '.
277
			$requeteVotes = 'SELECT * FROM '.
256
			                $this->schemaBdd.'.del_vote_image '.
278
			                $this->schemaBdd.'.del_vote_image '.
257
			                'WHERE ce_image IN ('.$chaineImageIds.')';
279
			                'WHERE ce_image IN ('.$chaineImageIds.')';
258
			$resultatsVotes = $this->getBdd()->recupererTous($requeteVotes);
280
			$resultatsVotes = $this->getBdd()->recupererTous($requeteVotes);
Line -... Line 281...
-
 
281
			
-
 
282
			
259
			
283
			//TODO : faire une méthode formater vote
260
			$votes = array();
284
			$votes = array();
261
			foreach ($resultatsVotes as $vote) {
285
			foreach ($resultatsVotes as $vote) {
262
				$idImage = $vote['ce_image'];
286
				$idImage = $vote['ce_image'];
263
				$id = $vote['id_vote_image'];
287
				$id = $vote['id_vote_image'];
Line 287... Line 311...
287
	*  Formater une observation depuis une ligne liaison
311
	*  Formater une observation depuis une ligne liaison
288
	*  @param $liaison liaison issue de la recherche
312
	*  @param $liaison liaison issue de la recherche
289
	* */
313
	* */
290
	private function formaterObservation($liaison) {
314
	private function formaterObservation($liaison) {
291
		$observation = array();
315
		$observation = array();
-
 
316
		
-
 
317
		// TODO : faire un tableau de correspondance clé-valeur
292
		$observation['id_observation'] = $liaison['id_observation'];
318
		$observation['id_observation'] = $liaison['id_observation'];
293
		$observation['date_observation'] = $liaison['date_observation'];
319
		$observation['date_observation'] = $liaison['date_observation'];
294
		$observation['date_transmission'] = $liaison['date_transmission'];
320
		$observation['date_transmission'] = $liaison['date_transmission'];
295
		$observation['determination.famille'] = $liaison['famille'];
321
		$observation['determination.famille'] = $liaison['famille'];
296
		$observation['determination.ns'] = $liaison['nom_sel'];
322
		$observation['determination.ns'] = $liaison['nom_sel'];