2015-10-22 12:06:49 +00:00
< ? php
class DataBase {
/* ATTRIBUTS */
private $host ;
private $dbname ;
private $username ;
private $password ;
2015-10-22 16:55:26 +00:00
private $pdo ;
2015-10-22 12:06:49 +00:00
public function __construct ( $host , $dbname , $username , $password ){
2015-10-22 16:55:26 +00:00
$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
}
2015-10-22 16:55:26 +00:00
/*********************************************/
/*** création d'un utilisateur dans la bdd ***/
/*********************************************/
2015-10-22 19:19:52 +00:00
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' ];
2015-10-22 16:55:26 +00:00
// 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 )
));
2015-10-22 19:19:52 +00:00
$added = ( int ) $this -> pdo -> lastInsertId ();
2015-10-22 16:55:26 +00:00
2015-10-22 19:19:52 +00:00
if ( $added > $lastId ) // si on a bien ajouté un entrée
2015-10-22 16:55:26 +00:00
return 'success' ;
else
return 'error' ;
}
/****************************************/
/*** création d'un groupe dans la bdd ***/
/****************************************/
2015-10-22 19:19:52 +00:00
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' ;
2015-10-22 16:55:26 +00:00
2015-10-22 19:19:52 +00:00
// 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 ){
2015-10-23 08:04:26 +00:00
2015-10-22 19:19:52 +00:00
// 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
));
2015-10-23 08:56:22 +00:00
2015-10-22 19:19:52 +00:00
$userlist = $asso -> fetchAll ();
2015-10-23 08:56:22 +00:00
// 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
2015-10-23 08:04:26 +00:00
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 19:19:52 +00:00
}
2015-10-22 16:55:26 +00:00
2015-10-22 12:06:49 +00:00
}
2015-10-22 16:55:26 +00:00
$db = new DataBase ( " localhost " , " sid " , " php " , " Qt358nUdyeTxLDM8 " );
2015-10-22 12:06:49 +00:00
?>