Subversion Repositories eFlore/Applications.del

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1985 aurelien 1
<?php
2
// declare(encoding='UTF-8');
3
/**
4
 * Classe de récupération d'ontologies diverses
5
 *
6
 * @category   DEL
7
 * @package    Services
8
 * @subpackage Ontologies
9
 * @version    0.1
10
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
11
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
12
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
13
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
14
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
15
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
16
 */
17
class Ontologie extends RestService {
18
 
19
	private $parametres = array();
20
	private $ressources = array();
21
	private $methode = null;
22
	private $serviceNom = 'ontologie';
23
 
24
	private $conteneur;
25
 
26
	/** Indique si oui (true) ou non (false), on veut utiliser les paramètres bruts. */
27
	protected $utilisationParametresBruts = true;
28
 
29
	public function __construct() {
30
		$this->cheminCourant = dirname(__FILE__).DS;
31
	}
32
 
33
	public function consulter($ressources, $parametres) {
34
		$this->methode = 'consulter';
35
		$this->conteneur = new Conteneur($parametres);
36
 
37
		if(!isset($ressources[0])) {
38
			$message = "Le nom de l'ontologie doit être renseigné ".
39
					"Les ontologies disponibles sont : \n".
40
					" - en GET : pays \n";
41
			$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
42
			throw new Exception($message, $code);
43
		} else {
44
			$fonction = 'get'.ucwords($ressources[0]);
45
 
46
			if(method_exists($this, $fonction)) {
47
				$resultat = $this->$fonction();
48
 
49
				$reponseHttp = new ReponseHttp();
50
				$reponseHttp->setResultatService($resultat);
51
				$reponseHttp->emettreLesEntetes();
52
				$corps = $reponseHttp->getCorps();
53
				return $corps;
54
			} else {
55
				$message = "L'ontologie demandée n'existe pas ".
56
						"Les ontologies disponibles sont : \n".
57
						" - en GET : pays \n";
58
				$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
59
				throw new Exception($message, $code);
60
			}
61
		}
62
	}
63
 
64
	public function getPays() {
65
		$url = $this->conteneur->getParametre('url_service_base_eflore')."iso-3166-1/zone-geo?masque.statut=officiellement%20attribu%C3%A9&navigation.limite=1000";
66
		$restClient = $this->conteneur->getRestClient();
67
		$resultatJson = $restClient->consulter($url);
68
		$liste_pays = json_decode($resultatJson, true);
69
 
70
		$pays_fmt = array();
71
		foreach($liste_pays['resultat'] as $pays) {
72
			// Les pays renvoyé par le web service sont tous en majuscule
73
			$nom = mb_convert_case($pays['nom'], MB_CASE_TITLE, 'UTF-8');
74
			$pays_fmt[] = array('code_iso_3166_1' => $pays['code'], 'nom_fr' => $nom);
75
		}
76
 
77
		// Tri par nom plutot que par code
78
		usort($pays_fmt, array($this, "trierPays"));
79
 
80
		$resultat = new ResultatService();
81
		$resultat->corps = $pays_fmt;
82
		return $resultat;
83
	}
84
 
85
	protected function trierPays($a, $b) {
86
		return strcmp($a['nom_fr'], $b['nom_fr']);
87
	}
88
}
89
?>