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; |
} |
|