Subversion Repositories eFlore/Applications.del

Rev

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

Rev 719 Rev 725
Line 17... Line 17...
17
 
17
 
Line 18... Line 18...
18
class Images {
18
class Images {
19
	
19
	
-
 
20
	private $imageIds = array();
-
 
21
	private $conteneur;
-
 
22
	private $navigation;
20
	private $imageIds = array();
23
	private $masque;
Line 21... Line 24...
21
	private $conteneur;
24
	private $gestionBdd;
22
	
25
	private $bdd;
-
 
26
	
-
 
27
	public function __construct(Conteneur $conteneur = null) {
-
 
28
		$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
23
	
29
		$this->navigation = $conteneur->getNavigation();
24
	public function __construct(Conteneur $conteneur = null) {
30
		$this->masque = $conteneur->getMasque();
Line 25... Line 31...
25
		$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
31
		$this->gestionBdd = $conteneur->getGestionBdd();
26
		$this->bdd = $this->conteneur->getBdd();
32
		$this->bdd = $this->gestionBdd->getBdd();
27
	}
33
	}
Line 40... Line 46...
40
		$this->verifierConfiguration();
46
		$this->verifierConfiguration();
Line 41... Line 47...
41
		
47
		
42
		// Lancement du service
48
		// Lancement du service
43
		$liaisons = $this->chargerLiaisons();
49
		$liaisons = $this->chargerLiaisons();
44
		$total = $this->compterImages();
50
		$total = $this->compterImages();
45
		$this->conteneur->setTotal($total);
51
		$this->navigation->setTotal($total);
46
		$images = $this->chargerImage($liaisons);
52
		$images = $this->chargerImage($liaisons);
Line 47... Line 53...
47
		$images = $this->chargerVotes($images);
53
		$images = $this->chargerVotes($images);
48
		
54
		
Line 133... Line 139...
133
	/**
139
	/**
134
	* Charger la clause WHERE en fonction des paramètres de masque
140
	* Charger la clause WHERE en fonction des paramètres de masque
135
	* */
141
	* */
136
	private function chargerClauseWhere() {
142
	private function chargerClauseWhere() {
137
		$where = array();
143
		$where = array();
138
		
-
 
-
 
144
		$tableauMasque = $this->masque->getMasque();
139
		// TODO : vérifier les communes et les communes avec une apostrophe
145
		// TODO : vérifier les communes et les communes avec une apostrophe
-
 
146
		if (!empty($tableauMasque)) {
140
		foreach($this->conteneur->getMasque() as $idMasque => $valeurMasque) {
147
			foreach($tableauMasque as $idMasque => $valeurMasque) {
-
 
148
					
-
 
149
				$idMasque = str_replace('masque.', '', $idMasque);
-
 
150
				switch ($idMasque) {
-
 
151
					// nom du masque => nom BDD
-
 
152
					case 'auteur' :
-
 
153
						$auteurId = $this->masque->getMasque('auteur');
-
 
154
						if (is_numeric($auteurId)) {
-
 
155
							$where[] = ' ce_utilisateur = '.$auteurId;
-
 
156
						} else {
-
 
157
							if (strpos($auteurId, '@') === false) {
-
 
158
								$chaineNomPrenom = $this->getChaineNomPrenom($auteurId);
-
 
159
								$where[] = '((nom IN ('.$chaineNomPrenom.')) OR (prenom IN ('.$chaineNomPrenom.')))';
-
 
160
							} else {
-
 
161
								$where[] = " courriel LIKE ".$this->proteger($this->masque->getMasque('auteur').'%')." ";
-
 
162
							}
-
 
163
						}
-
 
164
						break;
Line 141... Line 165...
141
			
165
			
142
			$idMasque = str_replace('masque.', '', $idMasque);
166
						//TODO : gérer le format de la date ?
143
			switch ($idMasque) {
167
						// rechercher sur LIKE DATE % ?
144
				// nom du masque => nom BDD
168
						// TODO : recherche sur JOUR MOIS ou ANNEE
145
				case 'auteur' :
169
					case 'departement' :
146
					$auteurId = $this->conteneur->getMasque('auteur');
170
						$dept = $valeurMasque;
147
					if (is_numeric($auteurId)) {
-
 
148
						$where[] = ' ce_utilisateur = '.$auteurId;
-
 
149
					} else {
-
 
150
						if (strpos($auteurId, '@') === false) {
-
 
151
							$chaineNomPrenom = $this->getChaineNomPrenom($auteurId);
171
						if (is_numeric($dept)) {
152
							$where[] = '((nom IN ('.$chaineNomPrenom.')) OR (prenom IN ('.$chaineNomPrenom.')))';
172
							$where[] = " ce_zone_geo LIKE ".$this->proteger('INSEE-C:'.$dept.'%');
-
 
173
						} else {
153
						} else {
174
							//TODO : que faire si le département n'est pas numérique ?
154
							$where[] = " courriel LIKE ".$this->proteger($this->conteneur->getMasque('auteur').'%')." ";
175
							// TODO : modifier le modèle pour intégrer les zones geos !
155
						}
-
 
156
					}
176
						}
157
				break;
-
 
158
				
-
 
159
				//TODO : gérer le format de la date ?
-
 
160
				// rechercher sur LIKE DATE % ?
-
 
161
				// TODO : recherche sur JOUR MOIS ou ANNEE
-
 
162
				case 'departement' :
-
 
163
					$dept = $valeurMasque;
-
 
164
					if (is_numeric($dept)) {
-
 
165
						$where[] = " ce_zone_geo LIKE ".$this->proteger('INSEE-C:'.$dept.'%');
-
 
166
					} else {
-
 
167
						//TODO : que faire si le département n'est pas numérique ?
-
 
168
						// TODO : modifier le modèle pour intégrer les zones geos !
-
 
169
					}
-
 
170
				break;
177
						break;
171
				case 'genre' :
178
					case 'genre' :
172
						$where[] = ' '.$this->mappingFiltre['ns'].' LIKE '.$this->proteger($valeurMasque.' %');
179
						$where[] = ' '.$this->mappingFiltre['ns'].' LIKE '.$this->proteger($valeurMasque.' %');
173
				break;
180
						break;
174
				case 'tag' :
181
					case 'tag' :
175
					$where[] = " di.mots_cles_texte LIKE ".$this->proteger($valeurMasque);
182
						$where[] = " di.mots_cles_texte LIKE ".$this->proteger($valeurMasque);
176
				break;
183
						break;
177
				default:
184
					default:
178
					$where[] = ' '.$this->mappingFiltre[$idMasque].' = '.$this->proteger($valeurMasque);
185
						$where[] = ' '.$this->mappingFiltre[$idMasque].' = '.$this->proteger($valeurMasque);
-
 
186
					break;
179
				break;
187
				}
180
			}
188
			}	
Line 181... Line -...
181
		}
-
 
182
		
189
		}
183
		
190
		
184
		if (!empty($where)) {
191
		if (!empty($where)) {
185
			return ' WHERE '.implode('AND', $where);
192
			return ' WHERE '.implode('AND', $where);
186
		} else {
193
		} else {
Line 195... Line 202...
195
	* Chargement depuis la bdd de toutes les liaisons entre images et observations
202
	* Chargement depuis la bdd de toutes les liaisons entre images et observations
196
	* */
203
	* */
197
	private function chargerLiaisons() {
204
	private function chargerLiaisons() {
Line 198... Line 205...
198
	
205
	
199
		$requeteLiaisons = 'SELECT SQL_CALC_FOUND_ROWS * '.
206
		$requeteLiaisons = 'SELECT SQL_CALC_FOUND_ROWS * '.
200
						   'FROM '.$this->conteneur->getSchemaBdd().'.del_obs_images doi '.
207
						   'FROM '.$this->gestionBdd->formaterTable('del_obs_images', 'doi').
201
						   'INNER JOIN del_image di '.
208
						   'INNER JOIN del_image di '.
202
						   'ON doi.ce_image = di.id_image '.
209
						   'ON doi.ce_image = di.id_image '.
203
						   'INNER JOIN del_observation dob '.
210
						   'INNER JOIN del_observation dob '.
204
						   'ON doi.ce_observation = dob.id_observation '.
211
						   'ON doi.ce_observation = dob.id_observation '.
205
						   'INNER JOIN del_utilisateur du '.
212
						   'INNER JOIN del_utilisateur du '.
206
						   'ON du.id_utilisateur = doi.ce_utilisateur';
213
						   'ON du.id_utilisateur = doi.ce_utilisateur';
207
		$requeteLiaisons .= $this->chargerClauseWhere();
214
		$requeteLiaisons .= $this->chargerClauseWhere();
208
		$requeteLiaisons .= $this->conteneur->getLimitSql();
215
		$requeteLiaisons .= $this->gestionBdd->getLimitSql();
209
		return $this->bdd->recupererTous($requeteLiaisons);
216
		return $this->bdd->recupererTous($requeteLiaisons);
Line 210... Line 217...
210
	}
217
	}
211
	
218
	
Line 244... Line 251...
244
		
251
		
245
		if (sizeof($this->imageIds) > 0) {
252
		if (sizeof($this->imageIds) > 0) {
Line 246... Line 253...
246
			$chaineImageIds = implode(',', $this->imageIds);
253
			$chaineImageIds = implode(',', $this->imageIds);
247
			
254
			
248
			$requeteVotes = 'SELECT * FROM '.
255
			$requeteVotes = 'SELECT * FROM '.
249
			                $this->conteneur->getSchemaBdd().'.del_vote_image '.
256
			                $this->gestionBdd->formaterTable('del_vote_image ').
Line 250... Line 257...
250
			                'WHERE ce_image IN ('.$chaineImageIds.')';
257
			                'WHERE ce_image IN ('.$chaineImageIds.')';