Subversion Repositories eFlore/Applications.del

Rev

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

Rev 1320 Rev 1321
Line 37... Line 37...
37
		$this->masque = $conteneur->getMasque();
37
		$this->masque = $conteneur->getMasque();
38
		$this->gestionBdd = $conteneur->getGestionBdd();
38
		$this->gestionBdd = $conteneur->getGestionBdd();
39
		$this->bdd = $this->gestionBdd->getBdd();	
39
		$this->bdd = $this->gestionBdd->getBdd();	
40
	}
40
	}
Line 41... Line -...
41
	
-
 
42
	
-
 
43
	/** Nettoyer les paramètres pour ne pas accepter les %
-
 
44
	 * */
-
 
45
	public function nettoyerParametres($parametres) {
-
 
46
		$parametresRetour = array();
-
 
47
		foreach ($parametres as $cle => $valeur) {
-
 
48
			$valSanPourcent = trim($valeur, "% ");
-
 
49
			if ($valSanPourcent != '') {
-
 
50
				$parametresRetour[$cle] = $valeur;
-
 
51
			}
-
 
52
		}
-
 
53
		
-
 
54
		return $parametresRetour;
-
 
55
	}
-
 
56
	
-
 
57
	/**
-
 
58
	 * RequeteSansParametres
-
 
59
	 *
-
 
60
	 * permet de vérifier qu'il n'y a aucun paramètre dans la requete, excepté les informations de start et limite,
-
 
61
	 * pour ajuster la requête pour un gain de temps
-
 
62
	 * @param array $ressources les ressources telles qu'elles sont passées au script
-
 
63
	 * @param array $parametres les paramètres tels qu'il sont passés au script
-
 
64
	 * */
-
 
65
	public function requeteSansParametres($ressources, $parametres) {
-
 
66
		
-
 
67
		$estSansParametres = true;
-
 
68
	
-
 
69
		if (sizeof($ressources) > 0) {
-
 
70
			$estSansParametres = false;
-
 
71
		}
-
 
72
	
-
 
73
		if (sizeof($parametres) > 2) {
-
 
74
			
-
 
75
			// s'il y a plus de 2 paramètres, on est forcément dans le cas où on a demandé des paramètres autre que la navigation
-
 
76
			$estSansParametres = false;
-
 
77
		} else {
-
 
78
			if (sizeof($parametres) == 1) {
-
 
79
				if (!(isset($parametres['navigation.depart']) || isset($parametres['navigation.limite']))) {
-
 
80
					// s'il y a des paramètres, seul les paramètres de navigation n'interfère pas sur la requête
-
 
81
					$estSansParametres = false;
-
 
82
				}
-
 
83
			} elseif (sizeof($parametres) == 2) {
-
 
84
				// s'il y a des paramètres, seul les paramètres de navigation n'interfère pas sur la requête
-
 
85
				if (!(isset($parametres['navigation.depart']) && isset($parametres['navigation.limite']))) {
-
 
86
					$estSansParametres = false;
-
 
87
				}
-
 
88
			}
-
 
89
		}
-
 
90
	
-
 
91
		return $estSansParametres;
-
 
92
	}
-
 
93
	
41
	
94
	/**
42
	/**
95
	 * Méthode principale de la classe.
43
	 * Méthode principale de la classe.
96
	 * Lance la récupération des images dans la base et les place dans un objet ResultatService 
44
	 * Lance la récupération des images dans la base et les place dans un objet ResultatService 
97
	 * pour l'afficher.
45
	 * pour l'afficher.
98
	 * @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
46
	 * @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
99
	 * @param array $parametres les paramètres situés après le ? dans l'url
47
	 * @param array $parametres les paramètres situés après le ? dans l'url
100
	 * */
48
	 * */
101
	public function consulter($ressources, $parametres) {
-
 
102
		
49
	public function consulter($ressources, $parametres) {
Line 103... Line 50...
103
		$this->initialiserRessourcesEtParametres($ressources, $parametres);
50
		$this->initialiserRessourcesEtParametres($ressources, $parametres);
104
		
51
		
105
		// Gestion des configuration du script
52
		// Gestion des configuration du script
Line 106... Line 53...
106
		$this->configurer();
53
		$this->configurer();
107
		$this->verifierConfiguration();
54
		$this->verifierConfiguration();
Line 108... Line -...
108
		
-
 
109
		$this->verifierParametresTri();
-
 
110
		$this->initialiserTri();
-
 
111
		
55
		
112
		$parametres = $this->nettoyerParametres($parametres);
-
 
113
		if ($this->requeteSansParametres($ressources, $parametres)) {
-
 
114
				
-
 
115
			// Lancement du service
-
 
116
			$liaisons = $this->chargerLiaisonsSimple();
-
 
117
			$images = $this->chargerImage($liaisons);
-
 
118
			$images = $this->chargerVotes($images);
-
 
119
				
-
 
120
			// Mettre en forme le résultat et l'envoyer pour affichage
-
 
121
			$resultat = new ResultatService();
-
 
122
			$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $images);
-
 
123
			return $resultat;
56
		$this->verifierParametresTri();
124
		} else {
57
		$this->initialiserTri();
125
			
58
		
126
			// Lancement du service
59
		// Lancement du service
127
			$liaisons = $this->chargerLiaisons();
60
		$liaisons = $this->chargerLiaisons();
128
			$total = $this->compterImages();
61
		$total = $this->compterImages();
129
			$this->navigation->setTotal($total);
62
		$this->navigation->setTotal($total);
130
			$images = $this->chargerImage($liaisons);
63
		$images = $this->chargerImage($liaisons);
131
			$images = $this->chargerVotes($images);
64
		$images = $this->chargerVotes($images);
132
			
65
		
133
			// Mettre en forme le résultat et l'envoyer pour affichage
-
 
134
			$resultat = new ResultatService();
-
 
135
			$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $images);
66
		// Mettre en forme le résultat et l'envoyer pour affichage
Line 136... Line 67...
136
			return $resultat;
67
		$resultat = new ResultatService();
137
			
68
		$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $images);
138
		}
69
		return $resultat;
Line 257... Line 188...
257
	
188
	
258
	/**
189
	/**
259
	* Charger la clause WHERE en fonction des paramètres de masque
190
	* Charger la clause WHERE en fonction des paramètres de masque
260
	* */
191
	* */
261
	private function chargerClauseWhere() {
-
 
262
		
192
	private function chargerClauseWhere() {
263
		$where = array();
193
		$where = array();
264
		$tableauMasque = $this->masque->getMasque();
194
		$tableauMasque = $this->masque->getMasque();
265
		if (!empty($tableauMasque)) {
195
		if (!empty($tableauMasque)) {
266
			foreach($tableauMasque as $idMasque => $valeurMasque) {
196
			foreach($tableauMasque as $idMasque => $valeurMasque) {
Line 350... Line 280...
350
								 	'(nom LIKE '.$this->proteger($tableauNomPrenom[1].'%').' AND '.
280
								 	'(nom LIKE '.$this->proteger($tableauNomPrenom[1].'%').' AND '.
351
								  	'prenom LIKE '.$this->proteger($tableauNomPrenom[0].'%').') OR '.
281
								  	'prenom LIKE '.$this->proteger($tableauNomPrenom[0].'%').') OR '.
352
									'(dob.nom_utilisateur LIKE '.$this->proteger($tableauNomPrenom[0].'%').' AND '.
282
									'(dob.nom_utilisateur LIKE '.$this->proteger($tableauNomPrenom[0].'%').' AND '.
353
									'dob.prenom_utilisateur LIKE '.$this->proteger($tableauNomPrenom[1].'%').') OR '.
283
									'dob.prenom_utilisateur LIKE '.$this->proteger($tableauNomPrenom[1].'%').') OR '.
354
									'(dob.nom_utilisateur LIKE '.$this->proteger($tableauNomPrenom[1].'%').' AND '.
284
									'(dob.nom_utilisateur LIKE '.$this->proteger($tableauNomPrenom[1].'%').' AND '.
355
									'dob.prenom_utilisateur LIKE '.$this->proteger($tableauNomPrenom[0].'%').') OR '.
285
									'dob.prenom_utilisateur LIKE '.$this->proteger($tableauNomPrenom[0].'%').') '.
356
									'(nom LIKE '.$this->proteger($valeurMasque.'%').') OR '.
-
 
357
									'(prenom LIKE '.$this->proteger($valeurMasque.'%').') OR '.
-
 
358
									'(dob.nom_utilisateur LIKE '.$this->proteger($valeurMasque.'%').') OR '.
-
 
359
									'(dob.prenom_utilisateur LIKE '.$this->proteger($valeurMasque.'%').') '.
-
 
360
								  ')';
286
								  ')';
361
				} else {
287
				} else {
362
					$masque = '(
288
					$masque = '(
363
						            (nom LIKE '.$this->proteger($auteurId.'%').' OR '.
289
						            (nom LIKE '.$this->proteger($auteurId.'%').' OR '.
364
									'prenom LIKE '.$this->proteger($auteurId.'%').' OR '.
290
									'prenom LIKE '.$this->proteger($auteurId.'%').' OR '.
Line 444... Line 370...
444
		
370
		
445
		foreach($mots_cles as $mot_cle) {
371
		foreach($mots_cles as $mot_cle) {
446
			//TODO: rechercher sur les mots clés normalisés dans tous les cas ?
372
			//TODO: rechercher sur les mots clés normalisés dans tous les cas ?
447
			$requeteMotsCles = $this->proteger('%'.$mot_cle.'%');
373
			$requeteMotsCles = $this->proteger('%'.$mot_cle.'%');
-
 
374
			$motsCleProtege = $this->proteger($this->normaliserMotCle('%'.$mot_cle.'%'));
448
			$motsCleProtege = $this->proteger($this->normaliserMotCle('%'.$mot_cle.'%'));
375
			
-
 
376
			$requeteMotsClesImage = 'SELECT ce_image FROM del_image_tag WHERE tag_normalise LIKE '.$motsCleProtege.' AND actif = 1';
-
 
377
			$images = $this->bdd->recupererTous($requeteMotsClesImage);
-
 
378
			$idsImages = array();
-
 
379
			foreach ($images as $image) {
-
 
380
				$idsImages[] = $image['ce_image'];
-
 
381
			}
-
 
382
			
-
 
383
			if (!empty($idsImages)) {
-
 
384
				$requeteMotsClesImgPublic[] = 'di.id_image IN ('.implode(',', $idsImages).')';
-
 
385
			}
449
			$requeteMotsClesImgPublic[] = 'di.id_image IN (SELECT ce_image FROM del_image_tag WHERE tag_normalise LIKE '.$motsCleProtege.' AND actif = 1)';
386
			
450
			$requeteMotsClesImg[] = 'di.mots_cles_texte LIKE '.$requeteMotsCles;
387
			$requeteMotsClesImg[] = 'di.mots_cles_texte LIKE '.$requeteMotsCles;
451
			$requeteMotsClesObs[] = 'dob.mots_cles_texte LIKE '.$requeteMotsCles;
388
			$requeteMotsClesObs[] = 'dob.mots_cles_texte LIKE '.$requeteMotsCles;
Line 452... Line 389...
452
		}
389
		}
Line 458... Line 395...
458
		$masque = '('.
395
		$masque = '('.
459
					'('.$requeteMotsClesImgPublic.') OR '.
396
					'('.$requeteMotsClesImgPublic.') OR '.
460
		          	'('.$requeteMotsClesImg.') OR '.
397
		          	'('.$requeteMotsClesImg.') OR '.
461
		          	'('.$requeteMotsClesObs.') '.
398
		          	'('.$requeteMotsClesObs.') '.
462
		          ')';
399
		          ')';
463
		
-
 
464
		return $masque;                                                  			
400
		return $masque;                                                  			
465
	}
401
	}
Line 466... Line 402...
466
	
402
	
467
	/*-------------------------------------------------------------------------------
403
	/*-------------------------------------------------------------------------------
Line 470... Line 406...
470
	/**
406
	/**
471
	* Chargement depuis la bdd de toutes les liaisons entre images et observations
407
	* Chargement depuis la bdd de toutes les liaisons entre images et observations
472
	* */
408
	* */
473
	private function chargerLiaisons() {
409
	private function chargerLiaisons() {
Line 474... Line -...
474
	
-
 
475
		// 1. Récupérer les id observation
410
	
476
		$requeteObs = ' SELECT id_observation FROM del_observation dob LEFT JOIN del_utilisateur du ON dob.ce_utilisateur = du.id_utilisateur ';
-
 
477
		
-
 
478
		$masques = $this->masque->getMasque();
-
 
479
		$conditionsObs = array();
-
 
480
		
-
 
481
		if (isset($masques['masque'])) {
-
 
482
			$conditionLibre = array();
-
 
483
			$passe = $masques['masque'];
-
 
484
			
-
 
485
			if (!isset($masques['masque.ns'])) {
411
		$champs = array('dob.id_observation as id_observation', 'nom_sel', 'nom_sel_nn', 'nt', 'famille', 'ce_zone_geo', 'zone_geo', 
486
				$conditionsLibre[] = "nom_sel LIKE '$passe%'";
-
 
487
			}
-
 
488
			
-
 
489
			if (!isset($masques['masque.famille'])) {
412
						'lieudit', 'station', 'milieu', 'date_observation', 'dob.mots_cles_texte as mots_cles_texte', 'dob.commentaire as commentaire', 
490
				$conditionsLibre[] = "famille LIKE '$passe%'";
-
 
491
			}
-
 
492
			
-
 
493
			if (!isset($masques['masque.milieu'])) {
413
						'di.mots_cles_texte as mots_cles_texte_image ', 'date_transmission', 'di.id_image as id_image', 'di.ce_utilisateur as ce_utilisateur', 
494
				$conditionsLibre[] = "nom_sel LIKE '$passe%'";
-
 
495
			}
-
 
496
			
-
 
497
			if (!isset($masques['masque.tag'])) {
414
						'prenom', 'nom', 'courriel', 'dob.prenom_utilisateur', 'dob.nom_utilisateur', 'dob.courriel_utilisateur', 'nom_original');
498
				$conditionsLibre[] = "mots_cles_texte LIKE '%$passe%'";
-
 
499
			}
-
 
500
			
415
		// Attention le LEFT JOIN est indispensable pour ramener les images n'ayant pas de votes
501
			if (!isset($masques['masque.date'])) {
416
		// en cas de tri par votes
502
				$conditionsLibre[] = $this->creerFiltreDate($passe);
-
 
503
			}
-
 
504
			
417
		$requeteLiaisons = 'SELECT DISTINCT SQL_CALC_FOUND_ROWS '.implode(', ',$champs).' '.
505
			if (!isset($masques['masque.auteur'])) {
418
						   ($this->doitJoindreTableVotes() ?
506
				$conditionsLibre[] = $this->creerFiltreAuteur($passe);
-
 
507
			}
-
 
508
			
-
 
509
			$conditionsObs[] = implode(' OR ', $conditionsLibre);
-
 
510
		}
-
 
511
		
419
						   		', IF(dvote.ce_protocole = '.$this->parametres['protocole'].', AVG(dvote.valeur), 0) as total_votes ' :
512
		// nom sel
-
 
513
		if (isset($masques['masque.ns'])) {
-
 
514
			$nom_sel = $masques['masque.ns'];
-
 
515
			$conditionsObs[] = "nom_sel LIKE '$nom_sel%'";
-
 
516
		}
-
 
517
		
420
						   		''
518
		// famille
421
						   	).
519
		if (isset($masques['masque.famille'])) {
422
							($this->doitJoindreTableTags() ?
520
			$famille = $masques['masque.famille'];
423
								// attention le DISTINCT est indispensable !
521
			$conditionsObs[] = "famille LIKE '$famille%'";
-
 
522
		}
-
 
523
		
-
 
524
		// genre
-
 
525
		if (isset($masques['masque.genre'])) {
-
 
526
			$genre = $masques['masque.genre'];
-
 
527
			$conditionsObs[] = "nom_sel LIKE '$genre%'";
-
 
528
		}
-
 
529
			
424
						   		', (COUNT(DISTINCT dtag.id_tag) + '.$this->assemblercomptageOccurencesMotsClesCel().') as total_tags ' :
530
		// milieu
-
 
531
		if (isset($masques['masque.milieu'])) {
-
 
532
			$milieu = $masques['masque.milieu'];
-
 
533
			$conditionsObs[] = "nom_sel LIKE '$milieu%'";
-
 
534
		}
-
 
535
		
-
 
536
		// mots_cles_texte
-
 
537
		/*if (isset($masques['masque.tag'])) {
-
 
538
			$motscles = $masques['masque.tag'];
-
 
539
			$conditionsObs[] = "mots_cles_texte LIKE '%$motscles%'";
-
 
540
		}*/
-
 
541
		
425
						   		''
542
		// date 
-
 
543
		if (isset($masques['masque.date'])) {
-
 
544
			$date = $masques['masque.date'];
426
							).
545
			$conditionsObs[] = $this->creerFiltreDate($date);
-
 
546
		}
-
 
547
		
-
 
548
		// utilisateur
-
 
549
		if (isset($masques['masque.auteur'])) {
427
						   'FROM '.$this->gestionBdd->formaterTable('del_obs_image', 'doi').
550
			$auteur = $masques['masque.auteur'];
-
 
551
			$conditionsObs[] = $this->creerFiltreAuteur($auteur);
-
 
552
		}
-
 
553
		
-
 
554
		// commune
-
 
555
		if (isset($masques['masque.commune'])) {
-
 
556
			$commune = $masques['masque.commune'];
-
 
557
			$conditionsObs[] = " zone_geo LIKE ".$this->proteger(str_replace(array('-',' '), '_', $commune).'%');
-
 
558
		}
-
 
559
		
-
 
560
		// commune
-
 
561
		if (isset($masques['masque.departement'])) {
428
						   'INNER JOIN del_image di '.
562
			$dept = $masques['masque.departement'];
-
 
563
			$conditionsObs[] = $this->creerFiltreIdZoneGeo($dept);
-
 
564
		}
-
 
565
		
-
 
566
		if (!empty($conditionsObs)) {
-
 
567
			$where = ' WHERE '.implode(' AND ', $conditionsObs);
-
 
568
			$requeteObs .= $where;
-
 
569
		}
-
 
570
 
-
 
571
		$observations = $this->bdd->recupererTous($requeteObs);
-
 
572
		
-
 
573
		$tabIdsObs = array();
429
						   'ON doi.id_image = di.id_image '.
574
		foreach ($observations as $observation) {
430
						   'INNER JOIN del_observation dob '.
575
			$tabIdsObs[] = $observation['id_observation'];
-
 
576
		}
-
 
577
		$idsObs = implode(',', $tabIdsObs);
-
 
578
		if ($idsObs == '') {
-
 
579
			$idsObs = "''";
-
 
580
		}
-
 
581
		//var_dump($requeteObs);
-
 
582
		// 2. Récupérer les id images
-
 
583
		
-
 
584
		$conditionsImg = array();
-
 
585
		if (isset($masques['masque.tag'])) {
431
						   'ON doi.id_observation = dob.id_observation '.
586
			$tag = $masques['masque.tag'];
432
						   'LEFT JOIN del_utilisateur du '.
587
			$conditionsImg[] = " dit.tag_normalise LIKE '$tag%' ";
-
 
588
			$conditionsImg[] = " di.mots_cles_texte LIKE '%$tag%' ";
-
 
589
		}
-
 
590
 
-
 
591
		$idsImages = '';
433
						   'ON du.id_utilisateur = di.ce_utilisateur '.
592
		if (!empty($conditionsImg)) {
-
 
593
			$requeteImages = ' SELECT doi.id_image FROM del_obs_image doi '.
434
							($this->doitJoindreTableTags() ?
594
					' INNER JOIN del_image di ON doi.id_image = di.id_image '.
435
						   		'LEFT JOIN del_image_tag dtag '.
595
					' INNER JOIN del_image_tag dit ON dit.ce_image = di.id_image ';
-
 
596
			
-
 
597
			$where = ' WHERE '.implode(' OR ', $conditionsImg);
-
 
598
			$requeteImages .= $where;
-
 
599
			
-
 
600
			$images = $this->bdd->recupererTous($requeteImages);
-
 
601
			
-
 
602
			$tabIdsImages = array();
-
 
603
			foreach ($images as $image) {
-
 
604
				$tabIdsImages[] = $image['id_image'];
-
 
605
			}
-
 
606
			$idsImages = implode(',', $tabIdsImages);
-
 
607
			
-
 
608
			if ($idsImages == '') {
436
						   		'ON doi.id_image = dtag.ce_image AND dtag.actif = 1 ' :
609
				$idsImages = "''";
437
						   		''
610
			}
-
 
611
		}
438
							).
612
		//var_dump($requeteImages);exit();
-
 
613
		// 3. Récupérer la combinaison des deux
-
 
614
		$requeteLiaisons = 'SELECT DISTINCT SQL_CALC_FOUND_ROWS dob.id_observation as id_observation, nom_sel, nom_sel_nn, nt, famille, ce_zone_geo, zone_geo, lieudit, station, milieu, '.
-
 
615
		' date_observation, dob.mots_cles_texte as mots_cles_texte, dob.commentaire as commentaire, di.mots_cles_texte as mots_cles_texte_image , date_transmission, '.
-
 
616
		' di.id_image as id_image, di.ce_utilisateur as ce_utilisateur, prenom, nom, courriel, dob.prenom_utilisateur, dob.nom_utilisateur, dob.courriel_utilisateur, nom_original '.
439
							($this->doitJoindreTableVotes() ?
617
		' FROM del_obs_image doi '.
-
 
618
		' INNER JOIN del_image di ON doi.id_image = di.id_image '.
440
						   		'LEFT JOIN del_image_vote dvote '.
619
		' INNER JOIN del_observation dob ON doi.id_observation = dob.id_observation '.
-
 
620
		' LEFT JOIN del_utilisateur du ON du.id_utilisateur = di.ce_utilisateur ';
-
 
621
		
-
 
622
		
-
 
623
		$chaineWhere = '';
-
 
624
		if (isset($masques['masque.tag']) && sizeof($masques) == 1) {
-
 
625
			$connecteur = ' OR ';
441
						   		'ON doi.id_image = dvote.ce_image AND dvote.ce_protocole = '.$this->parametres['protocole'] :
626
		} else {
-
 
627
			$connecteur = ' AND ';
-
 
628
		}
-
 
629
		
442
						   		''
630
		$where = array();
-
 
631
		if (!empty($conditionsObs) && strlen($idsObs) > 0) {
-
 
632
			$where[] = ' dob.id_observation IN ( '.$idsObs.') ';
-
 
633
		}
-
 
634
		
-
 
635
		if (!empty($conditionsImg) && strlen($idsImages) > 0) {
-
 
636
			$where[] = 'di.id_image IN ( '.$idsImages.') ';
-
 
637
		}
-
 
638
		
-
 
639
		
-
 
640
		if (!empty($where)) {
443
						   	);
641
			$chaineWhere = ' WHERE '.implode($connecteur, $where);
444
		$requeteLiaisons .= $this->chargerClauseWhere();
642
			$requeteLiaisons .= $chaineWhere;
-
 
643
		}
445
		$requeteLiaisons .= $this->getTri();
644
		$requeteLiaisons .= $this->gestionBdd->getLimitSql();
-
 
645
		
-
 
646
		// on ne lance la requete que si on a trouvé des images ou des observations, sinon
-
 
647
		// cela signifie qu'il n'y a aucune correspondance dans la base
-
 
648
		$retour = array();
-
 
649
		if (strlen($idsObs) > 0 || strlen($idsImages) > 0) {
446
		$requeteLiaisons .= $this->gestionBdd->getLimitSql();
650
			$retour = $this->bdd->recupererTous($requeteLiaisons); 
-
 
651
		}
-
 
652
		
-
 
653
		return $retour;
-
 
654
	}
-
 
655
	
-
 
656
	
-
 
657
	/**
-
 
658
	 * Chargement depuis la bdd de toutes les liaisons entre images et observations
-
 
659
	 * */
-
 
660
	private function chargerLiaisonsSimple() {
-
 
661
	
-
 
662
		// Charger les obs images / images
-
 
663
		// récupérer les ids
-
 
664
		// récupérer les observations
-
 
665
 
-
 
666
		$requeteImages = 'SELECT *, di.mots_cles_texte as mots_cles_texte_image FROM del_obs_image doi '.
-
 
667
						'INNER JOIN del_image di ON doi.id_image = di.id_image '.
-
 
668
						'ORDER BY id_observation DESC'.
-
 
669
						$this->gestionBdd->getLimitSql();
-
 
670
		$liaisons = $this->bdd->recupererTous($requeteImages);
-
 
671
 
-
 
672
		
-
 
673
		$nbImages = 'SELECT count(id_image) as nb FROM del_obs_image';
-
 
674
		$requeteNbImages = $this->bdd->recupererTous($nbImages);
-
 
675
		
-
 
676
		$total = (int) $requeteNbImages[0]['nb'];
-
 
677
		$this->navigation->setTotal($total);
-
 
678
		
-
 
679
		$idsObservations = array();
-
 
680
		foreach ($liaisons as $image) {
-
 
681
			$idObs = $image['id_observation'];
-
 
682
			$idsObservations[$idObs] = $idObs;
-
 
683
		}
-
 
684
		
-
 
685
		$requeteObservations = 'SELECT * FROM del_observation dob '.
-
 
686
							'LEFT JOIN del_utilisateur du ON dob.ce_utilisateur = du.id_utilisateur '.
-
 
687
							'WHERE id_observation IN ('.implode(',', $idsObservations).')';
-
 
688
		$resultatsObservations = $this->bdd->recupererTous($requeteObservations);
-
 
689
		
-
 
690
		$observations = array();
-
 
691
		foreach ($resultatsObservations as $id => $observation) {
-
 
692
			$idObs = $observation['id_observation'];
-
 
693
			$observations[$idObs] = $observation;
-
 
694
		}
-
 
695
		
-
 
696
		foreach ($liaisons as $id => $liaison) {
-
 
697
			$idObs = $liaison['id_observation'];
-
 
698
			
-
 
699
			$observation = $observations[$idObs];
-
 
700
			foreach ($observation as $cle => $valeur) {
-
 
701
				$liaisons[$id][$cle] = $valeur;
-
 
702
			}
-
 
703
		}
-
 
704
		
-
 
705
		return $liaisons;
447
		return $this->bdd->recupererTous($requeteLiaisons);
Line 706... Line -...
706
	}
-
 
707
	
448
	}
708
	
449
	
709
	private function assemblercomptageOccurencesMotsClesCel() {
450
	private function assemblercomptageOccurencesMotsClesCel() {
710
		$chaineMotsClesAffiches = $this->conteneur->getParametre('mots_cles_cel_affiches');
451
		$chaineMotsClesAffiches = $this->conteneur->getParametre('mots_cles_cel_affiches');
Line 763... Line 504...
763
			
504
			
764
			if($liaison['ce_utilisateur'] == 0) {
505
			if($liaison['ce_utilisateur'] == 0) {
765
				$liaison['prenom'] = $liaison['prenom_utilisateur']; 
506
				$liaison['prenom'] = $liaison['prenom_utilisateur']; 
766
				$liaison['nom'] = $liaison['nom_utilisateur'];
507
				$liaison['nom'] = $liaison['nom_utilisateur'];
-
 
508
			}
767
			}
509
			
768
			// On enregistre l'ID de l'image pour n'effectuer qu'une seule requête par la suite
510
			// On enregistre l'ID de l'image pour n'effectuer qu'une seule requête par la suite
769
			$this->imageIds[] = $idImage;
511
			$this->imageIds[] = $idImage;
770
			$index = $liaison['id_image'].'-'.$liaison['id_observation'];
512
			$index = $liaison['id_image'].'-'.$liaison['id_observation'];
771
			$images[$index] = array('id_image' => $idImage, 'binaire.href' => $this->formaterLienImage($idImage),
513
			$images[$index] = array('id_image' => $idImage, 'binaire.href' => $this->formaterLienImage($idImage),
Line 821... Line 563...
821
	*  @param $liaison liaison issue de la recherche
563
	*  @param $liaison liaison issue de la recherche
822
	*  @return $observation l'observation mise en forme
564
	*  @return $observation l'observation mise en forme
823
	* */
565
	* */
824
	private function formaterObservation($liaison) {
566
	private function formaterObservation($liaison) {
825
		$observation = array();
567
		$observation = array();
-
 
568
		
826
		foreach ($this->mappingObservation as $nomOriginal => $nomFinal) {
569
		foreach ($this->mappingObservation as $nomOriginal => $nomFinal) {
827
			$observation[$nomFinal] = $liaison[$nomOriginal];
570
			$observation[$nomFinal] = $liaison[$nomOriginal];
828
		}
571
		}
Line 829... Line 572...
829
 
572