<?php
// WebJaxe, Observatoire de Paris, licence GPL
// encodage : UTF-8
//--------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------- requetes SQL utilisateurs -------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------
// Effectue une requête sur la table des utilisateurs
// Sélectionne les utilisateurs avec les champs id, login et motdepasse donnés en paramètres
// (sélectionne tous les utilisateurs si aucune valeur de champ n'est donnée)
function requete_lire_utilisateurs($id_utilisateur=false, $login_utilisateur=false, $motdepasse=false)
{
$requete = "SELECT * FROM utilisateurs";
if ($id_utilisateur!=false || $login_utilisateur!=false || $motdepasse!=false)
$requete .= " WHERE ";
if ($id_utilisateur!=false)
$requete .= "id='$id_utilisateur'";
if ($login_utilisateur!=false) {
if ($id_utilisateur!=false)
$requete .= " AND ";
$requete .= "login='$login_utilisateur'";
}
if ($motdepasse!=false) {
if ($id_utilisateur!=false || $motdepasse!=false)
$requete .= " AND ";
$requete .= "motdepasse='$motdepasse'";
}
$requete .= " ORDER BY nom";
$resultat = executer_requete($requete);
return($resultat);
}
function requete_ajouter_utilisateur($prenom, $nom, $login, $status, $motdepasse)
{
if ($prenom!=false && $nom!=false && $login!=false && $motdepasse!=false && $status!=false)
{
$requete = "INSERT INTO utilisateurs VALUES (\"\",'$prenom','$nom','$login','$status','$motdepasse')";
$resultat = executer_requete($requete);
return($resultat);
}
return(false);
}
function requete_modifier_utilisateur($prenom, $nom, $login, $status, $motdepasse, $id)
{
if ($prenom!=false && $nom!=false && $login!=false && $status!=false && $motdepasse!=false && $id!=false)
{
$requete = "UPDATE utilisateurs SET login='$login', prenom='$prenom', nom='$nom', motdepasse='$motdepasse', status='$status' WHERE id='$id' ";
}
$resultat = executer_requete($requete);
return($resultat);
}
function requete_supprimer_utilisateur($id_utilisateur)
{
if ($id_utilisateur!=false)
{
$requete = "DELETE FROM utilisateurs WHERE utilisateurs.id= '$id_utilisateur'";
}
$resultat = executer_requete($requete);
return($resultat);
}
//---------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------- requetes SQL demandes inscription ------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------
function requete_lire_inscription($id_demande=false, $login=false)
{
$requete = "SELECT * FROM demandes_inscription";
if ($id_demande!=false || $login!=false)
$requete .= " WHERE ";
if ($id_demande!=false)
$requete .= "id = '$id_demande'";
if ($login!=false) {
if ($id_demande!=false)
$requete .= " AND ";
$requete .= "login = '$login'";
}
$resultat = executer_requete($requete);
return($resultat);
}
function requete_ecrire_inscription($prenom, $nom, $login, $status, $motdepasse)
{
if ($prenom!=false && $nom!=false && $login!=false && $status!=false && $motdepasse!=false)
{
$requete = "INSERT INTO demandes_inscription VALUES (\"\",\"$prenom\",\"$nom\",\"$login\",\"$status\",\"$motdepasse\")";
}
$resultat = executer_requete($requete);
return($resultat);
}
function requete_supprimer_inscription($id)
{
$requete = "DELETE FROM demandes_inscription WHERE id = '$id'";
$resultat = executer_requete( $requete);
return($resultat);
}
//--------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------- requetes SQL contributeurs ------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------
function requete_lire_contributeurs($id_utilisateur, $id_contribution, $label_contrib=false)
{
if ($id_contribution!=false && $id_utilisateur==false && $label_contrib==false)
{
$requete ="SELECT utilisateurs.* FROM contributions,projets,participants,utilisateurs WHERE utilisateurs.id=participants.id_utilisateur AND projets.id=participants.id_projet AND contributions.id_projet=projets.id AND contributions.id='$id_contribution' ";
}
else if ($id_contribution!=false && $id_utilisateur!=false && $label_contrib==false)
{
$requete ="SELECT utilisateurs.* FROM contributions,projets,participants,utilisateurs WHERE utilisateurs.id='$id_utilisateur' AND utilisateurs.id=participants.id_utilisateur AND projets.id=participants.id_projet AND contributions.id_projet=projets.id AND contributions.id='$id_contribution'";
}
else if ($id_contribution==false && $id_utilisateur!=false && $label_contrib!=false)
{
$requete ="SELECT utilisateurs.* FROM contributions,projets,participants,utilisateurs WHERE utilisateurs.id='$id_utilisateur' AND utilisateurs.id=participants.id_utilisateur AND projets.id=participants.id_projet AND contributions.id_projet=projets.id AND contributions.nom='$label_contrib'";
}
else
erreur("requete_lire_contributeurs($id_utilisateur $id_contribution $label_contrib)");
$resultat = executer_requete($requete);
return($resultat);
}
//-------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------- fonctions ----------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------------------
// retourne un tableau avec les champs de l'utilisateur
function utilisateur($id)
{
$resultat_lire_utilisateurs = requete_lire_utilisateurs($id);
if ( tester_resultat($resultat_lire_utilisateurs) == FALSE )
erreur(ECHEC_DONNEES_UTILISATEURS);
$utilisateur = lire_premier_resultat($resultat_lire_utilisateurs);
return($utilisateur);
}
// retourne un tableau avec les champs de la demande d'inscription
function demande($id)
{
$resultat_lire_inscription = requete_lire_inscription($id);
if ( tester_resultat($resultat_lire_inscription) == FALSE )
erreur(ECHEC_DONNEES_POSTULANT_UTILISATEURS);
$utilisateur = lire_premier_resultat($resultat_lire_inscription);
return($utilisateur);
}
// supprimer les liens avec les projets d'un utilisateur
// paramètre : un numero id de l'utilisateur
// sortie : la veleur booléenne true en cas de réussite
function supprimer_participations($id_utilisateur)
{
$resultat_requete = requete_supprimer_participants(false, $id_utilisateur);
if (!tester_resultat($resultat_requete))
erreur(ECHEC_REQUETE.' supprimer_participations '.$id_utilisateur);
return(true);
}
// Supprime l'utilisateur avec l'id en paramètre
// (tables modifiées : utilisateurs, participants)
function suprimer_utilisateur($id)
{
supprimer_participations($id);
$utilisateur = utilisateur($id);
$resultat_suppression = requete_supprimer_utilisateur($id);
if ( tester_resultat($resultat_suppression) == FALSE )
erreur(ECHEC_SUPRIMER_UTILISATEUR);
return(true);
}
// Renvoie un tableau de tous les utilisateurs, avec un tableau des champs pour chaque utilisateur,
// ou FALSE s'il n'y a pas d'utilisateur
function liste_des_utilisateurs()
{
// Pour les utilisateurs déjà inscrits
$resultat_requete = requete_lire_utilisateurs();
if ( tester_resultat($resultat_requete) == FALSE )
erreur(ECHEC_LISTE_UTILISATEUR);
$liste = lire_le_resultat($resultat_requete);
return($liste);
}
// Renvoie un tableau des demandes d'inscription, avec un tableau des champs pour chaque demande,
// ou FALSE s'il n'y a pas de demande d'inscription.
function liste_des_demandes()
{
// Pour les utilsiateurs en attente de validation
$resultat_liste_des_demandes = requete_lire_inscription();
if ( tester_resultat($resultat_liste_des_demandes) == FALSE )
erreur(ECHEC_LISTE_DEMANDES);
$liste_des_demandes = lire_le_resultat($resultat_liste_des_demandes);
return $liste_des_demandes;
}
function valider_utilisateur($id)
{
// On recupère les données de l'utilisateur
$utilisateur = demande($id);
$login = $utilisateur['login'];
$prenom = $utilisateur['prenom'];
$nom = $utilisateur['nom'];
$motdepasse = $utilisateur['motdepasse'];
$status = $utilisateur['status'];
// On vérifie si l'utilisateur n'existe pas déjÃ
$resultat_lire_utilisateur = requete_lire_utilisateurs(false, $login);
if ( tester_resultat($resultat_lire_utilisateur) == FALSE )
erreur(ECHEC_UTILISATEUR_EXISTANT);
if ( nombre_de_lignes($resultat_lire_utilisateur) != 0 )
{
erreur(UTILISATEUR_EXISTANT);
}
else
{
// Création de l'utilisateur
$resultat_creer_utlisateur = requete_ajouter_utilisateur($prenom, $nom, $login, $status, $motdepasse);
// A-t-on réussi à créer un utilisateur?
if ( ! tester_resultat($resultat_creer_utlisateur) )
erreur(ECHEC_CREATION_UTILISATEUR);
// On retire l'utilisateur de la liste des utilisateurs en attente d'inscription
$resultat_suppression_inscription = requete_supprimer_inscription($id);
if ( ! tester_resultat($resultat_suppression_inscription) )
erreur(ECHEC_SUPPRESSION_UTILISATEUR);
return(true);
}
}
function modifie_utilisateur($id, $login, $nom, $prenom, $motdepasse, $status)
{
// Si les variables sont vides, on ne fait rien
if ( $login == '' || $motdepasse == '' || $prenom == '' || $nom == '' || $status == '')
erreur(VARIABLES_VIDES);
$resultat_modification_utilisateur = requete_modifier_utilisateur($prenom, $nom, $login, $status, $motdepasse, $id);
if ( tester_resultat($resultat_modification_utilisateur) == FALSE )
erreur(ERREUR_MODIF_UTILISATEUR);
else
return(true);
}
function refuser_utilisateur($id)
{
$resultat_suppression = requete_supprimer_inscription($id);
if ( tester_resultat($resultat_suppression) == FALSE )
erreur(ERREUR_REFUS);
else
return(true);
}
//paramètres : une chaine de caractère login, une chaine de caractere passwd
//sortie : tableau des champs de l'utilisateur correspondant, ou la valeur booléenne false
function se_loguer($login, $passwd)
{
// On recupère le login et le mot de passe depuis le formulaire et on effectue la requête
// pour trouver l'utilisateur correspondant
$resultat_lire_utilisateurs = requete_lire_utilisateurs(false, $login, $passwd);
if ( tester_resultat($resultat_lire_utilisateurs) == FALSE )
erreur(ECHEC_LISTE_UTILISATEUR);
return lire_premier_resultat($resultat_lire_utilisateurs);
}
// vérifie qu'un utilisateur a le droit d'éditer une contribution
// sortie : true si autorisé, false sinon
function verifier_l_utilisateur($id_utilisateur, $id_contribution=false, $label_contrib=false)
{
if ( isset($_SESSION['id_utilisateur']) == FALSE )
erreur(PAS_AUTORISE);
$id_utilisateur = $_SESSION['id_utilisateur'];
if ($id_contribution != false)
{
$resultat_lire_contributeurs = requete_lire_contributeurs($id_utilisateur, $id_contribution, false);
if (nombre_de_lignes($resultat_lire_contributeurs) == 0)
erreur(PAS_AUTORISE);
else
return(true);
}
else if ($label_contrib != false)
{
$resultat_lire_contributeurs = requete_lire_contributeurs($id_utilisateur, false, $label_contrib);
if (nombre_de_lignes($resultat_lire_contributeurs) == 0)
erreur(PAS_AUTORISE);
else
return(true);
}
else
{
return(true);
}
}
function creation_compte_temporaire($prenom, $nom, $login, $status, $motdepasse)
{
lire_fichier_configuration("../site_config/site_config.xml");
$resultat_lire_utilisateurs = requete_lire_utilisateurs(false, $login);
if ( tester_resultat($resultat_lire_utilisateurs) == FALSE )
erreur(ECHEC_REQUETE);
$resultat_lire_inscriptions = requete_lire_inscription(false, $_POST['login']);
if ( tester_resultat($resultat_lire_inscriptions) == FALSE )
erreur(ECHEC_REQUETE);
if ( nombre_de_lignes($resultat_lire_utilisateurs) != 0 || nombre_de_lignes($resultat_lire_inscriptions) != 0 )
{
erreur(ERREUR_LOGIN_EXISTANT);
}
else
{
// Création de l'utilisateur
$resultat_ecrire_inscription = requete_ecrire_inscription($prenom, $nom, $login, $status, $motdepasse);
// A-t-on réussi à créer un utilisateur?
return tester_resultat($resultat_ecrire_inscription);
}
}
?>