1,47 → 1,37 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Le web service observations récupère tous les protocoles avec leur id, nom et descriptif |
* Récupère tous les protocoles avec 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 |
* @category DEL |
* @package Services |
* @subpackage Protocoles |
* @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 ListeProtocoles extends RestService { |
class ListeProtocoles { |
|
private $conteneur; |
private $navigation; |
protected $bdd; |
private $parametres = array(); |
private $ressources = array(); |
private $bdd; |
|
private $mapping = 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->bdd = $this->conteneur->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); |
|
public function consulter() { |
// Gestion des configuration du script |
$this->configurer(); |
$this->verifierConfiguration(); |
$this->mapping = $this->conteneur->getParametreTableau('protocoles.mapping'); |
|
$protocoles = $this->chargerProtocoles(); |
$protocoles = $this->formaterProtocoles($protocoles); |
52,69 → 42,11 |
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); |
$requete = 'SELECT * FROM del_image_protocole -- '.__FILE__.' : '.__LINE__; |
return $this->bdd->recupererTous($requete); |
} |
|
/*------------------------------------------------------------------------------- |
FORMATER ET METTRE EN FORME |
--------------------------------------------------------------------------------*/ |
|
/** |
* Formater les protocoles |
* @param array $protocoles les protocoles |
* */ |
private function formaterProtocoles($protocoles) { |
$protocolesRetour = array(); |
foreach ($protocoles as $protocole) { |
121,20 → 53,10 |
$protocoleFormate = array(); |
$idProtocole = $protocole['id_protocole']; |
foreach($protocole as $champProtocole => $valeur) { |
$protocoleFormate[$this->mappingVotes[$champProtocole]] = $valeur; |
$protocoleFormate[$this->mapping[$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); |
} |
} |
} |
?> |
} |