Location: PHPKode > projects > WebJaxe > php/include/utilisateurs.php
<?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);
    }
}

?>
Return current item: WebJaxe