Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 1984 → Rev 1985

/trunk/services/configurations/config.defaut.ini
238,7 → 238,7
masques_possibles = "masque,masque.famille,masque.genre,
masque.referentiel, masque.ns, masque.nn, masque.auteur, masque.date,
masque.commune, masque.departement, masque.tag_cel, masque.espece,
navigation.depart, navigation.limite, tri, ordre, masque.type"
navigation.depart, navigation.limite, tri, ordre, masque.type, masque.pays"
; Valeurs par défaut pour les paramètres de l'url :
parametres_valeurs_defaut = "
navigation.depart = 0,
281,7 → 281,7
masque.commune, masque.departement, masque.id_zone_geo,
masque.auteur, masque.date, masque.type, masque.milieu,
masque.tag, masque.tag_cel, masque.tag_del,
navigation.depart, navigation.limite, tri, ordre, format"
navigation.depart, navigation.limite, tri, ordre, format, masque.pays"
; Valeurs par défaut pour les paramètres de l'url :
parametres_valeurs_defaut = "
navigation.depart = 0,
/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 ?
/trunk/services/modules/0.1/Ontologie.php
New file
0,0 → 1,89
<?php
// declare(encoding='UTF-8');
/**
* Classe de récupération d'ontologies diverses
*
* @category DEL
* @package Services
* @subpackage Ontologies
* @version 0.1
* @author Mathias CHOUET <mathias@tela-botanica.org>
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Aurelien PERONNET <aurelien@tela-botanica.org>
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
* @copyright 1999-2014 Tela Botanica <accueil@tela-botanica.org>
*/
class Ontologie extends RestService {
 
private $parametres = array();
private $ressources = array();
private $methode = null;
private $serviceNom = 'ontologie';
 
private $conteneur;
 
/** Indique si oui (true) ou non (false), on veut utiliser les paramètres bruts. */
protected $utilisationParametresBruts = true;
 
public function __construct() {
$this->cheminCourant = dirname(__FILE__).DS;
}
 
public function consulter($ressources, $parametres) {
$this->methode = 'consulter';
$this->conteneur = new Conteneur($parametres);
if(!isset($ressources[0])) {
$message = "Le nom de l'ontologie doit être renseigné ".
"Les ontologies disponibles sont : \n".
" - en GET : pays \n";
$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
throw new Exception($message, $code);
} else {
$fonction = 'get'.ucwords($ressources[0]);
if(method_exists($this, $fonction)) {
$resultat = $this->$fonction();
$reponseHttp = new ReponseHttp();
$reponseHttp->setResultatService($resultat);
$reponseHttp->emettreLesEntetes();
$corps = $reponseHttp->getCorps();
return $corps;
} else {
$message = "L'ontologie demandée n'existe pas ".
"Les ontologies disponibles sont : \n".
" - en GET : pays \n";
$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
throw new Exception($message, $code);
}
}
}
public function getPays() {
$url = $this->conteneur->getParametre('url_service_base_eflore')."iso-3166-1/zone-geo?masque.statut=officiellement%20attribu%C3%A9&navigation.limite=1000";
$restClient = $this->conteneur->getRestClient();
$resultatJson = $restClient->consulter($url);
$liste_pays = json_decode($resultatJson, true);
 
$pays_fmt = array();
foreach($liste_pays['resultat'] as $pays) {
// Les pays renvoyé par le web service sont tous en majuscule
$nom = mb_convert_case($pays['nom'], MB_CASE_TITLE, 'UTF-8');
$pays_fmt[] = array('code_iso_3166_1' => $pays['code'], 'nom_fr' => $nom);
}
// Tri par nom plutot que par code
usort($pays_fmt, array($this, "trierPays"));
$resultat = new ResultatService();
$resultat->corps = $pays_fmt;
return $resultat;
}
protected function trierPays($a, $b) {
return strcmp($a['nom_fr'], $b['nom_fr']);
}
}
?>