18,22 → 18,84 |
protected $conteneur; |
protected $gestionBdd; |
protected $bdd; |
protected $navigation; |
|
|
public function __construct(Conteneur $conteneur = null) { |
$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur; |
$this->gestionBdd = $conteneur->getGestionBdd(); |
$this->bdd = $this->gestionBdd->getBdd(); |
$this->navigation = $conteneur->getNavigation(); |
$this->conteneur->chargerConfiguration('config_mapping_votes.ini'); |
} |
|
/** |
* Configuration du service en fonction du fichier de config config_del.ini |
* */ |
private function configurer() { |
$this->mappingVotes = $this->conteneur->getParametre('mapping_votes'); |
} |
|
/** |
* Méthode seulement présente pour interdire proprement l'accès à la consultation |
* */ |
public function consulter($ressources, $parametres) { |
RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE); |
RestServeur::ajouterMessage("Le service 'observation/#id/#id_proposition/vote' n'autorise pas la consultation."); |
|
$this->configurer(); |
|
//TODO: faut il vérifier quelque chose, si on n'a pas renseigné les valeurs correctement |
// dans ressource, le service n'est même pas appelé |
$votes = $this->chargerVotes($ressources[1]); |
$this->navigation->setTotal(count($votes)); |
// Mettre en forme le résultat et l'envoyer pour affichage |
$resultat = new ResultatService(); |
$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $votes); |
return $resultat; |
} |
|
private function chargerVotes($id_commentaire) { |
$requeteVotes = 'SELECT * FROM '. |
$this->gestionBdd->formaterTable('del_commentaire_vote'). |
'WHERE ce_proposition = '.$this->proteger($id_commentaire); |
$resultatsVotes = $this->bdd->recupererTous($requeteVotes); |
$votes = array(); |
foreach ($resultatsVotes as $vote) { |
$votes[$vote['id_vote']] = $this->formaterVotes($vote); |
$utilisateur = $this->chercherUtilisateur($vote['ce_utilisateur']); |
if($utilisateur) { |
$votes[$vote['id_vote']] = array_merge($votes[$vote['id_vote']], $utilisateur); |
} |
} |
return $votes; |
} |
|
/** |
* Trouver l'utilisateur en fonction des paramètres ou de la base de données si le nom, prénom et courriel ne sont pas donnés |
* @return le tableau utilisateur |
* */ |
private function chercherUtilisateur($id) { |
$utilisateur = array(); |
$requete = "SELECT id_utilisateur as 'auteur.id', nom as 'auteur.nom', prenom as 'auteur.prenom', courriel as 'auteur.courriel' ". |
'FROM '.$this->gestionBdd->formaterTable('del_utilisateur'). |
'WHERE id_utilisateur = '.$this->bdd->proteger($id); |
$utilisateur = $this->bdd->recuperer($requete); |
|
return $utilisateur; |
} |
|
/** |
* Formater un vote en fonction du fichier de configuration config_votes.ini |
* @param $votes array() |
* */ |
private function formaterVotes($vote) { |
$retour = array(); |
foreach ($vote as $param => $valeur) { |
$retour[$this->mappingVotes[$param]] = $valeur; |
} |
return $retour; |
} |
|
/** |
* Ajoute un vote à une proposition grâce aux informations passées en paramètres |
* @param array $ressources tableau des informations contenues dans l'url après le nom du service |
* @param array $parametres contenu du post |