sid/manager/database.php

200 lines
6.5 KiB
PHP
Raw Normal View History

2015-10-22 12:06:49 +00:00
<?php
class DataBase{
/* ATTRIBUTS */
private $host;
private $dbname;
private $username;
private $password;
private $pdo;
2015-10-22 12:06:49 +00:00
public function __construct($host, $dbname, $username, $password){
$this->host = $host;
$this->dbname = $dbname;
$this->username = $username;
$this->password = $password;
// password: Qt358nUdyeTxLDM8
$this->pdo = new PDO('mysql:host='.$host.';dbname='.$dbname, $username, $password);
2015-10-22 12:06:49 +00:00
}
/*********************************************/
/*** création d'un utilisateur dans la bdd ***/
/*********************************************/
public function creerUtilisateur($username, $prenom, $nom, $email, $password, $droits){
$getLastId = $this->pdo->query('SELECT max(`id_utilisateur`) as `id` FROM `utilisateurs`');
$lastId = (int) $getLastId->fetch()['id'];
// on applique une normalisation
$prenom = ucwords( strtolower($prenom) ); // majuscule à chaque mot sinon minuscule
$nom = strtoupper($nom); // nom en majuscules
$email = strtolower($email); // email en minuscules
$password = sha1($password); // on hash le password
$req = $this->pdo->prepare("INSERT INTO `utilisateurs`(`id_utilisateur`, `pseudo`, `prenom`, `nom`, `email`, `password`, `droits`) VALUES(default, :pseudo, :prenom, :nom, :email, :password, :droits)");
$req->execute(array(
':pseudo' => mysql_escape_string($username),
':prenom' => mysql_escape_string($prenom ),
':nom' => mysql_escape_string($nom ),
':email' => mysql_escape_string($email ),
':password' => mysql_escape_string($password),
':droits' => mysql_escape_string($droits )
));
$added = (int) $this->pdo->lastInsertId();
if( $added > $lastId ) // si on a bien ajouté un entrée
return 'success';
else
return 'error';
}
/****************************************/
/*** création d'un groupe dans la bdd ***/
/****************************************/
public function creerGroupe($nom){
$getLastId = $this->pdo->query('SELECT max(`id_groupe`) as `id` FROM `groupes`');
$lastId = (int) $getLastId->fetch()['id'];
// on applique une normalisation
$nom = strtoupper($nom); // nom en majuscules
$req = $this->pdo->prepare("INSERT INTO `groupes`(`id_groupe`, `nom`) VALUES(default, :nom)");
$req->execute(array(
':nom' => mysql_escape_string($nom)
));
// echo var_dump( $this->pdo->errorInfo() ).'<br>';
$added = (int) $this->pdo->lastInsertId();
if( $added > $lastId ) // si on a bien ajouté un entrée
return 'success';
else
return 'error';
}
/******************************************************/
/*** ajout d'un utilisateur à un groupe dans la bdd ***/
/******************************************************/
public function ajouterUtilisateurGroupe($utilisateur, $groupe){
// on cherche un utilisateur avec ce pseudo
$getUtilisateurUID = $this->pdo->prepare("SELECT `id_utilisateur` FROM `utilisateurs` WHERE `pseudo` = :username");
$getUtilisateurUID->execute(array(
':username' => $utilisateur
));
// si on trouve, on le définit, sinon on retourne "unknown_user"
if( $utilisateurUID = $getUtilisateurUID->fetch()['id_utilisateur'] )
$utilisateurUID = (int) $utilisateurUID;
else
return 'unknown_user';
// on cherche un groupe avec ce nom
$getGroupeUID = $this->pdo->prepare("SELECT `id_groupe` FROM `groupes` WHERE `nom` = :nom");
$getGroupeUID->execute(array(
':nom' => $groupe
));
// si on trouve, on le définit, sinon on retourne "unknown_group"
if( $groupeUID = $getGroupeUID->fetch()['id_groupe'] )
$groupeUID = (int) $groupeUID;
else
return 'unknown_group';
// si on a l'UID utilisateur & l'UID groupe => on créé l'association
$asso = $this->pdo->prepare("INSERT INTO `association_utilisateur_groupe`(`id_utilisateur`, `id_groupe`) VALUES( (SELECT `id_utilisateur` FROM `utilisateurs` WHERE `id_utilisateur` = :utilisateur), (SELECT `id_groupe` FROM `groupes` WHERE `id_groupe` = :groupe) )");
$asso->execute(array(
':utilisateur' => $utilisateurUID,
':groupe' => $groupeUID
));
return 'success';
}
/******************************************************/
/*** retourne la liste des utilisateurs d'un groupe ***/
/******************************************************/
public function listeUtilisateurGroupe($groupe){
// on cherche un groupe avec ce nom
$getGroupeUID = $this->pdo->prepare("SELECT `id_groupe` FROM `groupes` WHERE `nom` = :nom");
$getGroupeUID->execute(array(
':nom' => $groupe
));
// si on trouve pas le groupe, on retourne "unknown_group"
if( !($groupeUID = $getGroupeUID->fetch()['id_groupe']) )
return 'unknown_group';
// si le groupe existe => on créé récupère ses utilisateurs
$asso = $this->pdo->prepare("SELECT `u`.`pseudo`, `u`.`prenom`, `u`.`nom`, `u`.`email`, `u`.`droits` ".
"FROM `utilisateurs` as `u`, `groupes` as `g`, `association_utilisateur_groupe` as `asso` ".
"WHERE `u`.`id_utilisateur` = `asso`.`id_utilisateur` ".
"AND `g`.`id_groupe` = `asso`.`id_groupe` ".
"AND `g`.`nom` = :groupe ".
"ORDER BY `u`.`pseudo` ");
$asso->execute(array(
':groupe' => $groupe
));
$userlist = $asso->fetchAll();
// on supprime les doublons des entrées (indice numérique)
for( $j = 0 ; $j < count($userlist) ; $j++ ) // pour tout les utilisateurs
foreach($userlist[$j] as $col => $val) // pour toutes les entrées
if( is_int($col) ) // si l'indice est un entier
unset( $userlist[$j][$col] ); // on le supprime
return $userlist; // on retourne le liste d'utilisateurs
}
/******************************************************/
/*** retourne la liste des utilisateurs des groupes ***/
/******************************************************/
public function listeEtudiantsTousGroupes(){
$grouplist = array(); // contiendra tout les groupes
// on cherche tout les groupes
$getGroupesUID = $this->pdo->query("SELECT `id_groupe`, `nom` FROM `groupes` ORDER BY `nom`");
// on parcourt tous les groupes
while( $groupeUID = $getGroupesUID->fetch() ){
$groupe = new stdClass();
$groupe->nom = $groupeUID['nom']; // attribut "nom" ajouté au groupe
$groupe->userlist = $this->listeUtilisateurGroupe($groupe->nom); // on charge la liste des utilisateurs de ce groupe
array_push($grouplist, $groupe); // on l'ajoute au résultat
}
return $grouplist; // sinon on retourne le tableau
}
2015-10-22 12:06:49 +00:00
}
$db = new DataBase("localhost", "sid", "php", "Qt358nUdyeTxLDM8");
2015-10-22 12:06:49 +00:00
?>