Subversion Repositories eFlore/Applications.del

Rev

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

Rev 1144 Rev 1168
Line 16... Line 16...
16
 * @see http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=ApiIdentiplante01Images
16
 * @see http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=ApiIdentiplante01Images
17
 */
17
 */
Line 18... Line 18...
18
 
18
 
Line 19... Line 19...
19
class ListeImagesDeterminationsProbables {
19
class ListeImagesDeterminationsProbables {
20
	
20
	
21
	private $imageIds = array();
21
	private $indexImagesIds = array();
22
	private $conteneur;
22
	private $conteneur;
23
	private $navigation;
23
	private $navigation;
24
	private $masque;
24
	private $masque;
Line 194... Line 194...
194
							($this->parametres['masque.protocole'] != null ? 'AND dvote.ce_protocole = '.$this->parametres['masque.protocole'].' ' : ' ');
194
							($this->parametres['masque.protocole'] != null ? 'AND dvote.ce_protocole = '.$this->parametres['masque.protocole'].' ' : ' ');
195
		$requeteLiaisons .= 'GROUP BY dvote.ce_image '.
195
		$requeteLiaisons .= 'GROUP BY dvote.ce_image '.
196
							($this->parametres['masque.valeur_vote_min'] != null ? 'HAVING AVG(dvote.valeur) >= '.$this->parametres['masque.valeur_vote_min'].' ' : ' ').
196
							($this->parametres['masque.valeur_vote_min'] != null ? 'HAVING AVG(dvote.valeur) >= '.$this->parametres['masque.valeur_vote_min'].' ' : ' ').
197
							'ORDER BY moyenne_votes';
197
							'ORDER BY moyenne_votes';
198
		$requeteLiaisons .= $this->gestionBdd->getLimitSql();
198
		$requeteLiaisons .= $this->gestionBdd->getLimitSql();
-
 
199
 
199
		return $this->bdd->recupererTous($requeteLiaisons);
200
		return $this->bdd->recupererTous($requeteLiaisons);
200
	}
201
	}
Line 201... Line 202...
201
	
202
	
202
	private function doitJoindreTableVotes() {
203
	private function doitJoindreTableVotes() {
Line 225... Line 226...
225
	/**
226
	/**
226
	* Retourner un tableau d'images formaté en fonction des liaisons trouvées
227
	* Retourner un tableau d'images formaté en fonction des liaisons trouvées
227
	* @param $liaisons les liaisons de la table del_obs_images
228
	* @param $liaisons les liaisons de la table del_obs_images
228
	* */
229
	* */
229
	private function chargerImage($liaisons) {
230
	private function chargerImage($liaisons) {
-
 
231
		
-
 
232
		//echo '<pre>'.print_r($liaisons,true).'</pre>';exit;
230
		$images = array();
233
		$images = array();
231
		foreach ($liaisons as $liaison) {
234
		foreach ($liaisons as $liaison) {
232
			$idObs = $liaison['id_observation'];
235
			$idObs = $liaison['id_observation'];
233
			$idImage = $liaison['id_image'];
236
			$idImage = $liaison['id_image'];
234
			// On enregistre l'ID de l'obs pour n'effectuer qu'une seule requête par la suite
237
			// On enregistre l'ID de l'obs pour n'effectuer qu'une seule requête par la suite
235
			$this->obsIds[] = $idObs;
238
			$this->obsIds[] = $idObs;
236
			$index = $liaison['id_image'].'-'.$liaison['id_observation'];
239
			$index = $liaison['id_image'].'-'.$liaison['id_observation'];
-
 
240
			$this->indexImagesIds[$idImage] = $index;
237
			$images[$index] = array(
241
			$images[$index] = array(
238
						'id_image' => $idImage, 
242
						'id_image' => $idImage, 
239
						'id_observation' => $idObs,
243
						'id_observation' => $idObs,
240
						'auteur.intitule' => $liaison['prenom'].' '.$liaison['nom'],
244
						'auteur.intitule' => $liaison['prenom'].' '.$liaison['nom'],
241
						'binaire.href' => $this->formaterLienImage($idImage),
245
						'binaire.href' => $this->formaterLienImage($idImage),
242
						'determination.famille' => $liaison['famille'],
246
						'determination.famille' => $liaison['famille'],
243
						'determination.ns' => $liaison['nom_ret'],
247
						'determination.ns' => $liaison['nom_ret'],
244
						'determination.nn' => $liaison['nom_ret_nn'],
248
						'determination.nn' => $liaison['nom_ret_nn'],
245
						'determination.nt' => $liaison['nt'],
249
						'determination.nt' => $liaison['nt'],
246
						'date_observation' => $liaison['date_observation'],
250
						'date_observation' => $liaison['date_observation'],
247
						'localite' => $this->formaterLieu($liaison)
251
						'localite' => $this->formaterLieu($liaison),
-
 
252
						'mots_cles_image_cel' => $this->formaterMotsClesCel($liaison['mots_cles_texte_image']),
-
 
253
						'mots_cles_image_del' => ""
248
			);
254
			);
249
		}
255
		}
250
		return $images;
256
		return $images;
251
	}
257
	}
Line 268... Line 274...
268
								'WHERE ce_observation IN ('.implode(',', $this->obsIds).') '.
274
								'WHERE ce_observation IN ('.implode(',', $this->obsIds).') '.
269
								'AND nom_sel IS NOT NULL'.
275
								'AND nom_sel IS NOT NULL'.
270
			  		') '.
276
			  		') '.
271
			  		'ORDER BY ce_proposition';   
277
			  		'ORDER BY ce_proposition';   
Line -... Line 278...
-
 
278
			
-
 
279
			$requeteMotsCles = 'SELECT tag, ce_image '.
-
 
280
							   'FROM del_image_tag '.
-
 
281
							   'WHERE ce_image IN ('.implode(',', array_keys($this->indexImagesIds)).') '.
-
 
282
							   'AND actif = 1 ';
272
			
283
			
273
			$resultatsPropositions = $this->bdd->recupererTous($requetePropositions);
284
			$resultatsPropositions = $this->bdd->recupererTous($requetePropositions);
-
 
285
			$resultatsVotes = $this->bdd->recupererTous($requeteVotes);
Line 274... Line 286...
274
			$resultatsVotes = $this->bdd->recupererTous($requeteVotes);
286
			$resultatsMotsCles = $this->bdd->recupererTous($requeteMotsCles);
275
			
287
			
Line 276... Line 288...
276
			$propositions = array();
288
			$propositions = array();
Line 302... Line 314...
302
					$score_ancienne_proposition = $propositions[$id_obs]['valeur'];
314
					$score_ancienne_proposition = $propositions[$id_obs]['valeur'];
303
					$propositions[$id_obs] = ($score >= $score_ancienne_proposition) ? 
315
					$propositions[$id_obs] = ($score >= $score_ancienne_proposition) ? 
304
													$proposition : $propositions[$id_obs];
316
													$proposition : $propositions[$id_obs];
305
				}
317
				}
306
			}
318
			}
307
				
319
			
-
 
320
			foreach ($resultatsMotsCles as $motCle) {
-
 
321
				$tag = $motCle['tag'];
-
 
322
				$index = $this->indexImagesIds[$motCle['ce_image']];
-
 
323
				if($images[$index]['mots_cles_image_del'] != "") {
-
 
324
					$tag = ",".$tag;
-
 
325
				}
-
 
326
				$images[$index]['mots_cles_image_del'] .= $tag ;
-
 
327
			}
-
 
328
 
308
			foreach ($images as $id => $image) {
329
			foreach ($images as $id => $image) {
309
				if ($this->doitRemplacerObservationParProposition($propositions, $image)) {					
330
				if ($this->doitRemplacerObservationParProposition($propositions, $image)) {					
310
					$id_obs = $image['id_observation'];
331
					$id_obs = $image['id_observation'];
311
					$images[$id]['determination.famille'] = $propositions[$id_obs]['famille'];
332
					$images[$id]['determination.famille'] = $propositions[$id_obs]['famille'];
312
					$images[$id]['determination.ns'] = $propositions[$id_obs]['nom_ret'];
333
					$images[$id]['determination.ns'] = $propositions[$id_obs]['nom_ret'];
313
					$images[$id]['determination.nn'] = $propositions[$id_obs]['nom_ret_nn'];
334
					$images[$id]['determination.nn'] = $propositions[$id_obs]['nom_ret_nn'];
314
					$images[$id]['determination.nt'] = $propositions[$id_obs]['nt'];
335
					$images[$id]['determination.nt'] = $propositions[$id_obs]['nt'];
315
				}
336
				}
Line -... Line 337...
-
 
337
				
316
				
338
				if(isset($images[$id]['determination.nn'])) {
-
 
339
					$images[$id]['url_fiche_eflore'] = $this->formaterUrlFicheEflore($images[$id]['determination.nn']);
317
				$images[$id]['url_fiche_eflore'] = $this->formaterUrlFicheEflore($images[$id]['determination.nn']);
340
				}
Line 318... Line 341...
318
			}
341
			}
319
		
342
		
Line 330... Line 353...
330
	}
353
	}
Line 331... Line 354...
331
	
354
	
332
	/*-------------------------------------------------------------------------------
355
	/*-------------------------------------------------------------------------------
333
								FORMATER ET METTRE EN FORME
356
								FORMATER ET METTRE EN FORME
-
 
357
	--------------------------------------------------------------------------------*/
-
 
358
	/**
-
 
359
	*  Formater les mots clés du cel en n'affichant que ceux faisant partie
-
 
360
	*  d'une liste définie dans le fichier de configuration
-
 
361
	*  @param $chaineMotCleCel la chaine de mots clés du cel
-
 
362
	*  @return string la chaine filtrée
-
 
363
	* */
-
 
364
	private function formaterMotsClesCel($chaineMotCleCel) {
-
 
365
		$tabMotsClesCel = explode(',', $chaineMotCleCel);
-
 
366
		$chaineMotsClesAffiches = $this->conteneur->getParametre('mots_cles_cel_affiches');
-
 
367
		$tabMotsClesAffiches = explode(',',$chaineMotsClesAffiches);
-
 
368
		
-
 
369
		return implode(',', array_intersect($tabMotsClesAffiches, $tabMotsClesCel));
Line 334... Line 370...
334
	--------------------------------------------------------------------------------*/
370
	}
335
	
371
	
336
	/**
372
	/**
337
	*  Formater une observation depuis une ligne liaison
373
	*  Formater une observation depuis une ligne liaison