Subversion Repositories eFlore/Applications.del

Rev

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

Rev 1815 Rev 1874
Line 27... Line 27...
27
 
27
 
28
	private $erreurs = array();
28
	private $erreurs = array();
29
	private $parametres = array();
29
	private $parametres = array();
Line -... Line 30...
-
 
30
	private $protocoles = array();
30
	private $protocoles = array();
31
 
31
 
32
	private $idsImagesOrdonnees = array();
32
	private $resultats = array();
33
	private $resultats = array();
Line 33... Line 34...
33
	private $propositions = array();
34
	private $propositions = array();
Line 54... Line 55...
54
	public function consulter($parametres) {
55
	public function consulter($parametres) {
55
		$this->parametres = $parametres;
56
		$this->parametres = $parametres;
56
		$this->verifierParametres();
57
		$this->verifierParametres();
Line 57... Line 58...
57
 
58
 
-
 
59
		// Lancement du service
58
		// Lancement du service
60
		$this->idsImagesOrdonnees = $this->getIdsImages();
59
		$infos = $this->chargerInfos();
61
		$infos = $this->chargerInfos();
60
		$this->modifierEnteteTotal();
62
		$this->modifierEnteteTotal();
61
		if ($infos) {
63
		if ($infos) {
62
			$this->traiterResultats($infos);
64
			$this->traiterResultats($infos);
Line 99... Line 101...
99
				$this->erreurs[] = "La valeur minimum de valeur des votes doit être un entier compris entre 0 et 5.";
101
				$this->erreurs[] = "La valeur minimum de valeur des votes doit être un entier compris entre 0 et 5.";
100
			}
102
			}
101
		}
103
		}
102
	}
104
	}
Line 103... Line 105...
103
 
105
 
104
	private function chargerInfos() {
106
	private function getIdsImages() {
105
		$whereClause = $this->getClauseWhere();
107
		$whereClause = $this->getClauseWhere();
106
		$depart = $this->navigation->getDepart();
108
		$depart = $this->navigation->getDepart();
Line 107... Line 109...
107
		$limite = $this->navigation->getLimite();
109
		$limite = $this->navigation->getLimite();
108
 
-
 
109
		$requete = 'SELECT SQL_CALC_FOUND_ROWS di.id_observation AS id_observation, nom_referentiel, nom_ret, '.
-
 
110
			'nom_ret_nn, nt, famille, ce_zone_geo, zone_geo, lieudit, station, milieu, date_observation, '.
-
 
111
			'di.mots_cles_texte AS mots_cles_texte, di.commentaire AS commentaire, '.
-
 
112
			'di.i_mots_cles_texte AS mots_cles_texte_image, date_transmission, di.id_image AS id_image, '.
-
 
113
			'di.ce_utilisateur AS ce_utilisateur, prenom, nom, courriel, di.nom_utilisateur, di.prenom_utilisateur, '.
110
 
114
			'di.courriel_utilisateur, nom_original, ce_protocole, moyenne, nb_votes, nb_tags '.
-
 
115
			'FROM v_del_image AS di '.
-
 
116
			'	LEFT JOIN del_utilisateur AS du '.
111
		$requete = 'SELECT SQL_CALC_FOUND_ROWS di.id_image '.
117
			'		ON du.id_utilisateur = IF(LENGTH(di.ce_utilisateur) > 5, 0, di.ce_utilisateur) '.
112
			'FROM del_image AS di '.
118
			'	LEFT JOIN del_image_stat AS ds ON (di.id_image = ds.ce_image) '.
-
 
119
			"$whereClause ".
113
			'	LEFT JOIN del_image_stat AS ds ON (di.id_image = ds.ce_image) '.
120
			'GROUP BY id_image '.
114
			"$whereClause ".
121
			'ORDER BY moyenne '.
115
			'ORDER BY moyenne DESC '.
122
			"LIMIT $depart, $limite ".
116
			"LIMIT $depart, $limite ".
123
			' -- '.__FILE__.' : '.__LINE__;
117
			' -- '.__FILE__.' : '.__LINE__;
-
 
118
		//Debug::printr($requete);
-
 
119
		$resultats = $this->bdd->recupererTous($requete);
-
 
120
		$idImgs = array();
-
 
121
		if ($resultats !== false ) {
-
 
122
			foreach ($resultats as $resultat) {
-
 
123
				$idImgs[] = $resultat['id_image'];
-
 
124
			}
124
		// TODO : optimisation voir http://www.tela-botanica.org/wikini/DevInformatiques/wakka.php?wiki=AppliDelOptmisationVues
125
		}
Line 125... Line 126...
125
		return $this->bdd->recupererTous($requete);
126
		return $idImgs;
126
	}
127
	}
127
 
128
 
Line 136... Line 137...
136
			$where[] = "moyenne >= $voteP";
137
			$where[] = "moyenne >= $voteP";
137
		}
138
		}
138
		return (count($where) > 0) ? 'WHERE '.implode(' AND ', $where).' ' : '';
139
		return (count($where) > 0) ? 'WHERE '.implode(' AND ', $where).' ' : '';
139
	}
140
	}
Line -... Line 141...
-
 
141
 
-
 
142
	private function chargerInfos() {
-
 
143
		$idImgsConcat = implode(',', $this->idsImagesOrdonnees);
-
 
144
 
-
 
145
		$requete = 'SELECT SQL_CALC_FOUND_ROWS '.
-
 
146
			'di.id_image, di.mots_cles_texte AS mots_cles_texte_image, '.
-
 
147
			'do.id_observation, nom_referentiel, nom_ret, '.
-
 
148
			'nom_ret_nn, nt, famille, ce_zone_geo, zone_geo, date_observation, '.
-
 
149
			'do.ce_utilisateur, do.nom_utilisateur, do.prenom_utilisateur, '.
-
 
150
			'du.prenom, du.nom '.
-
 
151
			'FROM del_image AS di '.
-
 
152
			'	INNER JOIN del_observation AS do ON (di.ce_observation = do.id_observation) '.
-
 
153
			'	LEFT JOIN del_utilisateur AS du ON (di.ce_utilisateur = du.id_utilisateur) '.
-
 
154
			'	LEFT JOIN del_image_stat AS ds ON (di.id_image = ds.ce_image) '.
-
 
155
			"WHERE di.id_image IN ($idImgsConcat) ".
-
 
156
			'ORDER BY moyenne DESC '.
-
 
157
			' -- '.__FILE__.' : '.__LINE__;
-
 
158
		return $this->bdd->recupererTous($requete);
-
 
159
	}
140
 
160
 
141
	private function modifierEnteteTotal() {
161
	private function modifierEnteteTotal() {
142
		$requete = 'SELECT FOUND_ROWS() AS nbre -- '.__FILE__.' : '.__LINE__;
162
		$requete = 'SELECT FOUND_ROWS() AS nbre -- '.__FILE__.' : '.__LINE__;
143
		$compte = $this->bdd->recuperer($requete);
163
		$compte = $this->bdd->recuperer($requete);
144
		$total = ($compte !== false) ? (int) $compte['nbre'] : 0;
164
		$total = ($compte !== false) ? (int) $compte['nbre'] : 0;
Line 148... Line 168...
148
	/**
168
	/**
149
	* Retourner un tableau d'images formaté en fonction des liaisons trouvées
169
	* Retourner un tableau d'images formaté en fonction des liaisons trouvées
150
	* @param $infos les infos sur les images et observations
170
	* @param $infos les infos sur les images et observations
151
	* */
171
	* */
152
	private function traiterResultats($infos) {
172
	private function traiterResultats($infos) {
-
 
173
		//Debug::printr($infos);
153
		foreach ($infos as $info) {
174
		foreach ($infos as $info) {
154
			$idImage = $info['id_image'];
175
			$idImage = $info['id_image'];
155
			$index = $this->formaterIndexResultat($info);
176
			$index = $this->formaterIndexResultat($info);
Line 156... Line 177...
156
 
177