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 '. |