Subversion Repositories eFlore/Applications.eflore-consultation

Rev

Rev 55 | Rev 80 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 55 Rev 60
Line 11... Line 11...
11
 * @license		http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
11
 * @license		http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
12
 * @license		http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
12
 * @license		http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
13
 * @version		$Id$
13
 * @version		$Id$
14
 */
14
 */
15
abstract class Eflore {
15
abstract class Eflore {
-
 
16
	
-
 
17
	const RANG_FAMILLE = 180;
-
 
18
	const RANG_GENRE = 220;
-
 
19
	const RANG_ESPECE = 290;
-
 
20
	
-
 
21
	private $entete = null;
16
	private $projet = null;
22
	private $projet = null;
Line 17... Line 23...
17
	
23
	
-
 
24
	public function __construct($projet = null) {
-
 
25
		$this->projet = Registre::get('parametres.referentiel');
18
	public function __construct($projet) {
26
		if (!is_null($projet)) {
-
 
27
			$this->projet = $projet;
-
 
28
		}
-
 
29
	}
-
 
30
	
-
 
31
	public function getEnteteTotal() {
19
		$this->projet = $projet;
32
		return $this->entete['total'];
Line 20... Line 33...
20
	}
33
	}
21
	
34
	
22
	/**
35
	/**
23
	 * Formate une url à partir d'un template contenant des paramètres à remplacer sous la forme {monParametre}.
36
	 * Formate une url à partir d'un template contenant des paramètres à remplacer sous la forme {monParametre}.
-
 
37
	 * Le tableau associatif de paramètres doit contenir en clé le paramêtre (monParametre) sans les accolades,
-
 
38
	 * la valeur correspondante sera la valeur de remplacement.
24
	 * Le tableau associatif de paramètres doit contenir en clé le paramêtre (monParametre) sans les accolades,
39
	 * Par défaut, les parametres suivant sont pris en compte par cette méthode :
25
	 * la valeur correspondante sera la valeur de remplacement. 
40
	 *  - {projet} : le code du référentiel courrant ou définit dans le constructeur de l'objet métier.
26
	 * 
41
	 * 
27
	 * @param String $tpl le squelette d'url à formater. 
42
	 * @param String $tpl le squelette d'url à formater. 
-
 
43
	 * @param Array $parametres le tableau de parametres (sans accolades pour les clés).*/
28
	 * @param Array $parametres le tableau de parametres (sans accolades pour les clés).*/
44
	protected function formaterUrl($tpl, Array $parametres) {
29
	protected function formaterUrl($tpl, Array $parametres) {
45
		$parametres = $this->ajouterParametreParDefaut($parametres);
30
		foreach ($parametres as $cle => $valeur) {
46
		foreach ($parametres as $cle => $valeur) {
31
			$cle = '{'.$cle.'}';
47
			$cle = '{'.$cle.'}';
32
			$parametres[$cle] = $valeur;
48
			$parametres[$cle] = $valeur;
33
		}
49
		}
34
		$url = strtr($tpl, $parametres);
50
		$url = strtr($tpl, $parametres);
Line -... Line 51...
-
 
51
		return $url;
-
 
52
	}
-
 
53
	
-
 
54
	private function ajouterParametreParDefaut(Array $parametres) {
-
 
55
		$parametres['projet'] = $this->projet;
35
		return $url;
56
		return $parametres;
36
	}
57
	}
37
	
58
	
38
	/**
59
	/**
39
	 * Permet de consulter une url et retourne le résultat ou une erreur
60
	 * Permet de consulter une url et retourne le résultat ou une erreur
Line 44... Line 65...
44
		$json = $this->getRestClient()->consulter($url);
65
		$json = $this->getRestClient()->consulter($url);
45
		$entete = $this->getRestClient()->getReponseEntetes();
66
		$entete = $this->getRestClient()->getReponseEntetes();
46
		//Si le service meta-donnees fonctionne correctement, l'entete comprend la clé wrapper_data
67
		//Si le service meta-donnees fonctionne correctement, l'entete comprend la clé wrapper_data
47
		if (isset($entete['wrapper_data'])) {
68
		if (isset($entete['wrapper_data'])) {
48
			$forceTableauAssociatif = true;
69
			$forceTableauAssociatif = true;
49
			$resultat = json_decode($json, $forceTableauAssociatif); 
70
			$resultat = json_decode($json, $forceTableauAssociatif);
-
 
71
			$this->entete = (isset($resultat['entete'])) ? $resultat['entete'] : null; 
50
		} else {
72
		} else {
51
			$m = "L'url <a href=\"$url\">$url</a> lancée via RestClient renvoie une erreur";
73
			$m = "L'url <a href=\"$url\">$url</a> lancée via RestClient renvoie une erreur";
52
			trigger_error($m, E_USER_WARNING);
74
			trigger_error($m, E_USER_WARNING);
53
		}
75
		}
54
		return $resultat;
76
		return $resultat;
55
	}
77
	}
Line -... Line 78...
-
 
78
	
-
 
79
	
-
 
80
	/**
-
 
81
	 * Permet de consulter une url et retourne le résultat ou une erreur
-
 
82
	 * 
-
 
83
	 * @param $url l'url du service à appeler pour charger les données. */
-
 
84
	protected function chargerDonneesRecursivement($url) {
-
 
85
		$resultat = false;
-
 
86
		$resultat = $this->chargerDonnees($url);
-
 
87
		if (isset($resultat['entete']['href.suivant'])) {
-
 
88
			$resultatSuivant = $this->chargerDonneesRecursivement($resultat['entete']['href.suivant']);
-
 
89
			if ($resultatSuivant) {
-
 
90
				$resultat['resultat'] = array_merge($resultat['resultat'], $resultatSuivant['resultat']);
-
 
91
			}
-
 
92
		}
-
 
93
		return $resultat;
-
 
94
	}
56
	
95
	
57
	//+----------------------------------------------------------------------------------------------------------------+
96
	//+----------------------------------------------------------------------------------------------------------------+
Line 58... Line 97...
58
	// GESTION DES CLASSES CHARGÉES À LA DEMANDE
97
	// GESTION DES CLASSES CHARGÉES À LA DEMANDE
59
	
98