Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 2156 → Rev 2157

/trunk/services/modules/0.1/commentaires/AjouterCommentaire.php
52,6 → 52,10
return $resultat;
}
 
/**
* Vérifie notamment que l'auteur du vote est désigné soit par un ID, soit
* par un triplet (nom, prénom, adresse courriel)
*/
private function verifierParametres() {
if (!isset($this->parametres['observation'])) {
$this->erreurs[] = "Impossible d'ajouter un commentaire sans identifiant d'observation (paramètre 'observation').";
99,9 → 103,13
}
}
 
/**
* Si l'auteur du vote est désigné par un ID, va chercher ses nom, prénom, courriel;
* s'il est désigné par un triplet (nom, prénom, adresse courriel), va chercher son ID
*/
private function completerParametresUtilisateur() {
$utilisateur = (isset($this->parametres['auteur.id'])) ? $this->obtenirUtilisateurAvecId() : $this->obtenirUtilisateurSansId();
if ($utilisateur !== false) {
if ($utilisateur != false) {
foreach ($utilisateur as $param => $valeur) {
$this->parametres[$param] = $valeur;
}
108,10 → 116,17
}
}
 
/**
* On suppose que si l'utilisateur envoie sa proposition avec un ID, c'est
* qu'il est connu d'IP, donc qu'on trouvera ses coordonnées dans
* del_utilisateur_infos
*
* @TODO valider cette hypothèse
*/
private function obtenirUtilisateurAvecId() {
$auteurIdP = $this->bdd->proteger($this->parametres['auteur.id']);
$requete = "SELECT id_utilisateur AS 'auteur.id', nom AS 'auteur.nom', prenom AS 'auteur.prenom', courriel AS 'auteur.courriel' ".
'FROM del_utilisateur '.
'FROM del_utilisateur_infos '.
"WHERE id_utilisateur = $auteurIdP ".
' -- '.__FILE__.' : '.__LINE__;
$utilisateur = $this->bdd->recuperer($requete);
118,17 → 133,30
return $utilisateur;
}
 
/**
* Pour un utilisateur désigné par un triplet (nom, prenom, adresse courriel), demande
* son ID à l'annuaire - vue la base de données (2017-03-24), aucun tuple ne contient
* une adresse courriel sans contenir d'ID, mais beaucoup ne contiennent ni l'un ni
* l'autre (code stupide, tentative de correction ajd)
*/
private function obtenirUtilisateurSansId() {
$nomP = $this->bdd->proteger($this->parametres['auteur.nom']);
$prenomP = $this->bdd->proteger($this->parametres['auteur.prenom']);
$courrielP = $this->bdd->proteger($this->parametres['auteur.courriel']);
 
// Si l'utilisateur s'est déjà connecté à DeL au moins une fois, on récupère ses
// nom et prénom connus dans la base; on lui interdit d'usurper sa propre identité
$requete = "SELECT id_utilisateur AS 'auteur.id', nom AS 'auteur.nom', prenom AS 'auteur.prenom', ".
"courriel AS 'auteur.courriel' ".
'FROM del_utilisateur '.
"WHERE courriel = $courrielP AND nom = $nomP AND prenom = $prenomP ".
'FROM del_utilisateur_infos '.
"WHERE courriel = $courrielP ".
' -- '.__FILE__.' : '.__LINE__;
$utilisateur = $this->bdd->recuperer($requete);
 
// si l'utilisateur n'a pas été trouvé, on devrait aller le chercher dans
// l'annuaire, au cas où il soit inscrit à TB mais ne se soit pas connecté
// @TODO faire un appel au service annuaire/identite-par-courriel
 
return $utilisateur;
}
 
152,18 → 180,19
 
private function creerPropositionInitiale() {
$idObsP = $this->bdd->proteger($this->parametres['observation']);
 
$requete = 'INSERT IGNORE INTO del_commentaire '.
'(ce_observation, ce_utilisateur, utilisateur_prenom, utilisateur_nom, utilisateur_courriel, '.
'nom_sel, nom_sel_nn, nom_ret, nom_ret_nn, nt, famille, nom_referentiel, date, proposition_initiale) '.
'SELECT id_observation, ce_utilisateur, prenom, nom, courriel, nom_sel, '.
'SELECT id_observation, ce_utilisateur, prenom_utilisateur, nom_utilisateur, courriel_utilisateur, nom_sel, '.
"IF(nom_sel_nn = 0, NULL, nom_sel_nn), IF(nom_ret = '', NULL, nom_ret), IF(nom_ret_nn = 0, NULL, nom_ret_nn), ".
"IF(nt = 0, NULL, nt), IF(famille = '', NULL, famille), IF(nom_sel_nn = 0, NULL, nom_referentiel), NOW(), '1' ".
'FROM del_observation AS do '.
' LEFT JOIN del_utilisateur AS du '.
' ON do.ce_utilisateur = du.id_utilisateur '.
"WHERE id_observation = $idObsP ".
' -- '.__FILE__.' : '.__LINE__;
 
$resultat = $this->bdd->executer($requete);
 
return $resultat;
}