Subversion Repositories eFlore/Applications.del

Rev

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

Rev 1274 Rev 1312
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 -... Line 41...
-
 
41
	
-
 
42
	
-
 
43
	/**
-
 
44
	 * RequeteSansParametres
-
 
45
	 *
-
 
46
	 * permet de vérifier qu'il n'y a aucun paramètre dans la requete, excepté les informations de start et limite,
-
 
47
	 * pour ajuster la requête pour un gain de temps
-
 
48
	 * @param array $ressources les ressources telles qu'elles sont passées au script
-
 
49
	 * @param array $parametres les paramètres tels qu'il sont passés au script
-
 
50
	 * */
-
 
51
	public function requeteSansParametres($ressources, $parametres) {
-
 
52
		$estSansParametres = true;
-
 
53
	
-
 
54
		if (sizeof($ressources) > 0) {
-
 
55
			$estSansParametres = false;
-
 
56
		}
-
 
57
	
-
 
58
		if (sizeof($parametres) > 2) {
-
 
59
			// 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
-
 
60
			$estSansParametres = false;
-
 
61
		} else {
-
 
62
			if (sizeof($parametres) == 1) {
-
 
63
				if (!(isset($parametres['navigation.depart']) || isset($parametres['navigation.limite']))) {
-
 
64
					// s'il y a des paramètres, seul les paramètres de navigation n'interfère pas sur la requête
-
 
65
					$estSansParametres = false;
-
 
66
				}
-
 
67
			} elseif (sizeof($parametres) == 2) {
-
 
68
				// s'il y a des paramètres, seul les paramètres de navigation n'interfère pas sur la requête
-
 
69
				if (!(isset($parametres['navigation.depart']) && isset($parametres['navigation.limite']))) {
-
 
70
					$estSansParametres = false;
-
 
71
				}
-
 
72
			}
-
 
73
		}
-
 
74
	
-
 
75
		return $estSansParametres;
-
 
76
	}
41
	
77
	
42
	/**
78
	/**
43
	 * Méthode principale de la classe.
79
	 * Méthode principale de la classe.
44
	 * Lance la récupération des images dans la base et les place dans un objet ResultatService 
80
	 * Lance la récupération des images dans la base et les place dans un objet ResultatService 
45
	 * pour l'afficher.
81
	 * pour l'afficher.
46
	 * @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
82
	 * @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
47
	 * @param array $parametres les paramètres situés après le ? dans l'url
83
	 * @param array $parametres les paramètres situés après le ? dans l'url
48
	 * */
84
	 * */
-
 
85
	public function consulter($ressources, $parametres) {
49
	public function consulter($ressources, $parametres) {
86
		
Line 50... Line 87...
50
		$this->initialiserRessourcesEtParametres($ressources, $parametres);
87
		$this->initialiserRessourcesEtParametres($ressources, $parametres);
51
		
88
		
52
		// Gestion des configuration du script
89
		// Gestion des configuration du script
Line 53... Line 90...
53
		$this->configurer();
90
		$this->configurer();
54
		$this->verifierConfiguration();
91
		$this->verifierConfiguration();
Line 55... Line -...
55
		
-
 
56
		$this->verifierParametresTri();
-
 
57
		$this->initialiserTri();
-
 
58
		
-
 
59
		// Lancement du service
-
 
60
		$liaisons = $this->chargerLiaisons();
-
 
Line -... Line 92...
-
 
92
		
-
 
93
		$this->verifierParametresTri();
-
 
94
		$this->initialiserTri();
-
 
95
		
-
 
96
		
-
 
97
		if ($this->requeteSansParametres($ressources, $parametres)) {
-
 
98
				
61
		$total = $this->compterImages();
99
			// Lancement du service
-
 
100
			$liaisons = $this->chargerLiaisonsSimple();
-
 
101
			$images = $this->chargerImage($liaisons);
-
 
102
			$images = $this->chargerVotes($images);
-
 
103
				
-
 
104
			// Mettre en forme le résultat et l'envoyer pour affichage
-
 
105
			$resultat = new ResultatService();
-
 
106
			$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $images);
-
 
107
			return $resultat;
-
 
108
		} else {
-
 
109
			
-
 
110
			// Lancement du service
-
 
111
			$liaisons = $this->chargerLiaisons();
-
 
112
			$total = $this->compterImages();
62
		$this->navigation->setTotal($total);
113
			$this->navigation->setTotal($total);
63
		$images = $this->chargerImage($liaisons);
114
			$images = $this->chargerImage($liaisons);
64
		$images = $this->chargerVotes($images);
115
			$images = $this->chargerVotes($images);
-
 
116
			
-
 
117
			// Mettre en forme le résultat et l'envoyer pour affichage
65
		
118
			$resultat = new ResultatService();
Line 66... Line 119...
66
		// Mettre en forme le résultat et l'envoyer pour affichage
119
			$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $images);
67
		$resultat = new ResultatService();
120
			return $resultat;
68
		$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $images);
121
			
Line 436... Line 489...
436
		$requeteLiaisons .= $this->gestionBdd->getLimitSql();
489
		$requeteLiaisons .= $this->gestionBdd->getLimitSql();
Line 437... Line 490...
437
 
490
 
438
		return $this->bdd->recupererTous($requeteLiaisons);
491
		return $this->bdd->recupererTous($requeteLiaisons);
Line -... Line 492...
-
 
492
	}
-
 
493
	
-
 
494
	
-
 
495
	/**
-
 
496
	 * Chargement depuis la bdd de toutes les liaisons entre images et observations
-
 
497
	 * */
-
 
498
	private function chargerLiaisonsSimple() {
-
 
499
	
-
 
500
		// Charger les obs images / images
-
 
501
		// récupérer les ids
-
 
502
		// récupérer les observations
-
 
503
 
-
 
504
		$requeteImages = 'SELECT SQL_CALC_FOUND_ROWS *, di.mots_cles_texte as mots_cles_texte_image FROM del_obs_image doi '.
-
 
505
						'INNER JOIN del_image di ON doi.id_image = di.id_image '.
-
 
506
						'ORDER BY id_observation DESC'.
-
 
507
						$this->gestionBdd->getLimitSql();
-
 
508
		$liaisons = $this->bdd->recupererTous($requeteImages);
-
 
509
		
-
 
510
		$total = $this->compterImages();
-
 
511
		$this->navigation->setTotal($total);
-
 
512
		
-
 
513
		$idsObservations = array();
-
 
514
		foreach ($liaisons as $image) {
-
 
515
			$idObs = $image['id_observation'];
-
 
516
			$idsObservations[$idObs] = $idObs;
-
 
517
		}
-
 
518
		
-
 
519
		$requeteObservations = 'SELECT * FROM del_observation dob '.
-
 
520
							'LEFT JOIN del_utilisateur du ON dob.ce_utilisateur = du.id_utilisateur '.
-
 
521
							'WHERE id_observation IN ('.implode(',', $idsObservations).')';
-
 
522
		$resultatsObservations = $this->bdd->recupererTous($requeteObservations);
-
 
523
		
-
 
524
		$observations = array();
-
 
525
		foreach ($resultatsObservations as $id => $observation) {
-
 
526
			$idObs = $observation['id_observation'];
-
 
527
			$observations[$idObs] = $observation;
-
 
528
		}
-
 
529
		
-
 
530
		foreach ($liaisons as $id => $liaison) {
-
 
531
			$idObs = $liaison['id_observation'];
-
 
532
			
-
 
533
			$observation = $observations[$idObs];
-
 
534
			foreach ($observation as $cle => $valeur) {
-
 
535
				$liaisons[$id][$cle] = $valeur;
-
 
536
			}
-
 
537
		}
-
 
538
		
-
 
539
		return $liaisons;
-
 
540
	}
439
	}
541
	
440
	
542
	
441
	private function assemblercomptageOccurencesMotsClesCel() {
543
	private function assemblercomptageOccurencesMotsClesCel() {
442
		$chaineMotsClesAffiches = $this->conteneur->getParametre('mots_cles_cel_affiches');
544
		$chaineMotsClesAffiches = $this->conteneur->getParametre('mots_cles_cel_affiches');
Line 495... Line 597...
495
			
597
			
496
			if($liaison['ce_utilisateur'] == 0) {
598
			if($liaison['ce_utilisateur'] == 0) {
497
				$liaison['prenom'] = $liaison['prenom_utilisateur']; 
599
				$liaison['prenom'] = $liaison['prenom_utilisateur']; 
498
				$liaison['nom'] = $liaison['nom_utilisateur'];
600
				$liaison['nom'] = $liaison['nom_utilisateur'];
499
			}
-
 
500
			
601
			}
501
			// On enregistre l'ID de l'image pour n'effectuer qu'une seule requête par la suite
602
			// On enregistre l'ID de l'image pour n'effectuer qu'une seule requête par la suite
502
			$this->imageIds[] = $idImage;
603
			$this->imageIds[] = $idImage;
503
			$index = $liaison['id_image'].'-'.$liaison['id_observation'];
604
			$index = $liaison['id_image'].'-'.$liaison['id_observation'];
504
			$images[$index] = array('id_image' => $idImage, 'binaire.href' => $this->formaterLienImage($idImage),
605
			$images[$index] = array('id_image' => $idImage, 'binaire.href' => $this->formaterLienImage($idImage),
Line 554... Line 655...
554
	*  @param $liaison liaison issue de la recherche
655
	*  @param $liaison liaison issue de la recherche
555
	*  @return $observation l'observation mise en forme
656
	*  @return $observation l'observation mise en forme
556
	* */
657
	* */
557
	private function formaterObservation($liaison) {
658
	private function formaterObservation($liaison) {
558
		$observation = array();
659
		$observation = array();
559
		
-
 
560
		foreach ($this->mappingObservation as $nomOriginal => $nomFinal) {
660
		foreach ($this->mappingObservation as $nomOriginal => $nomFinal) {
561
			$observation[$nomFinal] = $liaison[$nomOriginal];
661
			$observation[$nomFinal] = $liaison[$nomOriginal];
562
		}
662
		}
Line 563... Line 663...
563
 
663