Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 796 → Rev 797

/trunk/services/modules/0.1/observations/ListeObservations.php
23,12 → 23,14
private $masque;
private $gestionBdd;
private $bdd;
private $parametres = array();
private $ressources = array();
public function __construct(Conteneur $conteneur = null) {
$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
$this->conteneur->chargerConfiguration('config_departements_bruts.ini');
$this->conteneur->chargerConfiguration('config_observations.ini');
$this->conteneur->chargerConfiguration('config_votes.ini');
$this->conteneur->chargerConfiguration('config_mapping_votes.ini');
$this->navigation = $conteneur->getNavigation();
$this->masque = $conteneur->getMasque();
$this->gestionBdd = $conteneur->getGestionBdd();
43,6 → 45,7
* @param array $parametres les paramètres situés après le ? dans l'url
* */
public function consulter($ressources, $parametres) {
$this->initialiserRessourcesEtParametres($ressources, $parametres);
// Gestion des configuration du script
$this->configurer();
62,6 → 65,10
return $resultat;
}
private function initialiserRessourcesEtParametres($ressources, $parametres) {
$this->ressources = $ressources;
$this->parametres = $parametres;
}
/*-------------------------------------------------------------------------------
CONFIGURATION DU SERVICE
--------------------------------------------------------------------------------*/
152,34 → 159,38
switch ($idMasque) {
// nom du masque => nom BDD
case 'auteur' :
$where[] = $this->creerFiltreAuteur($this->masque->getMasque('auteur'));
$whereAuteur = ' '.$this->creerFiltreAuteur($this->masque->getMasque('auteur'));
if($whereAuteur != '') {
$where[] = $whereAuteur;
}
break;
case 'date' :
$where[] = $this->creerFiltreDate($valeurMasque);
$whereDate = ' '.$this->creerFiltreDate($valeurMasque);
if($whereDate != '') {
$where[] = $whereDate;
}
break;
case 'departement' :
$where[] = $this->creerFiltreIdZoneGeo($valeurMasque);
$where[] = ' '.$this->creerFiltreIdZoneGeo($valeurMasque);
break;
case 'genre' :
$where[] = ' '.$this->mappingFiltre['ns'].' LIKE '.$this->proteger('%'.$valeurMasque.'% %');
break;
case 'tag' :
$where[] = $this->creerFiltreMotsCles($valeurMasque);
$where[] = ' '.$this->creerFiltreMotsCles($valeurMasque);
break;
case 'nn' :
$where[] = ' '.$this->mappingFiltre['nn'].' = '.$this->proteger($valeurMasque);
break;
case 'ns' :
$where[] = " nom_sel LIKE ".$this->proteger($valeurMasque.'%');
break;
$where[] = ' nom_sel LIKE '.$this->proteger($valeurMasque.'%');
break;
case 'commune' :
$where[] = ' '.$this->mappingFiltre[$idMasque].' LIKE '.$this->proteger($this->remplacerParJokerCaractere($valeurMasque).'%');
$where[] = ' '.$this->mappingFiltre[$idMasque].' LIKE '.$this->proteger(str_replace(array('-',' '), '_', $valeurMasque).'%');
break;
case 'masque' :
$where[] = $this->creerFiltreMasqueGeneral($valeurMasque);
$where[] = ' '.$this->creerFiltreMasqueGeneral($valeurMasque);
break;
default:
$where[] = ' '.$this->mappingFiltre[$idMasque].' LIKE '.$this->proteger('%'.$valeurMasque.'%');
$where[] = ' '.$this->mappingFiltre[$idMasque].' = '.$this->proteger($valeurMasque);
break;
}
}
}
192,22 → 203,22
}
private function creerFiltreMasqueGeneral($valeurMasque) {
// créer filtre auteur et idzone géo peuvent renvoyer des valeurs vides
//TODO: affecter d'aborder les variables, puis les tester pour les
// ajouter à la chaine
$whereAuteur = $this->creerFiltreAuteur($valeurMasque);
$whereIdZoneGeo = $this->creerFiltreIdZoneGeo($valeurMasque);
$whereIdZoneGeo = $this->creerFiltreIdZoneGeo($valeurMasque);
$masqueGeneral = '( '.
(($whereAuteur != '') ? $whereAuteur.' OR ' : '' ).
(($whereIdZoneGeo != '') ? $whereIdZoneGeo.' OR ' : '' ).
'zone_geo LIKE '.$this->proteger($this->remplacerParJokerCaractere($valeurMasque).'%').' OR '.
$this->creerFiltreMotsCles($valeurMasque).' OR '.
'nom_sel LIKE '.$this->proteger($valeurMasque.'%').' OR '.
'famille LIKE '.$this->proteger($valeurMasque.'%').' OR '.
'milieu LIKE '.$this->proteger($valeurMasque).' OR '.
$this->mappingFiltre['ns'].' LIKE '.$this->proteger('%'.$valeurMasque.'% %').' OR '.
$this->creerFiltreDate($valeurMasque).
') ';
(($whereAuteur != '') ? $whereAuteur.' OR ' : '' ).
(($whereIdZoneGeo != '') ? $whereIdZoneGeo.' OR ' : '' ).
'zone_geo LIKE '.$this->proteger($this->remplacerParJokerCaractere($valeurMasque).'%').' OR '.
$this->creerFiltreMotsCles($valeurMasque).' OR '.
'nom_sel LIKE '.$this->proteger($valeurMasque.'%').' OR '.
'famille LIKE '.$this->proteger($valeurMasque.'%').' OR '.
'milieu LIKE '.$this->proteger($valeurMasque).' OR '.
$this->mappingFiltre['ns'].' LIKE '.$this->proteger('%'.$valeurMasque.'% %').' OR '.
$this->creerFiltreDate($valeurMasque).
') ';
return $masqueGeneral;
}
223,16 → 234,16
if(count($tableauNomPrenom) == 2) {
// on teste potentiellement un nom prenom ou bien un prénom nom
$masque = '('.
'(nom LIKE '.$this->proteger($tableauNomPrenom[0].'%').' AND '.
'prenom LIKE '.$this->proteger($tableauNomPrenom[1].'%').') OR '.
'(nom LIKE '.$this->proteger($tableauNomPrenom[1].'%').' AND '.
'prenom LIKE '.$this->proteger($tableauNomPrenom[0].'%').')'.
')';
'(nom LIKE '.$this->proteger($tableauNomPrenom[0].'%').' AND '.
'prenom LIKE '.$this->proteger($tableauNomPrenom[1].'%').') OR '.
'(nom LIKE '.$this->proteger($tableauNomPrenom[1].'%').' AND '.
'prenom LIKE '.$this->proteger($tableauNomPrenom[0].'%').')'.
')';
} else {
$masque = '(
(nom LIKE '.$this->proteger($auteurId.'%').' OR '.
'prenom LIKE '.$this->proteger($auteurId.'%').')'.
')';
(nom LIKE '.$this->proteger($auteurId.'%').' OR '.
'prenom LIKE '.$this->proteger($auteurId.'%').')'.
')';
}
} else {
$masque = " courriel LIKE ".$this->proteger($valeurMasque.'%')." ";
244,7 → 255,7
private function remplacerParJokerCaractere($valeurMasque) {
return str_replace(array('-',' '), '_', $valeurMasque);
}
//TODO: déplacer les fonctions ci dessus et dessous dans une classe
//TODO: déplacer les fonctions ci dessus et dessous dans une classe
// utilitaire
function supprimerAccents($str, $charset='utf-8')
{
258,10 → 269,10
}
private function obtenirIdDepartement($nomDpt) {
$nomDpt = $this->supprimerAccents($nomDpt);
$nomDpt = strtolower(str_replace(' ','-',$nomDpt));
$idDpt = $this->conteneur->getParametre($nomDpt);
if($idDpt == null || $idDpt == ' ') {
$idDpt = ' ';
294,14 → 305,14
$masque = '(';
$masque .= (is_numeric($valeurMasque)) ? ' YEAR(date_observation) = '.$this->proteger($valeurMasque).' OR ' : '';
$masque .= " DATE_FORMAT(date_observation, '%d/%m/%Y') = ".$this->proteger($valeurMasque).' '.
')';
')';
return $masque;
}
private function creerFiltreMotsCles($valeurMasque) {
$masque = '(di.mots_cles_texte LIKE '.$this->proteger('%'.$valeurMasque.'%').' OR '.
' dob.mots_cles_texte LIKE '.$this->proteger('%'.$valeurMasque.'%').') ';
return $masque;
' dob.mots_cles_texte LIKE '.$this->proteger('%'.$valeurMasque.'%').') ';
return $masque;
}
/*-------------------------------------------------------------------------------
311,21 → 322,18
* Chargement depuis la bdd de toutes les liaisons entre images et observations
* */
private function chargerLiaisons() {
// ajout seulement du champ mot clés de la table image liée, pour rechercher
// sur les mots clés obs et images
$requeteLiaisons = 'SELECT SQL_CALC_FOUND_ROWS *, di.mots_cles_texte '.
$requeteLiaisons = 'SELECT SQL_CALC_FOUND_ROWS * '.
'FROM '.$this->gestionBdd->formaterTable('del_observation', 'dob').
'INNER JOIN '.$this->gestionBdd->formaterTable('del_obs_image', 'doi').
'ON doi.id_observation = dob.id_observation '.
'INNER JOIN del_utilisateur du '.
'ON du.id_utilisateur = doi.id_utilisateur '.
'INNER JOIN '.$this->gestionBdd->formaterTable('del_image', 'di').
'ON di.id_image = doi.id_image ';
'ON du.id_utilisateur = doi.id_utilisateur ';
$requeteLiaisons .= $this->chargerClauseWhere();
$requeteLiaisons .= ' GROUP BY doi.id_observation';
$requeteLiaisons .= ' ORDER BY date_transmission DESC ';
$requeteLiaisons .= $this->gestionBdd->getLimitSql();
 
return $this->bdd->recupererTous($requeteLiaisons);
}
403,7 → 411,7
}
/**
* Charger les votes sur les déterminations
* @param Array $observations le tableau des observatins à mettre à jour
* @param Array $observations le tableau des observations à mettre à jour
* */
private function chargerVotes($ids_proposition, $propositions) {
$requeteVotes = 'SELECT * FROM '.