Subversion Repositories eFlore/Applications.eflore-consultation

Rev

Rev 44 | Rev 60 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
// declare(encoding='UTF-8');
/**
 * Classe mère de l'API 0.1 d'eFLore.
 *
 * @category    PHP 5.2
 * @package             eflore-consultation
 * @author              Jean-Pascal MILCENT <jpm@tela-botanica.org>
 * @author              Delphine CAUQUIL <delphine@tela-botanica.org>
 * @copyright   2011 Tela-Botanica
 * @license             http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
 * @license             http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
 * @version             $Id$
 */
abstract class Eflore {
        private $projet = null;
        
        public function __construct($projet) {
                $this->projet = $projet;
        }
        
        /**
         * Formate une url à partir d'un template contenant des paramètres à remplacer sous la forme {monParametre}.
         * Le tableau associatif de paramètres doit contenir en clé le paramêtre (monParametre) sans les accolades,
         * la valeur correspondante sera la valeur de remplacement. 
         * 
         * @param String $tpl le squelette d'url à formater. 
         * @param Array $parametres le tableau de parametres (sans accolades pour les clés).*/
        protected function formaterUrl($tpl, Array $parametres) {
                foreach ($parametres as $cle => $valeur) {
                        $cle = '{'.$cle.'}';
                        $parametres[$cle] = $valeur;
                }
                $url = strtr($tpl, $parametres);
                return $url;
        }
        
        /**
         * Permet de consulter une url et retourne le résultat ou une erreur
         * 
         * @param $url l'url du service à appeler pour charger les données. */
        protected function chargerDonnees($url) {
                $resultat = false;
                $json = $this->getRestClient()->consulter($url);
                $entete = $this->getRestClient()->getReponseEntetes();
                //Si le service meta-donnees fonctionne correctement, l'entete comprend la clé wrapper_data
                if (isset($entete['wrapper_data'])) {
                        $forceTableauAssociatif = true;
                        $resultat = json_decode($json, $forceTableauAssociatif); 
                } else {
                        $m = "L'url <a href=\"$url\">$url</a> lancée via RestClient renvoie une erreur";
                        trigger_error($m, E_USER_WARNING);
                }
                return $resultat;
        }
        
        //+----------------------------------------------------------------------------------------------------------------+
        // GESTION DES CLASSES CHARGÉES À LA DEMANDE
        
        private function getRestClient() {
                if (!isset($this->restClient)) {
                        $this->restClient = new RestClient();
                }
                return $this->restClient;
        }
        
}
?>