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