Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 1981 → Rev 1994

/trunk/services/bibliotheque/Sql.php
46,7 → 46,7
 
private $champsPrenom = array('du.prenom', 'prenom_utilisateur');
private $champsNom = array('du.nom', 'nom_utilisateur');
private $champsSousRequeteObs = array('masque.genre', 'masque.famille', 'masque.ns', 'masque.commune', 'masque.milieu');
private $champsSousRequeteObs = array('masque.genre', 'masque.famille', 'masque.ns', 'masque.commune', 'masque.milieu', 'masque.pays');
 
public function __construct(Conteneur $conteneur) {
$this->conteneur = $conteneur;
166,6 → 166,7
public function ajouterContraintes() {
$this->ajouterContrainteAuteur();
$this->ajouterContrainteDate();
$this->ajouterContraintePays();
$this->ajouterContrainteDepartement();
$this->ajouterContrainteIdZoneGeo();
$this->ajouterContrainteGenre();
299,12 → 300,29
}
}
}
private function ajouterContraintePays() {
if (isset($this->parametres['masque.pays'])) {
// Attention le standard contient parfois FX pour la france métropolitaine
// Dans ce cas particulier on cherche donc FR et FX
$this->parametres['masque.pays'] = strtoupper($this->parametres['masque.pays']);
if(strpos($this->parametres['masque.pays'], 'FR') !== false) {
$this->parametres['masque.pays'] = str_replace('FR', 'FR,FX', $this->parametres['masque.pays']);
}
$pays = explode(',', $this->parametres['masque.pays']);
$pays = implode(',', $this->bdd->proteger($pays));
$this->addWhere('masque.pays', "do.pays IN ($pays)");
if ($this->etreAppliImg()) {
$this->addJoin('LEFT JOIN del_observation AS do ON (di.ce_observation = do.id_observation) ');
}
}
}
 
private function ajouterContrainteIdZoneGeo() {
if (isset($this->parametres['masque.id_zone_geo'])) {
$idZgMotif = $this->bdd->proteger($this->parametres['masque.id_zone_geo']);
$this->addWhere('masque.id_zone_geo', "do.ce_zone_geo = $idZgMotif");
 
if ($this->etreAppliImg()) {
$this->addJoin('LEFT JOIN del_observation AS do ON (di.ce_observation = do.id_observation) ');
}
/trunk/services/bibliotheque/ParametresFiltrage.php
189,6 → 189,7
$this->supprimerCaracteresInvisibles($parametresATrimer);
 
$this->filtrerFamille();
$this->filtrerPays();
$this->filtrerIdZoneGeo();
$this->filtrerCommune();
$this->filtrerType();
329,6 → 330,19
}
}
}
// Idem pour id_zone_geo qui mappait à ce_zone_geo:
private function filtrerPays() {
if (isset($this->parametres['masque.pays'])) {
// une liste de pays séparés par des virgules est acceptable
if (preg_match('/^([a-zA-Z]{2},)*[a-zA-Z]{2}$/', $this->parametres['masque.pays'])) {
// Nettoyage d'une virgule terminale au cas ou
$this->parametres['masque.pays'] = rtrim($this->parametres['masque.pays'], ',');
$paramFiltre = $this->parametres['masque.pays'];
$this->parametresFiltres['masque.pays'] = $paramFiltre;
}
}
}
 
/** masque.commune (zone_geo)
* TODO: que faire avec des '%' en INPUT ?