Rev 759 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php// declare(encoding='UTF-8');/*** Le web service image récupère toutes les données de la table del_obs_images* pour retourner une liste d'images associée à une observation** @category php 5.2* @package del* @subpackage images* @author Jean-Pascal MILCENT <jpm@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=ApiIdentiplante01Images*/class VoteImage {private $imageIds = array();private $conteneur;private $navigation;private $masque;private $gestionBdd;private $bdd;private $ressources;private $parametres;public function __construct(Conteneur $conteneur = null) {$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;$this->conteneur->chargerConfiguration('config_votes.ini');$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 images 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) {// Gestion des configuration du script$this->ressources = $ressources;$this->parametres = $parametres;$this->configurer();$this->verifierConfiguration();// Lancement du service$votes = $this->chargerVotes();$total = $this->compterVotes();$this->navigation->setTotal($total);// Mettre en forme le résultat et l'envoyer pour affichage$resultat = new ResultatService();$resultat->corps = $votes;return $resultat;}/*-------------------------------------------------------------------------------CONFIGURATION DU SERVICE--------------------------------------------------------------------------------*//*** Configuration du service en fonction du fichier de config config_del.ini* */public function configurer() {$this->mappingFiltre = $this->conteneur->getParametre('mapping_masque');$this->mappingVotes = $this->conteneur->getParametre('mapping_votes');}/*** Vérifier que le service est bien configuré* */public function verifierConfiguration() {$erreurs = array();$tableauImages = $this->conteneur->getParametre('images');if (empty($tableauImages)) {$erreurs[] = '- le fichier de configuration ne contient pas le tableau [images] ou celui-ci est vide ;';} else {if ($this->conteneur->getParametre('url_service') == null) {$erreurs[] = '- paramètre "url_service" manquant ;';}}if (empty($this->mappingVotes)) {$erreurs[] = '- le fichier de configuration ne contient pas le tableau [mapping_observation] ou celui-ci est vide ;';} else {$champsMappingObs = array('ce_protocole','id_vote','valeur','ce_image', 'ce_utilisateur', 'nom', 'prenom');foreach ($champsMappingObs as $champ) {if (!isset($this->mappingVotes[$champ])) {$erreurs[] = '- le mapping du champ "'.$champ.'" pour l\'observation est manquant ;';}}}if (!empty($erreurs)) {$e = 'Erreur lors de la configuration : '."\n";$e .= implode("\n", $erreurs);throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);}}/*** Charger la clause WHERE en fonction des paramètres de masque* */private function chargerClauseWhere() {$where[] = 'WHERE ce_image = '.$this->proteger($this->ressources[0]);$where[] = 'id_vote = '.$this->proteger($this->ressources[2]);return implode(' AND ', $where);}/*-------------------------------------------------------------------------------CHARGEMENT DES IMAGES--------------------------------------------------------------------------------*//*** Charger les votes pour chaque image* */private function chargerVotes() {$requeteVotes = 'SELECT * FROM '.$this->gestionBdd->formaterTable('del_image_vote').$this->chargerClauseWhere();$resultatsVotes = $this->bdd->recupererTous($requeteVotes);$votes = $this->formaterVote($resultatsVotes[0]);return $votes;}/*** Compter le nombre total d'images dans la base pour affichage dans entete.* */private function compterVotes() {$requete = 'SELECT FOUND_ROWS() AS nbre ';$resultats = $this->bdd->recuperer($requete);return (int) $resultats['nbre'];}/*-------------------------------------------------------------------------------FORMATER ET METTRE EN FORME--------------------------------------------------------------------------------*//*** Formater une observation depuis une ligne liaison* @param $liaison liaison issue de la recherche* @return $observation l'observation mise en forme* */private function formaterVote($vote) {$retour = array();foreach ($vote as $p=>$valeur) {$retour[$this->mappingVotes[$p]] = $valeur;}return $retour;}private function proteger($valeur) {if (is_array($valeur)) {return $this->bdd->protegerTableau($valeur);} else {return $this->bdd->proteger($valeur);}}}?>