Rev 813 | Rev 1793 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php// declare(encoding='UTF-8');/*** Le web service observations récupère tous les protocoles avec leur id, nom et descriptif** @category php 5.2* @package del* @subpackage protocoles* @author Aurélien Peronnet <aurelien@tela-botanica.org>* @copyright Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org)* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL* @version $Id: Bdd.php 403 2012-02-22 14:35:20Z gduche $* @see http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=ApiIdentiplante01Protocoles*/class ListeProtocoles extends RestService {private $conteneur;private $navigation;private $masque;private $gestionBdd;protected $bdd;private $parametres = array();private $ressources = array();public function __construct(Conteneur $conteneur = null) {$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;$this->conteneur->chargerConfiguration('config_mapping_votes.ini');$this->navigation = $conteneur->getNavigation();$this->masque = $conteneur->getMasque();$this->gestionBdd = $conteneur->getGestionBdd();$this->bdd = $this->gestionBdd->getBdd();}/*** Méthode principale de la classe.* Lance la récupération des protocoles dans la base et les place dans un objet ResultatService* pour l'afficher.* @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)* @param array $parametres les paramètres situés après le ? dans l'url* */public function consulter($ressources, $parametres) {$this->initialiserRessourcesEtParametres($ressources, $parametres);// Gestion des configuration du script$this->configurer();$this->verifierConfiguration();$protocoles = $this->chargerProtocoles();$protocoles = $this->formaterProtocoles($protocoles);$this->navigation->setTotal(count($protocoles));$resultat = new ResultatService();$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $protocoles);return $resultat;}private function initialiserRessourcesEtParametres($ressources, $parametres) {$this->ressources = $ressources;$this->parametres = $parametres;}/*-------------------------------------------------------------------------------CONFIGURATION DU SERVICE--------------------------------------------------------------------------------*//*** Configuration du service en fonction du fichier de config config_del.ini* */private function configurer() {$this->mappingVotes = $this->conteneur->getParametre('mapping_votes');}/*** Vérifier que le service est bien configuré* */private function verifierConfiguration() {if (empty($this->mappingVotes)) {$erreurs[] = '- le fichier de configuration ne contient pas le tableau [mapping_votes] ou celui-ci est vide ;';} else {$champsMappingVotes = array('id_protocole', 'intitule', 'descriptif');foreach ($champsMappingVotes as $champ) {if (!isset($this->mappingVotes[$champ])) {$erreurs[] = '- le mapping du champ "'.$champ.'" pour les votes est manquant ;';}}}$parametres_autorises = array('navigation.depart', 'navigation.limite');foreach ($this->parametres as $cle => $valeur) {if($cle != 'navigation.depart' && $cle != 'navigation.limite') {$erreurs[] = '- aucun masque n\'est autorisé pour ce service ;';break;}}if (!empty($erreurs)) {$e = 'Erreur lors de la configuration : '."\n";$e .= implode("\n", $erreurs);throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);}}/*-------------------------------------------------------------------------------CHARGEMENT DES PROTOCOLES--------------------------------------------------------------------------------*//*** Chargement depuis la bdd de tous les protocoles ainsi que leur descriptif* */private function chargerProtocoles() {$requeteProtocoles = 'SELECT * FROM del_image_protocole';return $this->bdd->recupererTous($requeteProtocoles);}/*-------------------------------------------------------------------------------FORMATER ET METTRE EN FORME--------------------------------------------------------------------------------*//*** Formater les protocoles* @param array $protocoles les protocoles* */private function formaterProtocoles($protocoles) {$protocolesRetour = array();foreach ($protocoles as $protocole) {$protocoleFormate = array();$idProtocole = $protocole['id_protocole'];foreach($protocole as $champProtocole => $valeur) {$protocoleFormate[$this->mappingVotes[$champProtocole]] = $valeur;}$protocolesRetour[$idProtocole] = $protocoleFormate;}return $protocolesRetour;}private function proteger($valeur) {if (is_array($valeur)) {return $this->bdd->protegerTableau($valeur);} else {return $this->bdd->proteger($valeur);}}}?>