Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 2156 → Rev 2157

/trunk/services/bibliotheque/GestionUtilisateur.php
66,7 → 66,7
* Recherche un jeton SSO dans l'entête HTTP "Authorization", vérifie ce
* jeton auprès de l'annuaire et en cas de succès charge les informations
* de l'utilisateur associé; si c'est la première fois que l'utilisateur
* utilise DeL, crée un profil local dans del_utilisateurs_infos; si le
* utilise DeL, crée un profil local dans del_utilisateur_infos; si le
* profil a changé depuis la dernière connexion, le met à jour ainsi que
* les coordonnées dans les commentaires
*
114,7 → 114,7
}
 
/**
* Retourne true si le profil local stocké dans del_utilisateurs_infos
* Retourne true si le profil local stocké dans del_utilisateur_infos
* n'est plus à jour par rapport aux informations du jeton SSO; si le
* jeton est vide, retourne false pour éviter de tout casser
*/
130,7 → 130,7
}
 
/**
* Met à jour del_utilisateurs_infos en fonction des informations
* Met à jour del_utilisateur_infos en fonction des informations
* contenues par le jeton SSO; si ce dernier est vide, ne fait
* rien (boulette-proof)
*/
137,7 → 137,7
protected function mettreAJourProfilLocal() {
echo "Mise à jour profil local !!";
if ($this->jetonDecode != null && $this->jetonDecode['id'] != '') {
$requete = 'UPDATE del_utilisateurs_infos SET'
$requete = 'UPDATE del_utilisateur_infos SET'
. ' nom = ' . $this->bdd->proteger($this->jetonDecode['nom']) . ', '
. ' intitule = ' . $this->bdd->proteger($this->jetonDecode['intitule']) . ', '
. ' prenom = ' . $this->bdd->proteger($this->jetonDecode['prenom'])
369,7 → 369,7
}
 
/**
* Ajoute un utilisateur à la table des profils locaux del_utilisateurs_infos;
* Ajoute un utilisateur à la table des profils locaux del_utilisateur_infos;
* suppose que l'utilisateur est correctement identifié (jeton décodé disponible)
*/
public function initialiserInfosUtilisateur($id_utilisateur) {
/trunk/services/modules/0.1/observations/VoteObservation.php
69,6 → 69,13
return $retour;
}
 
/**
* Recherche les coordonnées d'un utilisateur en fonction de son ID;
* puisqu'il a un ID c'est qu'il est connecté, on suppose donc qu'il
* a un tuple dans del_utilisateur_infos
*
* @TODO vérifier cette hypothèse
*/
private function chercherUtilisateur($id) {
// par défaut, pas d'info
$utilisateur = array();
77,7 → 84,7
$idUtilisateurP = $this->bdd->proteger($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 = $idUtilisateurP ".
' -- '.__FILE__.':'.__LINE__;
$utilisateur = $this->bdd->recuperer($requete);
157,11 → 164,10
$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, nom_sel_nn, nom_ret, nom_ret_nn, '.
'SELECT id_observation, ce_utilisateur, prenom_utilisateur, nom_utilisateur, '.
' courriel_utilisateur, nom_sel, nom_sel_nn, nom_ret, nom_ret_nn, '.
" nt, famille, nom_referentiel, NOW(), '1' ".
'FROM del_observation do '.
' LEFT JOIN del_utilisateur du ON (do.ce_utilisateur = du.id_utilisateur) '.
"WHERE id_observation = $idObservationP ".
' -- '.__FILE__.' : '.__LINE__;
 
/trunk/services/modules/0.1/syndication/Commentaires.php
167,12 → 167,10
$requete = 'SELECT DISTINCT dc.*, '.
' dob.id_observation AS dob_id_observation, dob.ce_zone_geo AS dob_ce_zone_geo, '.
' dob.zone_geo AS dob_zone_geo, dob.date_observation AS dob_date_observation, dob.nom_sel AS dob_nom_sel, '.
' duo.prenom AS observateur_prenom, duo.nom AS observateur_nom, duo.courriel AS observateur_courriel '.
' dob.prenom_utilisateur AS observateur_prenom, dob.nom_utilisateur AS observateur_nom, dob.courriel_utilisateur AS observateur_courriel '.
'FROM del_commentaire AS dc '.
' INNER JOIN del_observation AS dob '.
' ON dob.id_observation = dc.ce_observation '.
' LEFT JOIN del_utilisateur AS duo '.
' ON dob.ce_utilisateur = duo.id_utilisateur '.
"WHERE id_commentaire IN ($idsCommentairesconcat) ".
'ORDER BY dc.date DESC '.
'LIMIT '.$this->navigation->getDepart().','.$this->navigation->getLimite().' '.
/trunk/services/modules/0.1/syndication/Tags.php
180,9 → 180,9
' ON ce_image = id_image '.
' INNER JOIN del_observation AS do '.
' ON di.ce_observation = do.id_observation '.
' LEFT JOIN del_utilisateur AS duo '.
' LEFT JOIN del_utilisateur_infos AS duo '.
' ON do.ce_utilisateur = duo.id_utilisateur '.
' LEFT JOIN del_utilisateur AS du '.
' LEFT JOIN del_utilisateur_infos AS du '.
' ON if((CHAR_LENGTH(dit.ce_utilisateur) <> 32),CAST(dit.ce_utilisateur AS unsigned),0) '.
' = du.id_utilisateur '.
'WHERE actif = 1 '.
/trunk/services/modules/0.1/syndication/Votes.php
173,9 → 173,9
' ON di.ce_observation = do.id_observation '.
' INNER JOIN del_image_protocole AS dip '.
' ON ce_protocole = id_protocole '.
' LEFT JOIN del_utilisateur AS duo '.
' LEFT JOIN del_utilisateur_infos AS duo '.
' ON do.ce_utilisateur = duo.id_utilisateur '.
' LEFT JOIN del_utilisateur AS duv '.
' LEFT JOIN del_utilisateur_infos AS duv '.
' ON if((CHAR_LENGTH(divo.ce_utilisateur) <> 32),CAST(divo.ce_utilisateur AS unsigned),0) '.
' = duv.id_utilisateur '.
"WHERE id_vote IN ($idsVotesConcat) ".
/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;
}
 
/trunk/services/modules/0.1/statistiques/StatistiquesParAnnee.php
662,7 → 662,7
*/
private function getListeMeilleursVoteurs() {
$liste = array();
$requete = "SELECT * FROM (SELECT courriel, ce_utilisateur, COUNT(DISTINCT id_vote) AS nombre FROM del_commentaire_vote, del_utilisateur where";
$requete = "SELECT * FROM (SELECT courriel, ce_utilisateur, COUNT(DISTINCT id_vote) AS nombre FROM del_commentaire_vote, del_utilisateur_infos where";
if ($this->annee != null) {
$requete .= " year(date) = " . $this->annee . " AND";
}