| 751 | 
           delphine | 
           1 | 
           <?php
  | 
        
        
            | 
            | 
           2 | 
           // declare(encoding='UTF-8');
  | 
        
        
            | 
            | 
           3 | 
           /**
  | 
        
        
           | 1603 | 
           jpm | 
           4 | 
            * Le web service image récupère toutes les données de la table del_obs_images
  | 
        
        
           | 751 | 
           delphine | 
           5 | 
            * pour retourner une liste d'images associée à une observation
  | 
        
        
            | 
            | 
           6 | 
            *
  | 
        
        
           | 1827 | 
           jpm | 
           7 | 
            * @category   DEL
  | 
        
        
            | 
            | 
           8 | 
            * @package    Services
  | 
        
        
            | 
            | 
           9 | 
            * @subpackage Images
  | 
        
        
            | 
            | 
           10 | 
            * @version    0.1
  | 
        
        
            | 
            | 
           11 | 
            * @author     Mathias CHOUET <mathias@tela-botanica.org>
  | 
        
        
            | 
            | 
           12 | 
            * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
  | 
        
        
            | 
            | 
           13 | 
            * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
  | 
        
        
            | 
            | 
           14 | 
            * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
  | 
        
        
            | 
            | 
           15 | 
            * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
  | 
        
        
            | 
            | 
           16 | 
            * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
  | 
        
        
           | 751 | 
           delphine | 
           17 | 
            */
  | 
        
        
            | 
            | 
           18 | 
              | 
        
        
           | 1472 | 
           aurelien | 
           19 | 
           class VotesImage {
  | 
        
        
           | 1603 | 
           jpm | 
           20 | 
              | 
        
        
           | 751 | 
           delphine | 
           21 | 
           	private $conteneur;
  | 
        
        
            | 
            | 
           22 | 
           	private $navigation;
  | 
        
        
           | 1827 | 
           jpm | 
           23 | 
           	private $bdd;
  | 
        
        
            | 
            | 
           24 | 
           	private $mapping = array();
  | 
        
        
           | 758 | 
           delphine | 
           25 | 
           	private $ressources;
  | 
        
        
            | 
            | 
           26 | 
           	private $parametres;
  | 
        
        
           | 1603 | 
           jpm | 
           27 | 
              | 
        
        
           | 1827 | 
           jpm | 
           28 | 
           	public function __construct(Conteneur $conteneur) {
  | 
        
        
            | 
            | 
           29 | 
           		$this->conteneur = $conteneur;
  | 
        
        
           | 751 | 
           delphine | 
           30 | 
           		$this->navigation = $conteneur->getNavigation();
  | 
        
        
           | 1793 | 
           jpm | 
           31 | 
           		$this->bdd = $this->conteneur->getBdd();
  | 
        
        
           | 1827 | 
           jpm | 
           32 | 
              | 
        
        
            | 
            | 
           33 | 
           		$this->mapping = $this->conteneur->getParametreTableau('votes.mapping');
  | 
        
        
           | 751 | 
           delphine | 
           34 | 
           	}
  | 
        
        
           | 1603 | 
           jpm | 
           35 | 
              | 
        
        
           | 751 | 
           delphine | 
           36 | 
           	/**
  | 
        
        
            | 
            | 
           37 | 
           	 * Méthode principale de la classe.
  | 
        
        
           | 1603 | 
           jpm | 
           38 | 
           	 * Lance la récupération des images dans la base et les place dans un objet ResultatService
  | 
        
        
           | 751 | 
           delphine | 
           39 | 
           	 * pour l'afficher.
  | 
        
        
            | 
            | 
           40 | 
           	 * @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
  | 
        
        
            | 
            | 
           41 | 
           	 * @param array $parametres les paramètres situés après le ? dans l'url
  | 
        
        
            | 
            | 
           42 | 
           	 * */
  | 
        
        
            | 
            | 
           43 | 
           	public function consulter($ressources, $parametres) {
  | 
        
        
            | 
            | 
           44 | 
           		$this->ressources = $ressources;
  | 
        
        
           | 758 | 
           delphine | 
           45 | 
           		$this->parametres = $parametres;
  | 
        
        
           | 1603 | 
           jpm | 
           46 | 
              | 
        
        
           | 751 | 
           delphine | 
           47 | 
           		// Lancement du service
  | 
        
        
            | 
            | 
           48 | 
           		$votes = $this->chargerVotes();
  | 
        
        
            | 
            | 
           49 | 
           		$total = $this->compterVotes();
  | 
        
        
            | 
            | 
           50 | 
           		$this->navigation->setTotal($total);
  | 
        
        
           | 1603 | 
           jpm | 
           51 | 
              | 
        
        
           | 751 | 
           delphine | 
           52 | 
           		// Mettre en forme le résultat et l'envoyer pour affichage
  | 
        
        
            | 
            | 
           53 | 
           		$resultat = new ResultatService();
  | 
        
        
           | 1794 | 
           jpm | 
           54 | 
           		$resultat->corps = array('entete' => $this->navigation->getEntete(), 'resultats' => $votes);
  | 
        
        
           | 751 | 
           delphine | 
           55 | 
           		return $resultat;
  | 
        
        
            | 
            | 
           56 | 
           	}
  | 
        
        
           | 1603 | 
           jpm | 
           57 | 
              | 
        
        
           | 1827 | 
           jpm | 
           58 | 
           	private function chargerVotes() {
  | 
        
        
            | 
            | 
           59 | 
           		$idImgP = $this->bdd->proteger($this->ressources[0]);
  | 
        
        
            | 
            | 
           60 | 
           		$idProtocoleP = isset($this->parametres['protocole']) ? $this->bdd->proteger($this->parametres['protocole']) : null;
  | 
        
        
            | 
            | 
           61 | 
           		$requete = 'SELECT * FROM del_image_vote '.
  | 
        
        
            | 
            | 
           62 | 
           			"WHERE ce_image = $idImgP ".
  | 
        
        
            | 
            | 
           63 | 
           			($idProtocoleP != null ? "AND ce_protocole = $idProtocoleP " : '').
  | 
        
        
            | 
            | 
           64 | 
           			' -- '.__FILE__.' : '.__LINE__;
  | 
        
        
            | 
            | 
           65 | 
           		$resultats = $this->bdd->recupererTous($requete);
  | 
        
        
            | 
            | 
           66 | 
           		return $this->formaterVotes($resultats);
  | 
        
        
            | 
            | 
           67 | 
           	}
  | 
        
        
           | 1603 | 
           jpm | 
           68 | 
              | 
        
        
           | 1827 | 
           jpm | 
           69 | 
           	private function compterVotes() {
  | 
        
        
            | 
            | 
           70 | 
           		$requete = 'SELECT FOUND_ROWS() AS nbre -- '.__FILE__.' : '.__LINE__;
  | 
        
        
            | 
            | 
           71 | 
           		$resultats = $this->bdd->recuperer($requete);
  | 
        
        
            | 
            | 
           72 | 
           		return (int) $resultats['nbre'];
  | 
        
        
            | 
            | 
           73 | 
           	}
  | 
        
        
           | 1472 | 
           aurelien | 
           74 | 
              | 
        
        
           | 1827 | 
           jpm | 
           75 | 
           	private function formaterVotes($votes) {
  | 
        
        
            | 
            | 
           76 | 
           		$retour = array();
  | 
        
        
            | 
            | 
           77 | 
           		foreach ($votes as $vote) {
  | 
        
        
            | 
            | 
           78 | 
           			foreach ($vote as $champ => $valeur) {
  | 
        
        
            | 
            | 
           79 | 
           				$attribut = $this->mapping[$champ];
  | 
        
        
            | 
            | 
           80 | 
           				$retour[$vote['id_vote']][$attribut] = $valeur;
  | 
        
        
            | 
            | 
           81 | 
           			}
  | 
        
        
            | 
            | 
           82 | 
           		}
  | 
        
        
            | 
            | 
           83 | 
           		return $retour;
  | 
        
        
            | 
            | 
           84 | 
           	}
  | 
        
        
           | 1603 | 
           jpm | 
           85 | 
              | 
        
        
           | 1827 | 
           jpm | 
           86 | 
           	public function ajouter($ressources, $parametres) {
  | 
        
        
            | 
            | 
           87 | 
           		$this->ressources = $ressources;
  | 
        
        
            | 
            | 
           88 | 
           		$this->parametres = $parametres;
  | 
        
        
           | 1603 | 
           jpm | 
           89 | 
              | 
        
        
           | 1827 | 
           jpm | 
           90 | 
           		$this->verifierParametresAjoutModif();
  | 
        
        
            | 
            | 
           91 | 
           		$idVote = $this->ajouterVote();
  | 
        
        
            | 
            | 
           92 | 
           		if ($idVote) {
  | 
        
        
            | 
            | 
           93 | 
           			self::updateStats($this->bdd, $this->ressources[0], $this->parametres['protocole']);
  | 
        
        
            | 
            | 
           94 | 
              | 
        
        
           | 1472 | 
           aurelien | 
           95 | 
           			$resultat = new ResultatService();
  | 
        
        
           | 1603 | 
           jpm | 
           96 | 
           			$resultat->corps = array('id_vote' => $idVote);
  | 
        
        
           | 1472 | 
           aurelien | 
           97 | 
           			return $resultat;
  | 
        
        
           | 782 | 
           delphine | 
           98 | 
           		}
  | 
        
        
           | 1827 | 
           jpm | 
           99 | 
           		return false;
  | 
        
        
           | 782 | 
           delphine | 
           100 | 
           	}
  | 
        
        
           | 1603 | 
           jpm | 
           101 | 
              | 
        
        
           | 1827 | 
           jpm | 
           102 | 
           	private function ajouterVote() {
  | 
        
        
            | 
            | 
           103 | 
           		$idImgP = $this->bdd->proteger($this->ressources[0]);
  | 
        
        
            | 
            | 
           104 | 
           		$idProtocoleP = $this->bdd->proteger($this->parametres['protocole']);
  | 
        
        
            | 
            | 
           105 | 
           		$idUtilisateurP = $this->bdd->proteger($this->parametres['utilisateur']);
  | 
        
        
            | 
            | 
           106 | 
           		$valeurP = $this->bdd->proteger($this->parametres['valeur']);
  | 
        
        
           | 2080 | 
           aurelien | 
           107 | 
              | 
        
        
           | 2089 | 
           aurelien | 
           108 | 
           		$this->verifierAutorisationProtocoleIdentifie($this->parametres['protocole'], $this->parametres['utilisateur']);
  | 
        
        
           | 2080 | 
           aurelien | 
           109 | 
              | 
        
        
           | 1827 | 
           jpm | 
           110 | 
           		$requete = 'INSERT INTO del_image_vote (ce_image, ce_protocole, ce_utilisateur, valeur, date) '.
  | 
        
        
            | 
            | 
           111 | 
           			"VALUES ( $idImgP, $idProtocoleP, $idUtilisateurP, $valeurP, NOW()) ".
  | 
        
        
            | 
            | 
           112 | 
           			' -- '.__FILE__.' : '.__LINE__;
  | 
        
        
            | 
            | 
           113 | 
              | 
        
        
            | 
            | 
           114 | 
           		$resultat = $this->bdd->executer($requete);
  | 
        
        
            | 
            | 
           115 | 
           		if ($resultat === false) {
  | 
        
        
            | 
            | 
           116 | 
           			$msg = "Un problème est survenu lors de l'ajout d'un vote.";
  | 
        
        
            | 
            | 
           117 | 
           			throw new Exception($msg, RestServeur::HTTP_CODE_ERREUR);
  | 
        
        
            | 
            | 
           118 | 
           		} else if ($resultat === 0) {
  | 
        
        
            | 
            | 
           119 | 
           			$msg = "Aucun vote ne correspond au critères fournis : ".
  | 
        
        
            | 
            | 
           120 | 
           				"idImg -> $idImgP, id_protocole -> $idProtocoleP et id_utilisateur -> $idUtilisateurP.";
  | 
        
        
            | 
            | 
           121 | 
           			throw new Exception($msg, RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE);
  | 
        
        
           | 829 | 
           aurelien | 
           122 | 
           		}
  | 
        
        
           | 1827 | 
           jpm | 
           123 | 
           		// ATTENTION : idVote doit être récupéré avant toute nouvelle requete !
  | 
        
        
            | 
            | 
           124 | 
           		$idVote = $this->bdd->recupererIdDernierAjout();
  | 
        
        
            | 
            | 
           125 | 
           		return $idVote;
  | 
        
        
           | 829 | 
           aurelien | 
           126 | 
           	}
  | 
        
        
           | 1603 | 
           jpm | 
           127 | 
              | 
        
        
           | 1827 | 
           jpm | 
           128 | 
           	public function verifierParametresAjoutModif() {
  | 
        
        
            | 
            | 
           129 | 
           		$erreurs = array();
  | 
        
        
            | 
            | 
           130 | 
           		if (!is_numeric($this->ressources[0])) {
  | 
        
        
            | 
            | 
           131 | 
           			$erreurs[] = "Le paramètre indiquant l'identifiant de l'image doit être numérique.";
  | 
        
        
           | 1472 | 
           aurelien | 
           132 | 
           		}
  | 
        
        
           | 1603 | 
           jpm | 
           133 | 
              | 
        
        
           | 1827 | 
           jpm | 
           134 | 
           		if (!isset($this->parametres['utilisateur'])) {
  | 
        
        
            | 
            | 
           135 | 
           			$erreurs[] = "Paramètre 'utilisateur' manquant.";
  | 
        
        
           | 1472 | 
           aurelien | 
           136 | 
           		}
  | 
        
        
           | 1603 | 
           jpm | 
           137 | 
              | 
        
        
           | 1827 | 
           jpm | 
           138 | 
           		if (!isset($this->parametres['protocole'])) {
  | 
        
        
            | 
            | 
           139 | 
           			$erreurs[] = "Paramètre 'id_protocole' manquant.";
  | 
        
        
           | 751 | 
           delphine | 
           140 | 
           		} else {
  | 
        
        
           | 1827 | 
           jpm | 
           141 | 
           			if (!is_numeric($this->parametres['protocole'])) {
  | 
        
        
            | 
            | 
           142 | 
           				$erreurs[] = "Le paramètre 'protocole' doit être numérique.";
  | 
        
        
           | 751 | 
           delphine | 
           143 | 
           			}
  | 
        
        
            | 
            | 
           144 | 
           		}
  | 
        
        
            | 
            | 
           145 | 
              | 
        
        
           | 1827 | 
           jpm | 
           146 | 
           		if (!isset($this->parametres['valeur'])) {
  | 
        
        
            | 
            | 
           147 | 
           			$erreurs[] = "Paramètre 'valeur' manquant.";
  | 
        
        
           | 751 | 
           delphine | 
           148 | 
           		} else {
  | 
        
        
           | 1827 | 
           jpm | 
           149 | 
           			if (!is_numeric($this->parametres['valeur'])) {
  | 
        
        
            | 
            | 
           150 | 
           				$erreurs[] = "Le paramètre 'valeur' doit être numérique.";
  | 
        
        
           | 751 | 
           delphine | 
           151 | 
           			}
  | 
        
        
            | 
            | 
           152 | 
           		}
  | 
        
        
           | 1603 | 
           jpm | 
           153 | 
              | 
        
        
           | 751 | 
           delphine | 
           154 | 
           		if (!empty($erreurs)) {
  | 
        
        
           | 1827 | 
           jpm | 
           155 | 
           			$msg = "Erreur lors de la configuration : \n".implode("\n", $erreurs);
  | 
        
        
            | 
            | 
           156 | 
           			throw new Exception($msg, RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
  | 
        
        
           | 751 | 
           delphine | 
           157 | 
           		}
  | 
        
        
            | 
            | 
           158 | 
           	}
  | 
        
        
           | 1603 | 
           jpm | 
           159 | 
              | 
        
        
           | 1827 | 
           jpm | 
           160 | 
           	public function modifier($ressources, $parametres) {
  | 
        
        
            | 
            | 
           161 | 
           		$this->ressources = $ressources;
  | 
        
        
            | 
            | 
           162 | 
           		$this->parametres = $parametres;
  | 
        
        
            | 
            | 
           163 | 
           		$this->verifierParametresAjoutModif();
  | 
        
        
            | 
            | 
           164 | 
           		$resultat = $this->modifierVote();
  | 
        
        
            | 
            | 
           165 | 
           		if ($resultat > 0) {
  | 
        
        
            | 
            | 
           166 | 
           			self::updateStats($this->bdd, $this->ressources[0],$this->parametres['protocole']);
  | 
        
        
            | 
            | 
           167 | 
           			return 'ok';
  | 
        
        
            | 
            | 
           168 | 
           		}
  | 
        
        
            | 
            | 
           169 | 
           	}
  | 
        
        
           | 1603 | 
           jpm | 
           170 | 
              | 
        
        
           | 1827 | 
           jpm | 
           171 | 
           	public function modifierVote() {
  | 
        
        
            | 
            | 
           172 | 
           		$valeurP = $this->bdd->proteger($this->parametres['valeur']);
  | 
        
        
            | 
            | 
           173 | 
           		$idImgP = $this->bdd->proteger($this->ressources[0]);
  | 
        
        
            | 
            | 
           174 | 
           		$idProtocoleP = $this->bdd->proteger($this->parametres['protocole']);
  | 
        
        
            | 
            | 
           175 | 
           		$idUtilisateurP = $this->bdd->proteger($this->parametres['utilisateur']);
  | 
        
        
           | 2089 | 
           aurelien | 
           176 | 
              | 
        
        
            | 
            | 
           177 | 
           		$this->verifierAutorisationProtocoleIdentifie($this->parametres['protocole'], $this->parametres['utilisateur']);
  | 
        
        
            | 
            | 
           178 | 
              | 
        
        
           | 1827 | 
           jpm | 
           179 | 
           		$requete = 'UPDATE del_image_vote '.
  | 
        
        
            | 
            | 
           180 | 
           			"SET valeur = $valeurP, date = NOW() ".
  | 
        
        
            | 
            | 
           181 | 
           			"WHERE ce_image = $idImgP AND ce_protocole = $idProtocoleP AND ce_utilisateur = $idUtilisateurP ".
  | 
        
        
            | 
            | 
           182 | 
           			' -- '.__FILE__.' : '.__LINE__;
  | 
        
        
            | 
            | 
           183 | 
              | 
        
        
            | 
            | 
           184 | 
           		$resultat = $this->bdd->executer($requete);
  | 
        
        
            | 
            | 
           185 | 
           		if ($resultat === false) {
  | 
        
        
            | 
            | 
           186 | 
           			$msg = "Un erreur est survenu lors de la tentative de modification du vote.";
  | 
        
        
            | 
            | 
           187 | 
           			throw new Exception($msg, RestServeur::HTTP_CODE_ERREUR);
  | 
        
        
            | 
            | 
           188 | 
           		} else if ($resultat === 0) {
  | 
        
        
            | 
            | 
           189 | 
           			$msg = "Aucun vote ne correspond au critères fournis : ".
  | 
        
        
            | 
            | 
           190 | 
           				"idImg -> $idImgP, id_protocole -> $idProtocoleP et id_utilisateur -> $idUtilisateurP.";
  | 
        
        
            | 
            | 
           191 | 
           			throw new Exception($msg, RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE);
  | 
        
        
           | 829 | 
           aurelien | 
           192 | 
           		}
  | 
        
        
           | 1827 | 
           jpm | 
           193 | 
           		return $resultat;
  | 
        
        
            | 
            | 
           194 | 
           	}
  | 
        
        
           | 1603 | 
           jpm | 
           195 | 
              | 
        
        
           | 1827 | 
           jpm | 
           196 | 
           	public function supprimer($ressources) {
  | 
        
        
            | 
            | 
           197 | 
           		$this->ressources = $ressources;
  | 
        
        
            | 
            | 
           198 | 
           		$this->verifierParametresSuppression();
  | 
        
        
            | 
            | 
           199 | 
           		$idVoteP = $this->bdd->proteger($this->ressources[2]);
  | 
        
        
            | 
            | 
           200 | 
              | 
        
        
            | 
            | 
           201 | 
           		$voteInfos = $this->recupererInfosVote($idVoteP);
  | 
        
        
            | 
            | 
           202 | 
           		$this->verifierAutorisationSuppression($voteInfos);
  | 
        
        
            | 
            | 
           203 | 
              | 
        
        
            | 
            | 
           204 | 
           		$resultat = $this->supprimerVote($idVoteP);
  | 
        
        
            | 
            | 
           205 | 
           		if ($resultat > 0) {
  | 
        
        
            | 
            | 
           206 | 
           			$idImg = $this->ressources[0];
  | 
        
        
            | 
            | 
           207 | 
           			self::updateStats($this->bdd, $idImg, $voteInfos['id_protocole']);
  | 
        
        
            | 
            | 
           208 | 
           			return 'ok';
  | 
        
        
           | 829 | 
           aurelien | 
           209 | 
           		}
  | 
        
        
           | 1827 | 
           jpm | 
           210 | 
           	}
  | 
        
        
           | 1603 | 
           jpm | 
           211 | 
              | 
        
        
           | 1827 | 
           jpm | 
           212 | 
           	public function verifierParametresSuppression() {
  | 
        
        
            | 
            | 
           213 | 
           		$erreurs = array();
  | 
        
        
            | 
            | 
           214 | 
           		if (!isset($this->ressources[0])) {
  | 
        
        
            | 
            | 
           215 | 
           			$erreurs[] = "Le paramètre indiquant l'identifiant de l'image est obligatoire.";
  | 
        
        
           | 829 | 
           aurelien | 
           216 | 
           		} else {
  | 
        
        
           | 1827 | 
           jpm | 
           217 | 
           			if (!is_numeric($this->ressources[0])) {
  | 
        
        
            | 
            | 
           218 | 
           				$erreurs[] = "Le paramètre indiquant l'identifiant de l'image doit être numérique.";
  | 
        
        
           | 829 | 
           aurelien | 
           219 | 
           			}
  | 
        
        
            | 
            | 
           220 | 
           		}
  | 
        
        
           | 1827 | 
           jpm | 
           221 | 
           		if (!isset($this->ressources[2])) {
  | 
        
        
            | 
            | 
           222 | 
           			$erreurs[] = "Le paramètre indiquant l'identifiant du vote est obligatoire.";
  | 
        
        
           | 829 | 
           aurelien | 
           223 | 
           		} else {
  | 
        
        
           | 1827 | 
           jpm | 
           224 | 
           			if (!is_numeric($this->ressources[2])) {
  | 
        
        
            | 
            | 
           225 | 
           				$erreurs[] = "Le paramètre indiquant l'identifiant du vote doit être numérique.";
  | 
        
        
           | 829 | 
           aurelien | 
           226 | 
           			}
  | 
        
        
            | 
            | 
           227 | 
           		}
  | 
        
        
           | 1603 | 
           jpm | 
           228 | 
              | 
        
        
           | 829 | 
           aurelien | 
           229 | 
           		if (!empty($erreurs)) {
  | 
        
        
           | 1827 | 
           jpm | 
           230 | 
           			$msg = 'Erreur lors de la configuration : '."\n".implode("\n", $erreurs);
  | 
        
        
            | 
            | 
           231 | 
           			throw new Exception($msg, RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
  | 
        
        
           | 829 | 
           aurelien | 
           232 | 
           		}
  | 
        
        
            | 
            | 
           233 | 
           	}
  | 
        
        
           | 1603 | 
           jpm | 
           234 | 
              | 
        
        
           | 1827 | 
           jpm | 
           235 | 
           	private function recupererInfosVote($idVoteP) {
  | 
        
        
            | 
            | 
           236 | 
           		$requete = 'SELECT id_vote, ce_protocole AS id_protocole, ce_utilisateur AS id_utilisateur '.
  | 
        
        
            | 
            | 
           237 | 
           			'FROM del_image_vote '.
  | 
        
        
            | 
            | 
           238 | 
           			"WHERE id_vote = $idVoteP ".
  | 
        
        
            | 
            | 
           239 | 
           			' -- '.__FILE__.' : '.__LINE__;
  | 
        
        
           | 1603 | 
           jpm | 
           240 | 
              | 
        
        
           | 1827 | 
           jpm | 
           241 | 
           		$infos = $this->bdd->recuperer($requete);
  | 
        
        
            | 
            | 
           242 | 
           		if ($infos === false) {
  | 
        
        
            | 
            | 
           243 | 
           			$msg = "Aucun vote ne correspond à l'identifiant $idVoteP.";
  | 
        
        
            | 
            | 
           244 | 
           			throw new Exception($msg, RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE);
  | 
        
        
           | 1472 | 
           aurelien | 
           245 | 
           		}
  | 
        
        
           | 1827 | 
           jpm | 
           246 | 
           		return $infos;
  | 
        
        
           | 1472 | 
           aurelien | 
           247 | 
           	}
  | 
        
        
           | 2089 | 
           aurelien | 
           248 | 
              | 
        
        
            | 
            | 
           249 | 
           	private function verifierAutorisationProtocoleIdentifie($idProtocole, $idUtilisateur) {
  | 
        
        
            | 
            | 
           250 | 
              | 
        
        
            | 
            | 
           251 | 
           		$idProtocoleP = $this->bdd->proteger($idProtocole);
  | 
        
        
            | 
            | 
           252 | 
              | 
        
        
            | 
            | 
           253 | 
           		$gestion_utilisateur = $this->conteneur->getUtilisateur();
  | 
        
        
            | 
            | 
           254 | 
           		$utilisateur = $gestion_utilisateur->getUtilisateur();
  | 
        
        
            | 
            | 
           255 | 
              | 
        
        
            | 
            | 
           256 | 
           		$utilisateurAComparer = $gestion_utilisateur->getIdAnonymeTemporaire();
  | 
        
        
            | 
            | 
           257 | 
              | 
        
        
            | 
            | 
           258 | 
           		// Si l'utilisateur n'est pas identifié on vérifie que le protocole n'impose
  | 
        
        
            | 
            | 
           259 | 
           		// pas d'être connecté pour voter, et le cas échéant, on refuse le vote
  | 
        
        
            | 
            | 
           260 | 
           		if(!$utilisateur['connecte']) {
  | 
        
        
            | 
            | 
           261 | 
           			$requete_proto_identifie = 'SELECT identifie FROM del_image_protocole '.
  | 
        
        
            | 
            | 
           262 | 
           					'WHERE id_protocole = '.$idProtocoleP;
  | 
        
        
            | 
            | 
           263 | 
           			$proto_identifie = $this->bdd->recuperer($requete_proto_identifie);
  | 
        
        
            | 
            | 
           264 | 
              | 
        
        
            | 
            | 
           265 | 
           			if($proto_identifie['identifie'] == 1) {
  | 
        
        
            | 
            | 
           266 | 
           				$msg = "Ce protocole nécéssite d'être identifié pour voter.";
  | 
        
        
            | 
            | 
           267 | 
           				throw new Exception($msg, RestServeur::HTTP_CODE_ERREUR);
  | 
        
        
            | 
            | 
           268 | 
           			}
  | 
        
        
            | 
            | 
           269 | 
           		} else {
  | 
        
        
            | 
            | 
           270 | 
           			$utilisateurAComparer = $utilisateur['id_utilisateur'];
  | 
        
        
            | 
            | 
           271 | 
           		}
  | 
        
        
            | 
            | 
           272 | 
              | 
        
        
            | 
            | 
           273 | 
           		// Sinon on vérifie tout de même que la personne identifiée est bien celle
  | 
        
        
            | 
            | 
           274 | 
           		// associée aux votes dans les paramètres
  | 
        
        
            | 
            | 
           275 | 
           		if($utilisateurAComparer != $idUtilisateur) {
  | 
        
        
            | 
            | 
           276 | 
           			$msg = "L'utilisateur identifié et l'utilisateur du vote ne correspondent pas.";
  | 
        
        
            | 
            | 
           277 | 
           			throw new Exception($msg, RestServeur::HTTP_CODE_ERREUR);
  | 
        
        
            | 
            | 
           278 | 
           		}
  | 
        
        
            | 
            | 
           279 | 
           	}
  | 
        
        
           | 1603 | 
           jpm | 
           280 | 
              | 
        
        
           | 1827 | 
           jpm | 
           281 | 
           	private function verifierAutorisationSuppression($voteInfos) {
  | 
        
        
           | 2077 | 
           mathias | 
           282 | 
           		$gestion_utilisateur = $this->conteneur->getUtilisateur();
  | 
        
        
            | 
            | 
           283 | 
           		$utilisateur = $gestion_utilisateur->getUtilisateur();
  | 
        
        
            | 
            | 
           284 | 
           		// @SECURE vérifier que l'utilisateur qui modifie son vote est bien celui qui est connecté
  | 
        
        
           | 1827 | 
           jpm | 
           285 | 
           		if (isset($utilisateur['id_utilisateur']) &&
  | 
        
        
            | 
            | 
           286 | 
           				$utilisateur['id_utilisateur'] != $voteInfos['id_utilisateur'] &&
  | 
        
        
           | 2077 | 
           mathias | 
           287 | 
           				$gestion_utilisateur->getIdAnonymeTemporaire() != $voteInfos['id_utilisateur']) {
  | 
        
        
           | 1827 | 
           jpm | 
           288 | 
           			$message = "Vous n'êtes pas autorisé à supprimer le vote : {$voteInfos['id_vote']}";
  | 
        
        
            | 
            | 
           289 | 
           			throw new Exception($message, RestServeur::HTTP_CODE_ACCES_NON_AUTORISE);
  | 
        
        
           | 758 | 
           delphine | 
           290 | 
           		}
  | 
        
        
           | 1603 | 
           jpm | 
           291 | 
           	}
  | 
        
        
            | 
            | 
           292 | 
              | 
        
        
           | 1827 | 
           jpm | 
           293 | 
           	private function supprimerVote($idVoteP) {
  | 
        
        
            | 
            | 
           294 | 
           		$requete = "DELETE FROM del_image_vote WHERE id_vote = $idVoteP ".' -- '.__FILE__.' : '.__LINE__;
  | 
        
        
            | 
            | 
           295 | 
           		$resultat = $this->bdd->executer($requete);
  | 
        
        
            | 
            | 
           296 | 
           		if ($resultat === false) {
  | 
        
        
            | 
            | 
           297 | 
           			$msg = "Impossible de supprimer le vote $idVoteP.";
  | 
        
        
            | 
            | 
           298 | 
           			throw new Exception($msg, RestServeur::HTTP_CODE_ERREUR);
  | 
        
        
           | 751 | 
           delphine | 
           299 | 
           		}
  | 
        
        
           | 1827 | 
           jpm | 
           300 | 
           		return $resultat;
  | 
        
        
           | 751 | 
           delphine | 
           301 | 
           	}
  | 
        
        
           | 1603 | 
           jpm | 
           302 | 
              | 
        
        
           | 1827 | 
           jpm | 
           303 | 
           	// intermédiaire pour la méthode contenue dans "Commun"
  | 
        
        
            | 
            | 
           304 | 
           	static function updateStats($db, $id_image, $id_protocole) {
  | 
        
        
            | 
            | 
           305 | 
           		return TelaBotanica\Del\Commun\Stats::updateStats($db, $id_image, $id_protocole);
  | 
        
        
           | 751 | 
           delphine | 
           306 | 
           	}
  | 
        
        
           | 1827 | 
           jpm | 
           307 | 
           }
  |