Line 21... |
Line 21... |
21 |
private $conteneur;
|
21 |
private $conteneur;
|
22 |
private $navigation;
|
22 |
private $navigation;
|
23 |
private $masque;
|
23 |
private $masque;
|
24 |
private $gestionBdd;
|
24 |
private $gestionBdd;
|
25 |
private $bdd;
|
25 |
private $bdd;
|
- |
|
26 |
private $parametres = array();
|
- |
|
27 |
private $ressources = array();
|
Line 26... |
Line 28... |
26 |
|
28 |
|
27 |
public function __construct(Conteneur $conteneur = null) {
|
29 |
public function __construct(Conteneur $conteneur = null) {
|
28 |
$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
|
30 |
$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
|
29 |
$this->conteneur->chargerConfiguration('config_departements_bruts.ini');
|
31 |
$this->conteneur->chargerConfiguration('config_departements_bruts.ini');
|
30 |
$this->conteneur->chargerConfiguration('config_observations.ini');
|
32 |
$this->conteneur->chargerConfiguration('config_observations.ini');
|
31 |
$this->conteneur->chargerConfiguration('config_votes.ini');
|
33 |
$this->conteneur->chargerConfiguration('config_mapping_votes.ini');
|
32 |
$this->navigation = $conteneur->getNavigation();
|
34 |
$this->navigation = $conteneur->getNavigation();
|
33 |
$this->masque = $conteneur->getMasque();
|
35 |
$this->masque = $conteneur->getMasque();
|
34 |
$this->gestionBdd = $conteneur->getGestionBdd();
|
36 |
$this->gestionBdd = $conteneur->getGestionBdd();
|
35 |
$this->bdd = $this->gestionBdd->getBdd();
|
37 |
$this->bdd = $this->gestionBdd->getBdd();
|
Line 41... |
Line 43... |
41 |
* pour l'afficher.
|
43 |
* pour l'afficher.
|
42 |
* @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
|
44 |
* @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
|
43 |
* @param array $parametres les paramètres situés après le ? dans l'url
|
45 |
* @param array $parametres les paramètres situés après le ? dans l'url
|
44 |
* */
|
46 |
* */
|
45 |
public function consulter($ressources, $parametres) {
|
47 |
public function consulter($ressources, $parametres) {
|
- |
|
48 |
$this->initialiserRessourcesEtParametres($ressources, $parametres);
|
Line 46... |
Line 49... |
46 |
|
49 |
|
47 |
// Gestion des configuration du script
|
50 |
// Gestion des configuration du script
|
48 |
$this->configurer();
|
51 |
$this->configurer();
|
Line 60... |
Line 63... |
60 |
$resultat = new ResultatService();
|
63 |
$resultat = new ResultatService();
|
61 |
$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $observations);
|
64 |
$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $observations);
|
62 |
return $resultat;
|
65 |
return $resultat;
|
63 |
}
|
66 |
}
|
Line -... |
Line 67... |
- |
|
67 |
|
- |
|
68 |
private function initialiserRessourcesEtParametres($ressources, $parametres) {
|
- |
|
69 |
$this->ressources = $ressources;
|
- |
|
70 |
$this->parametres = $parametres;
|
64 |
|
71 |
}
|
65 |
/*-------------------------------------------------------------------------------
|
72 |
/*-------------------------------------------------------------------------------
|
66 |
CONFIGURATION DU SERVICE
|
73 |
CONFIGURATION DU SERVICE
|
67 |
--------------------------------------------------------------------------------*/
|
74 |
--------------------------------------------------------------------------------*/
|
68 |
/**
|
75 |
/**
|
Line 150... |
Line 157... |
150 |
|
157 |
|
151 |
$idMasque = str_replace('masque.', '', $idMasque);
|
158 |
$idMasque = str_replace('masque.', '', $idMasque);
|
152 |
switch ($idMasque) {
|
159 |
switch ($idMasque) {
|
153 |
// nom du masque => nom BDD
|
160 |
// nom du masque => nom BDD
|
154 |
case 'auteur' :
|
161 |
case 'auteur' :
|
- |
|
162 |
$whereAuteur = ' '.$this->creerFiltreAuteur($this->masque->getMasque('auteur'));
|
- |
|
163 |
if($whereAuteur != '') {
|
- |
|
164 |
$where[] = $whereAuteur;
|
155 |
$where[] = $this->creerFiltreAuteur($this->masque->getMasque('auteur'));
|
165 |
}
|
156 |
break;
|
166 |
break;
|
157 |
case 'date' :
|
167 |
case 'date' :
|
- |
|
168 |
$whereDate = ' '.$this->creerFiltreDate($valeurMasque);
|
- |
|
169 |
if($whereDate != '') {
|
- |
|
170 |
$where[] = $whereDate;
|
158 |
$where[] = $this->creerFiltreDate($valeurMasque);
|
171 |
}
|
159 |
break;
|
172 |
break;
|
160 |
case 'departement' :
|
173 |
case 'departement' :
|
161 |
$where[] = $this->creerFiltreIdZoneGeo($valeurMasque);
|
174 |
$where[] = ' '.$this->creerFiltreIdZoneGeo($valeurMasque);
|
162 |
break;
|
175 |
break;
|
163 |
case 'genre' :
|
176 |
case 'genre' :
|
164 |
$where[] = ' '.$this->mappingFiltre['ns'].' LIKE '.$this->proteger('%'.$valeurMasque.'% %');
|
177 |
$where[] = ' '.$this->mappingFiltre['ns'].' LIKE '.$this->proteger('%'.$valeurMasque.'% %');
|
165 |
break;
|
178 |
break;
|
166 |
case 'tag' :
|
179 |
case 'tag' :
|
167 |
$where[] = $this->creerFiltreMotsCles($valeurMasque);
|
- |
|
168 |
break;
|
- |
|
169 |
case 'nn' :
|
- |
|
170 |
$where[] = ' '.$this->mappingFiltre['nn'].' = '.$this->proteger($valeurMasque);
|
180 |
$where[] = ' '.$this->creerFiltreMotsCles($valeurMasque);
|
171 |
break;
|
181 |
break;
|
172 |
case 'ns' :
|
182 |
case 'ns' :
|
173 |
$where[] = " nom_sel LIKE ".$this->proteger($valeurMasque.'%');
|
183 |
$where[] = ' nom_sel LIKE '.$this->proteger($valeurMasque.'%');
|
174 |
break;
|
184 |
break;
|
175 |
case 'commune' :
|
185 |
case 'commune' :
|
176 |
$where[] = ' '.$this->mappingFiltre[$idMasque].' LIKE '.$this->proteger($this->remplacerParJokerCaractere($valeurMasque).'%');
|
186 |
$where[] = ' '.$this->mappingFiltre[$idMasque].' LIKE '.$this->proteger(str_replace(array('-',' '), '_', $valeurMasque).'%');
|
177 |
break;
|
187 |
break;
|
178 |
case 'masque' :
|
188 |
case 'masque' :
|
179 |
$where[] = $this->creerFiltreMasqueGeneral($valeurMasque);
|
189 |
$where[] = ' '.$this->creerFiltreMasqueGeneral($valeurMasque);
|
180 |
break;
|
190 |
break;
|
181 |
default:
|
191 |
default:
|
- |
|
192 |
$where[] = ' '.$this->mappingFiltre[$idMasque].' = '.$this->proteger($valeurMasque);
|
182 |
$where[] = ' '.$this->mappingFiltre[$idMasque].' LIKE '.$this->proteger('%'.$valeurMasque.'%');
|
193 |
break;
|
183 |
}
|
194 |
}
|
184 |
}
|
195 |
}
|
Line 185... |
Line 196... |
185 |
}
|
196 |
}
|
Line 190... |
Line 201... |
190 |
return;
|
201 |
return;
|
191 |
}
|
202 |
}
|
192 |
}
|
203 |
}
|
Line 193... |
Line 204... |
193 |
|
204 |
|
194 |
private function creerFiltreMasqueGeneral($valeurMasque) {
|
- |
|
195 |
|
205 |
private function creerFiltreMasqueGeneral($valeurMasque) {
|
- |
|
206 |
//TODO: affecter d'aborder les variables, puis les tester pour les
|
196 |
// créer filtre auteur et idzone géo peuvent renvoyer des valeurs vides
|
207 |
// ajouter à la chaine
|
197 |
$whereAuteur = $this->creerFiltreAuteur($valeurMasque);
|
208 |
$whereAuteur = $this->creerFiltreAuteur($valeurMasque);
|
198 |
$whereIdZoneGeo = $this->creerFiltreIdZoneGeo($valeurMasque);
|
209 |
$whereIdZoneGeo = $this->creerFiltreIdZoneGeo($valeurMasque);
|
199 |
|
210 |
|
200 |
$masqueGeneral = '( '.
|
211 |
$masqueGeneral = '( '.
|
201 |
(($whereAuteur != '') ? $whereAuteur.' OR ' : '' ).
|
212 |
(($whereAuteur != '') ? $whereAuteur.' OR ' : '' ).
|
202 |
(($whereIdZoneGeo != '') ? $whereIdZoneGeo.' OR ' : '' ).
|
213 |
(($whereIdZoneGeo != '') ? $whereIdZoneGeo.' OR ' : '' ).
|
203 |
'zone_geo LIKE '.$this->proteger($this->remplacerParJokerCaractere($valeurMasque).'%').' OR '.
|
214 |
'zone_geo LIKE '.$this->proteger($this->remplacerParJokerCaractere($valeurMasque).'%').' OR '.
|
204 |
$this->creerFiltreMotsCles($valeurMasque).' OR '.
|
215 |
$this->creerFiltreMotsCles($valeurMasque).' OR '.
|
205 |
'nom_sel LIKE '.$this->proteger($valeurMasque.'%').' OR '.
|
216 |
'nom_sel LIKE '.$this->proteger($valeurMasque.'%').' OR '.
|
206 |
'famille LIKE '.$this->proteger($valeurMasque.'%').' OR '.
|
217 |
'famille LIKE '.$this->proteger($valeurMasque.'%').' OR '.
|
207 |
'milieu LIKE '.$this->proteger($valeurMasque).' OR '.
|
218 |
'milieu LIKE '.$this->proteger($valeurMasque).' OR '.
|
208 |
$this->mappingFiltre['ns'].' LIKE '.$this->proteger('%'.$valeurMasque.'% %').' OR '.
|
219 |
$this->mappingFiltre['ns'].' LIKE '.$this->proteger('%'.$valeurMasque.'% %').' OR '.
|
209 |
$this->creerFiltreDate($valeurMasque).
|
220 |
$this->creerFiltreDate($valeurMasque).
|
Line 210... |
Line 221... |
210 |
') ';
|
221 |
') ';
|
211 |
|
222 |
|
Line 212... |
Line 223... |
212 |
return $masqueGeneral;
|
223 |
return $masqueGeneral;
|
Line 221... |
Line 232... |
221 |
if (strpos($auteurId, '@') === false) {
|
232 |
if (strpos($auteurId, '@') === false) {
|
222 |
$tableauNomPrenom = explode(' ',$auteurId, 2);
|
233 |
$tableauNomPrenom = explode(' ',$auteurId, 2);
|
223 |
if(count($tableauNomPrenom) == 2) {
|
234 |
if(count($tableauNomPrenom) == 2) {
|
224 |
// on teste potentiellement un nom prenom ou bien un prénom nom
|
235 |
// on teste potentiellement un nom prenom ou bien un prénom nom
|
225 |
$masque = '('.
|
236 |
$masque = '('.
|
226 |
'(nom LIKE '.$this->proteger($tableauNomPrenom[0].'%').' AND '.
|
237 |
'(nom LIKE '.$this->proteger($tableauNomPrenom[0].'%').' AND '.
|
227 |
'prenom LIKE '.$this->proteger($tableauNomPrenom[1].'%').') OR '.
|
238 |
'prenom LIKE '.$this->proteger($tableauNomPrenom[1].'%').') OR '.
|
228 |
'(nom LIKE '.$this->proteger($tableauNomPrenom[1].'%').' AND '.
|
239 |
'(nom LIKE '.$this->proteger($tableauNomPrenom[1].'%').' AND '.
|
229 |
'prenom LIKE '.$this->proteger($tableauNomPrenom[0].'%').')'.
|
240 |
'prenom LIKE '.$this->proteger($tableauNomPrenom[0].'%').')'.
|
230 |
')';
|
241 |
')';
|
231 |
} else {
|
242 |
} else {
|
232 |
$masque = '(
|
243 |
$masque = '(
|
233 |
(nom LIKE '.$this->proteger($auteurId.'%').' OR '.
|
244 |
(nom LIKE '.$this->proteger($auteurId.'%').' OR '.
|
234 |
'prenom LIKE '.$this->proteger($auteurId.'%').')'.
|
245 |
'prenom LIKE '.$this->proteger($auteurId.'%').')'.
|
235 |
')';
|
246 |
')';
|
236 |
}
|
247 |
}
|
237 |
} else {
|
248 |
} else {
|
238 |
$masque = " courriel LIKE ".$this->proteger($valeurMasque.'%')." ";
|
249 |
$masque = " courriel LIKE ".$this->proteger($valeurMasque.'%')." ";
|
239 |
}
|
250 |
}
|
240 |
}
|
251 |
}
|
Line 242... |
Line 253... |
242 |
}
|
253 |
}
|
Line 243... |
Line 254... |
243 |
|
254 |
|
244 |
private function remplacerParJokerCaractere($valeurMasque) {
|
255 |
private function remplacerParJokerCaractere($valeurMasque) {
|
245 |
return str_replace(array('-',' '), '_', $valeurMasque);
|
256 |
return str_replace(array('-',' '), '_', $valeurMasque);
|
246 |
}
|
257 |
}
|
247 |
//TODO: déplacer les fonctions ci dessus et dessous dans une classe
|
258 |
//TODO: déplacer les fonctions ci dessus et dessous dans une classe
|
248 |
// utilitaire
|
259 |
// utilitaire
|
249 |
function supprimerAccents($str, $charset='utf-8')
|
260 |
function supprimerAccents($str, $charset='utf-8')
|
250 |
{
|
261 |
{
|
Line 256... |
Line 267... |
256 |
|
267 |
|
257 |
return $str;
|
268 |
return $str;
|
Line 258... |
Line 269... |
258 |
}
|
269 |
}
|
259 |
|
270 |
|
260 |
private function obtenirIdDepartement($nomDpt) {
|
271 |
private function obtenirIdDepartement($nomDpt) {
|
261 |
|
272 |
|
262 |
$nomDpt = $this->supprimerAccents($nomDpt);
|
273 |
$nomDpt = $this->supprimerAccents($nomDpt);
|
263 |
$nomDpt = strtolower(str_replace(' ','-',$nomDpt));
|
274 |
$nomDpt = strtolower(str_replace(' ','-',$nomDpt));
|
264 |
|
275 |
|
265 |
$idDpt = $this->conteneur->getParametre($nomDpt);
|
276 |
$idDpt = $this->conteneur->getParametre($nomDpt);
|
266 |
if($idDpt == null || $idDpt == ' ') {
|
277 |
if($idDpt == null || $idDpt == ' ') {
|
267 |
$idDpt = ' ';
|
278 |
$idDpt = ' ';
|
Line 292... |
Line 303... |
292 |
//TODO: définir dans le fichier de config un tableau contenant plusieurs format de date
|
303 |
//TODO: définir dans le fichier de config un tableau contenant plusieurs format de date
|
293 |
// autorisés pour la recherche, qui seraient ajoutés au OR
|
304 |
// autorisés pour la recherche, qui seraient ajoutés au OR
|
294 |
$masque = '(';
|
305 |
$masque = '(';
|
295 |
$masque .= (is_numeric($valeurMasque)) ? ' YEAR(date_observation) = '.$this->proteger($valeurMasque).' OR ' : '';
|
306 |
$masque .= (is_numeric($valeurMasque)) ? ' YEAR(date_observation) = '.$this->proteger($valeurMasque).' OR ' : '';
|
296 |
$masque .= " DATE_FORMAT(date_observation, '%d/%m/%Y') = ".$this->proteger($valeurMasque).' '.
|
307 |
$masque .= " DATE_FORMAT(date_observation, '%d/%m/%Y') = ".$this->proteger($valeurMasque).' '.
|
297 |
')';
|
308 |
')';
|
298 |
return $masque;
|
309 |
return $masque;
|
299 |
}
|
310 |
}
|
Line 300... |
Line 311... |
300 |
|
311 |
|
301 |
private function creerFiltreMotsCles($valeurMasque) {
|
312 |
private function creerFiltreMotsCles($valeurMasque) {
|
302 |
$masque = '(di.mots_cles_texte LIKE '.$this->proteger('%'.$valeurMasque.'%').' OR '.
|
313 |
$masque = '(di.mots_cles_texte LIKE '.$this->proteger('%'.$valeurMasque.'%').' OR '.
|
303 |
' dob.mots_cles_texte LIKE '.$this->proteger('%'.$valeurMasque.'%').') ';
|
314 |
' dob.mots_cles_texte LIKE '.$this->proteger('%'.$valeurMasque.'%').') ';
|
304 |
return $masque;
|
315 |
return $masque;
|
Line 305... |
Line 316... |
305 |
}
|
316 |
}
|
306 |
|
317 |
|
307 |
/*-------------------------------------------------------------------------------
|
318 |
/*-------------------------------------------------------------------------------
|
308 |
CHARGEMENT DES OBSERVATIONS
|
319 |
CHARGEMENT DES OBSERVATIONS
|
309 |
--------------------------------------------------------------------------------*/
|
320 |
--------------------------------------------------------------------------------*/
|
310 |
/**
|
321 |
/**
|
311 |
* Chargement depuis la bdd de toutes les liaisons entre images et observations
|
322 |
* Chargement depuis la bdd de toutes les liaisons entre images et observations
|
312 |
* */
|
- |
|
313 |
private function chargerLiaisons() {
|
- |
|
- |
|
323 |
* */
|
314 |
// ajout seulement du champ mot clés de la table image liée, pour rechercher
|
324 |
private function chargerLiaisons() {
|
315 |
// sur les mots clés obs et images
|
325 |
|
316 |
$requeteLiaisons = 'SELECT SQL_CALC_FOUND_ROWS *, di.mots_cles_texte '.
|
326 |
$requeteLiaisons = 'SELECT SQL_CALC_FOUND_ROWS * '.
|
317 |
'FROM '.$this->gestionBdd->formaterTable('del_observation', 'dob').
|
327 |
'FROM '.$this->gestionBdd->formaterTable('del_observation', 'dob').
|
318 |
'INNER JOIN '.$this->gestionBdd->formaterTable('del_obs_image', 'doi').
|
328 |
'INNER JOIN '.$this->gestionBdd->formaterTable('del_obs_image', 'doi').
|
319 |
'ON doi.id_observation = dob.id_observation '.
|
329 |
'ON doi.id_observation = dob.id_observation '.
|
320 |
'INNER JOIN del_utilisateur du '.
|
- |
|
321 |
'ON du.id_utilisateur = doi.id_utilisateur '.
|
- |
|
322 |
'INNER JOIN '.$this->gestionBdd->formaterTable('del_image', 'di').
|
330 |
'INNER JOIN del_utilisateur du '.
|
323 |
'ON di.id_image = doi.id_image ';
|
331 |
'ON du.id_utilisateur = doi.id_utilisateur ';
|
324 |
$requeteLiaisons .= $this->chargerClauseWhere();
|
332 |
$requeteLiaisons .= $this->chargerClauseWhere();
|
325 |
$requeteLiaisons .= ' GROUP BY doi.id_observation';
|
333 |
$requeteLiaisons .= ' GROUP BY doi.id_observation';
|
326 |
$requeteLiaisons .= ' ORDER BY date_transmission DESC ';
|
334 |
$requeteLiaisons .= ' ORDER BY date_transmission DESC ';
|
327 |
$requeteLiaisons .= $this->gestionBdd->getLimitSql();
|
335 |
$requeteLiaisons .= $this->gestionBdd->getLimitSql();
|
328 |
|
336 |
|
Line 329... |
Line 337... |
329 |
return $this->bdd->recupererTous($requeteLiaisons);
|
337 |
return $this->bdd->recupererTous($requeteLiaisons);
|
330 |
}
|
338 |
}
|
Line 401... |
Line 409... |
401 |
}
|
409 |
}
|
402 |
return $propositions_format;
|
410 |
return $propositions_format;
|
403 |
}
|
411 |
}
|
404 |
/**
|
412 |
/**
|
405 |
* Charger les votes sur les déterminations
|
413 |
* Charger les votes sur les déterminations
|
406 |
* @param Array $observations le tableau des observatins à mettre à jour
|
414 |
* @param Array $observations le tableau des observations à mettre à jour
|
407 |
* */
|
415 |
* */
|
408 |
private function chargerVotes($ids_proposition, $propositions) {
|
416 |
private function chargerVotes($ids_proposition, $propositions) {
|
409 |
$requeteVotes = 'SELECT * FROM '.
|
417 |
$requeteVotes = 'SELECT * FROM '.
|
410 |
$this->gestionBdd->formaterTable('del_commentaire_vote').
|
418 |
$this->gestionBdd->formaterTable('del_commentaire_vote').
|
411 |
'WHERE ce_proposition IN ('.implode(', ', $ids_proposition).')';
|
419 |
'WHERE ce_proposition IN ('.implode(', ', $ids_proposition).')';
|