Location: PHPKode > projects > WebJaxe > php/include/projets.php
<?php
// WebJaxe, Observatoire de Paris, licence GPL
// encodage : UTF-8

//--------------------------------------------------------------------------------------------------------------------------------------------
//----------------------------------------------------- requetes SQL -------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------

// Sélectionne un ou tous les projets
function requete_lire_projets($id_projet=false)
{
    $requete = "SELECT * FROM projets";
    if ($id_projet != false)
        $requete .= " WHERE id='$id_projet'";
    $requete .= " ORDER BY titre";
    $resultat = executer_requete($requete);
    return($resultat);
}

// Créer une nouvelle ligne de la table des projets
function requete_creer_projet($titre_projet, $lien_bdd)
{
    $requete = "INSERT INTO projets (titre) VALUES ('$titre_projet')";
    $resultat = executer_requete($requete, $lien_bdd);
    return($resultat);
}

// Supprime la ligne de la table projets avec l'id donné
function requete_supprimer_projet($id)
{
    $requete = "DELETE FROM projets WHERE id = '$id'";
    $resultat = executer_requete( $requete);
    return($resultat);
}

function requete_ajouter_participant($id_projet, $id_utilisateur) {
    $requete = "INSERT INTO participants (id_utilisateur,id_projet) VALUES ('$id_utilisateur','$id_projet')";
    $resultat = executer_requete($requete);
    return($resultat);
}

function requete_supprimer_participants($id_projet, $id_utilisateur=false)
{
    if ($id_projet!=false && $id_utilisateur==false)
    {
        $requete = "DELETE FROM participants WHERE participants.id_projet = '$id_projet'";
    }
    else if ($id_projet!=false && $id_utilisateur!=false)
    {
        $requete = "DELETE FROM participants WHERE id_projet='$id_projet' AND id_utilisateur='$id_utilisateur'";
    }
    else if ($id_projet==false && $id_utilisateur!=false)
    {
        $requete ="DELETE FROM participants WHERE id_utilisateur = '$id_utilisateur'";
    }
    $resultat = executer_requete($requete);
    return($resultat);
}

// renvoie utilisateurs.* correspondants au projet et éventuellement à l'utilisateur
function requete_lire_participants($id_projet, $id_utilisateur=false)
{
    if ($id_projet != false && $id_utilisateur == false)
        $requete ="SELECT utilisateurs.* FROM participants, utilisateurs WHERE participants.id_projet='$id_projet' AND utilisateurs.id=participants.id_utilisateur";
    else if ($id_projet != false && $id_utilisateur != false)
        $requete ="SELECT utilisateurs.* FROM participants, utilisateurs WHERE participants.id_projet='$id_projet' AND participants.id_utilisateur='$id_utilisateur' AND utilisateurs.id=participants.id_utilisateur";
    
    $resultat = executer_requete($requete);
    return($resultat);
}

// Requête renvoyant tous les champs des projets correspondant à un utilisateur dont on donne l'id
function requete_projets_utilisateur($id_utilisateur)
{
    $requete = "SELECT projets.* FROM participants, projets WHERE participants.id_utilisateur='$id_utilisateur' AND projets.id=participants.id_projet ORDER BY titre";
    $resultat = executer_requete($requete);
    return($resultat);
}

// Requête renvoyant tous les champs des contributions correspondant à un projet dont on donne l'id
function requete_contributions_projet($id_projet)
{
    $requete = "SELECT * FROM contributions WHERE id_projet='$id_projet' ORDER BY nom";
    $resultat = executer_requete($requete);
    return($resultat);
}

function requete_modifier_projet($id_projet, $titre)
{
    if ($id_projet == false || $titre == false)
        return(false);
    $requete = "UPDATE projets SET titre=\"$titre\" WHERE id='$id_projet' ";
    $resultat = executer_requete($requete);
    return($resultat);
}


//--------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------- fonctions -----------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------

// Renvoie un tableau de tous les projets, avec un tableau des champs pour chaque projet,
// ou FALSE s'il n'y a pas de projet
function liste_des_projets()
{
   $resultat_requete = requete_lire_projets();
    if (!tester_resultat($resultat_requete))
        erreur(ECHEC_LISTE_PROJETS);
    $liste = lire_le_resultat($resultat_requete);
    return($liste);
}

// Crée un nouveau projet à partir de son titre
// renvoie l'id du nouveau projet
function creer_projet($titre_projet)
{
    $lien_bdd = connexion();
    verifie_titre_projet($titre_projet);
    $resultat_requete = requete_creer_projet($titre_projet, $lien_bdd);
    if (!tester_resultat($resultat_requete))
        erreur(ECHEC_CREATION_PROJET);
    $id = dernier_id($lien_bdd);
    deconnecte_base($lien_bdd);
    return($id);
}

// Supprime le projet avec l'id en paramètre
// (en supposant qu'aucune contribution n'est liée)
function supprimer_projet($id)
{
    $resultat_requete = requete_supprimer_participants($id);
    if (!tester_resultat($resultat_requete))
        erreur(ECHEC_SUPPRESSION_PROJET);
    $resultat_requete = requete_supprimer_projet($id);
    if (!tester_resultat($resultat_requete))
        erreur(ECHEC_SUPPRESSION_PROJET);
    return(true);
}

// retourne un tableau avec les champs du projet
function projet($id_projet)
{
    $resultat_requete = requete_lire_projets($id_projet);
    if (!tester_resultat($resultat_requete))
        erreur(PROJET_EXISTE_PAS);
    $projet = lire_premier_resultat($resultat_requete) ;
    return($projet);
}

// paramètre : un numero id de projet
// sortie : une chaine de caracteres avec le titre du projet
function titre_projet($id_projet)
{
    $resultat_requete = requete_lire_projets($id_projet);
    if (!tester_resultat($resultat_requete))
        erreur(PROJET_EXISTE_PAS);
    $titre = lire_premier_resultat($resultat_requete, 'titre') ;
    return($titre);
}

// liste des participants à un projet
// paramètres : id du projet
// sortie : liste des tuples de la table utilisateur des utilisateurs concernés par le projet
function liste_participants($id_projet)
{
    $resultat_requete = requete_lire_participants($id_projet, false);
    if (!tester_resultat($resultat_requete))
        erreur(ECHEC_REQUETE);
    $liste = lire_le_resultat($resultat_requete);
    return($liste);
}

// ajouter un participant à un projet
// paramètres : une numero id de projet, un numero id d'utilisateur
// sortie : la valeur booléenne true en cas de réussite de l'operation
function ajouter_participant($id_projet, $id_utilisateur)
{
    // l'utilisateur est-il déjà associé à ce projet ?
    if (est_participant($id_projet, $id_utilisateur))
        erreur(CONTRIBUTEUR_EXISTANT);
    
    // ajout du lien
    $resultat_requete = requete_ajouter_participant($id_projet, $id_utilisateur);
    if (!tester_resultat($resultat_requete))
        erreur(ECHEC_REQUETE);
    
    return(true);
}

// supprime un participant
// paramètres : un id de projet et un id d'utilisateur
// sortie : la valeur booléenne true en cas de réussite
function supprimer_participant($id_projet, $id_utilisateur)
{
    $resultat_requete = requete_supprimer_participants($id_projet, $id_utilisateur);
    if (!tester_resultat($resultat_requete))
        erreur(ECHEC_REQUETE);
    return(true);
}

// liste des id des projets
// sortie : un tableau avec la liste des id des projets, ou FALSE s'il n'y en a pas
function liste_id_projets()
{
    $resultat_requete = requete_lire_projets();
    if (!tester_resultat($resultat_requete))
        erreur(REQUETE_LISTE_CONTRIBUTION);
    $liste = lire_le_resultat($resultat_requete, 'id');
    return($liste);
}

// liste des projets pour un utilisateur dont on donne l'id
// sortie : retourne un tableau aves la liste des projets de l'utilisateur, ou FALSE s'il n'y en a pas
function liste_des_projets_utilisateur($id_utilisateur)
{
    $resultat_requete = requete_projets_utilisateur($id_utilisateur);
    if (!tester_resultat($resultat_requete)) 
        erreur(ECHEC_REQUETE);
    $liste = lire_le_resultat($resultat_requete);
    return($liste);
}

// liste des contributions pour un projet dont on donne l'id
// sortie : retourne un tableau aves la liste des contributions, ou FALSE s'il n'y en a pas
function liste_des_contributions_projet($id_projet)
{
    $resultat_requete = requete_contributions_projet($id_projet);
    if (!tester_resultat($resultat_requete)) 
        erreur(ECHEC_REQUETE);
    $liste = lire_le_resultat($resultat_requete);
    return($liste);
}

// liste des id des contributions pour un projet dont on donne l'id
// sortie : retourne un tableau aves la liste des id des contributions, ou FALSE s'il n'y en a pas
function liste_id_contributions_projet($id_projet)
{
    $resultat_requete = requete_contributions_projet($id_projet);
    if (!tester_resultat($resultat_requete)) 
        erreur(ECHEC_REQUETE);
    $liste = lire_le_resultat($resultat_requete, 'id');
    return($liste);
}

// renvoie true si l'utilisateur participe au projet
function est_participant($id_projet, $id_utilisateur) {
    $resultat_requete = requete_lire_participants($id_projet, $id_utilisateur);
    if (!tester_resultat($resultat_requete)) 
        erreur(ECHEC_REQUETE);
    if ( nombre_de_lignes($resultat_requete) > 0 )
        return(true);
    return(false);
}

// permet de changer le titre d'un projet
function modifier_projet($id_projet, $titre) {
    verifie_titre_projet($titre);
    $resultat_requete = requete_modifier_projet($id_projet, $titre);
    if (!tester_resultat($resultat_requete))
        erreur(ECHEC_REQUETE);
    return(true);
}

?>
Return current item: WebJaxe