Blame | 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 DEL* @package Services* @subpackage Images* @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 VotesImage {private $conteneur;private $navigation;private $bdd;private $mapping = array();private $ressources;private $parametres;public function __construct(Conteneur $conteneur) {$this->conteneur = $conteneur;$this->navigation = $conteneur->getNavigation();$this->bdd = $this->conteneur->getBdd();$this->mapping = $this->conteneur->getParametreTableau('votes.tepik');}/*** 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) {$this->ressources = $ressources;$this->parametres = $parametres;// 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 = array('entete' => $this->navigation->getEntete(), 'resultats' => $votes);return $resultat;}private function chargerVotes() {$idImgP = $this->bdd->proteger($this->ressources[0]);$idProtocoleP = isset($this->parametres['protocole']) ? $this->bdd->proteger($this->parametres['protocole']) : null;$requete = 'SELECT * FROM del_image_vote '."WHERE ce_image = $idImgP ".($idProtocoleP != null ? "AND ce_protocole = $idProtocoleP " : '').' -- '.__FILE__.' : '.__LINE__;$resultats = $this->bdd->recupererTous($requete);return $this->formaterVotes($resultats);}private function compterVotes() {$requete = 'SELECT FOUND_ROWS() AS nbre -- '.__FILE__.' : '.__LINE__;$resultats = $this->bdd->recuperer($requete);return (int) $resultats['nbre'];}private function formaterVotes($votes) {$retour = array();foreach ($votes as $vote) {foreach ($vote as $champ => $valeur) {$attribut = $this->mapping[$champ];$retour[$vote['id_vote']][$attribut] = $valeur;}}return $retour;}private function verifierAutorisationProtocoleIdentifie($idProtocole, $idUtilisateur) {$idProtocoleP = $this->bdd->proteger($idProtocole);$gestion_utilisateur = $this->conteneur->getUtilisateur();$utilisateur = $gestion_utilisateur->getUtilisateur();$utilisateurAComparer = $gestion_utilisateur->getIdAnonymeTemporaire();// Si l'utilisateur n'est pas identifié on vérifie que le protocole n'impose// pas d'être connecté pour voter, et le cas échéant, on refuse le voteif(!$utilisateur['connecte']) {$requete_proto_identifie = 'SELECT identifie FROM del_image_protocole '.'WHERE id_protocole = '.$idProtocoleP;$proto_identifie = $this->bdd->recuperer($requete_proto_identifie);if($proto_identifie['identifie'] == 1) {$msg = "Ce protocole nécéssite d'être identifié pour voter.";throw new Exception($msg, RestServeur::HTTP_CODE_ERREUR);}} else {$utilisateurAComparer = $utilisateur['id_utilisateur'];}// Sinon on vérifie tout de même que la personne identifiée est bien celle// associée aux votes dans les paramètresif($utilisateurAComparer != $idUtilisateur) {$msg = "L'utilisateur identifié et l'utilisateur du vote ne correspondent pas.";throw new Exception($msg, RestServeur::HTTP_CODE_ERREUR);}}}