Rev 1985 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?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']);
}
}
?>