2015-10-28 17:08:12 +00:00
< ? php require_once __ROOT__ . '/manager/security.php' ;
2015-10-22 12:06:49 +00:00
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
2015-10-24 08:57:16 +00:00
/* retourne une instance de la classe */
public static function getInstance (){
2015-11-03 11:09:14 +00:00
return new DataBase ( " localhost " , " sid2 " , " php " , " Qt358nUdyeTxLDM8 " );
2015-10-24 08:57:16 +00:00
}
2015-10-22 16:55:26 +00:00
/*********************************************/
/*** création d'un utilisateur dans la bdd ***/
/*********************************************/
2015-10-28 17:08:12 +00:00
public function creerUtilisateur ( $identifiant , $prenom , $nom , $mail , $mdp , $droits ){
$getLastCount = $this -> pdo -> query ( 'SELECT count(identifiant) as count FROM utilisateur' );
$lastCount = ( int ) $getLastCount -> fetch ()[ 'count' ];
2015-10-22 16:55:26 +00:00
// on applique une normalisation
2015-10-28 17:08:12 +00:00
$prenom = ucwords ( strtolower ( $prenom ) ); // majuscule à chaque mot sinon minuscule
$nom = strtoupper ( $nom ); // nom en majuscules
$mail = strtolower ( $mail ); // email en minuscules
$mdp = sha1 ( $mdp ); // on hash le password
2015-10-22 16:55:26 +00:00
2015-10-28 17:08:12 +00:00
$req = $this -> pdo -> prepare ( " INSERT INTO utilisateur(identifiant, prenom, nom, mail, mdp, droits) VALUES(:identifiant, :prenom, :nom, :mail, :mdp, :droits) " );
2015-10-22 16:55:26 +00:00
$req -> execute ( array (
2015-10-28 17:08:12 +00:00
':identifiant' => $identifiant ,
':prenom' => $prenom ,
':nom' => $nom ,
':mail' => $mail ,
':mdp' => $mdp ,
':droits' => $droits
2015-10-22 16:55:26 +00:00
));
2015-10-28 17:08:12 +00:00
$getNewCount = $this -> pdo -> query ( 'SELECT count(identifiant) as count FROM utilisateur' );
$newCount = ( int ) $getNewCount -> fetch ()[ 'count' ];
2015-10-22 16:55:26 +00:00
2015-10-28 17:08:12 +00:00
if ( $newCount > $lastCount ) // 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 ){
2015-10-28 17:08:12 +00:00
$getLastCount = $this -> pdo -> query ( 'SELECT count(id_groupe) as count FROM groupe' );
$lastCount = ( int ) $getLastCount -> fetch ()[ 'count' ];
2015-10-22 19:19:52 +00:00
// on applique une normalisation
$nom = strtoupper ( $nom ); // nom en majuscules
2015-10-28 17:08:12 +00:00
$req = $this -> pdo -> prepare ( " INSERT INTO groupe(id_groupe, nom) VALUES(default, :nom) " );
2015-10-22 19:19:52 +00:00
$req -> execute ( array (
2015-10-24 08:57:16 +00:00
':nom' => $nom
2015-10-22 19:19:52 +00:00
));
2015-10-28 17:08:12 +00:00
$getNewCount = $this -> pdo -> query ( 'SELECT count(id_groupe) as count FROM groupe' );
$newCount = ( int ) $getNewCount -> fetch ()[ 'count' ];
2015-10-22 19:19:52 +00:00
2015-10-28 17:08:12 +00:00
if ( $newCount > $lastCount ) // si on a bien ajouté un entrée
2015-10-22 19:19:52 +00:00
return 'success' ;
else
return 'error' ;
}
/******************************************************/
/*** ajout d'un utilisateur à un groupe dans la bdd ***/
/******************************************************/
2015-10-28 17:08:12 +00:00
public function ajouterEtudiantGroupe ( $etudiant , $groupe , $semestre , $annee ){
$getLastCount = $this -> pdo -> query ( 'SELECT count(id_etudiant) as count FROM appartenance' );
$lastCount = ( int ) $getLastCount -> fetch ()[ 'count' ];
2015-10-22 19:19:52 +00:00
2015-10-28 17:08:12 +00:00
/*** on cherche un utilisateur avec cet identifiant ***/
$getEtudiantUID = $this -> pdo -> prepare ( " SELECT identifiant as id FROM utilisateur WHERE identifiant = :etudiant " );
2015-10-24 09:06:56 +00:00
$getEtudiantUID -> execute ( array (
2015-10-28 17:08:12 +00:00
':etudiant' => $etudiant
2015-10-22 19:19:52 +00:00
));
// si on trouve, on le définit, sinon on retourne "unknown_user"
2015-10-28 17:08:12 +00:00
if ( $etudiantUID = $getEtudiantUID -> fetch ()[ 'id' ] )
$etudiantUID = $etudiantUID ;
2015-10-22 19:19:52 +00:00
else
return 'unknown_user' ;
2015-10-22 16:55:26 +00:00
2015-10-24 08:57:16 +00:00
2015-10-28 17:08:12 +00:00
/*** on cherche un groupe avec ce nom ***/
$getGroupeUID = $this -> pdo -> prepare ( " SELECT id_groupe as id FROM groupe WHERE nom = :nom " );
2015-10-22 19:19:52 +00:00
$getGroupeUID -> execute ( array (
':nom' => $groupe
));
// si on trouve, on le définit, sinon on retourne "unknown_group"
2015-10-28 17:08:12 +00:00
if ( $groupeUID = $getGroupeUID -> fetch ()[ 'id' ] )
2015-10-22 19:19:52 +00:00
$groupeUID = ( int ) $groupeUID ;
else
return 'unknown_group' ;
2015-10-24 08:57:16 +00:00
2015-10-28 17:08:12 +00:00
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
$getSemestreUID = $this -> pdo -> prepare ( " SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee " );
$getSemestreUID -> execute ( array (
':rang' => $semestre ,
':annee' => $annee
));
// si on trouve, on le définit, sinon on retourne "unknown_group"
if ( $semestreUID = $getSemestreUID -> fetch ()[ 'id' ] )
$semestreUID = ( int ) $semestreUID ;
else
return 'unknown_semestre' ;
2015-10-24 08:57:16 +00:00
2015-10-22 19:19:52 +00:00
// si on a l'UID utilisateur & l'UID groupe => on créé l'association
2015-10-28 17:08:12 +00:00
$asso = $this -> pdo -> prepare ( " INSERT INTO appartenance(id_etudiant, id_groupe, id_semestre) " .
" VALUES( " .
" (SELECT identifiant FROM utilisateur WHERE identifiant = :etudiantUID), " .
" (SELECT id_groupe FROM groupe WHERE id_groupe = :groupeUID), " .
" (SELECT id_semestre FROM semestre WHERE id_semestre = :semestreUID) " .
" ) " );
2015-10-22 19:19:52 +00:00
$asso -> execute ( array (
2015-10-28 17:08:12 +00:00
':etudiantUID' => $etudiantUID ,
':groupeUID' => $groupeUID ,
':semestreUID' => $semestreUID
2015-10-22 19:19:52 +00:00
));
2015-10-24 08:57:16 +00:00
2015-10-28 17:08:12 +00:00
$getNewCount = $this -> pdo -> query ( 'SELECT count(id_etudiant) as count FROM appartenance' );
$newCount = ( int ) $getNewCount -> fetch ()[ 'count' ];
2015-10-22 19:19:52 +00:00
2015-10-28 17:08:12 +00:00
if ( $newCount > $lastCount ) // si on a bien ajouté un entrée
return 'success' ;
else
return 'error' ;
2015-10-22 19:19:52 +00:00
}
/******************************************************/
/*** retourne la liste des utilisateurs d'un groupe ***/
/******************************************************/
2015-10-28 17:08:12 +00:00
public function listeEtudiantsGroupe ( $groupe , $semestre , $annee ){
2015-10-23 08:04:26 +00:00
2015-10-28 17:08:12 +00:00
/*** on cherche un groupe avec ce nom ***/
$getGroupeUID = $this -> pdo -> prepare ( " SELECT id_groupe as id FROM groupe WHERE nom = :nom " );
2015-10-22 19:19:52 +00:00
$getGroupeUID -> execute ( array (
':nom' => $groupe
));
2015-10-28 17:08:12 +00:00
// si on trouve, on le définit, sinon on retourne "unknown_group"
if ( $groupeUID = $getGroupeUID -> fetch ()[ 'id' ] )
$groupeUID = ( int ) $groupeUID ;
else
2015-10-22 19:19:52 +00:00
return 'unknown_group' ;
2015-10-28 17:08:12 +00:00
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
$getSemestreUID = $this -> pdo -> prepare ( " SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee " );
$getSemestreUID -> execute ( array (
':rang' => $semestre ,
':annee' => $annee
));
2015-10-22 19:19:52 +00:00
2015-10-28 17:08:12 +00:00
// si on trouve, on le définit, sinon on retourne "unknown_group"
if ( $semestreUID = $getSemestreUID -> fetch ()[ 'id' ] )
$semestreUID = ( int ) $semestreUID ;
else
return 'unknown_semestre' ;
// si le groupe existe => on récupère ses utilisateurs
2015-11-04 08:15:35 +00:00
$appartenance = $this -> pdo -> prepare ( " SELECT u.identifiant, u.prenom, u.nom, u.mail, u.droits, s.nom as semestre " .
2015-10-28 17:08:12 +00:00
" FROM utilisateur as u, groupe as g, semestre as s, appartenance as app " .
" WHERE u.identifiant = app.id_etudiant " .
" AND g.id_groupe = app.id_groupe " .
" AND s.id_semestre = app.id_semestre " . // à virer (peut-être)
" AND g.id_groupe = :groupeUID " .
" AND s.id_semestre = :semestreUID " .
" ORDER BY u.prenom, u.nom " );
$appartenance -> execute ( array (
':groupeUID' => $groupeUID ,
':semestreUID' => $semestreUID
2015-10-22 19:19:52 +00:00
));
2015-10-23 08:56:22 +00:00
2015-10-28 17:08:12 +00:00
$userlist = $appartenance -> fetchAll ();
2015-10-23 08:56:22 +00:00
// on supprime les doublons des entrées (indice numérique)
2015-10-28 17:08:12 +00:00
for ( $i = 0 ; $i < count ( $userlist ) ; $i ++ ) // pour tout les utilisateurs
foreach ( $userlist [ $i ] as $col => $val ) // pour toutes les entrées
2015-10-23 08:56:22 +00:00
if ( is_int ( $col ) ) // si l'indice est un entier
2015-10-28 17:08:12 +00:00
unset ( $userlist [ $i ][ $col ] ); // on le supprime
2015-10-23 08:56:22 +00:00
2015-10-23 08:04:26 +00:00
return $userlist ; // on retourne le liste d'utilisateurs
}
2015-11-04 08:15:35 +00:00
/********************************************************************/
/*** retourne la liste des utilisateurs des groupes d'un semestre ***/
/********************************************************************/
public function listeEtudiantsTousGroupesSemestre ( $semestre , $annee ){
2015-10-28 17:08:12 +00:00
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
$getSemestreUID = $this -> pdo -> prepare ( " SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee " );
$getSemestreUID -> execute ( array (
':rang' => $semestre ,
':annee' => $annee
));
// si on trouve, on le définit, sinon on retourne "unknown_group"
if ( $semestreUID = $getSemestreUID -> fetch ()[ 'id' ] )
$semestreUID = ( int ) $semestreUID ;
else
return 'unknown_semestre' ;
2015-10-23 08:04:26 +00:00
2015-10-28 17:08:12 +00:00
// on cherche tout les groupes du même semestre de la même année
2015-11-04 08:15:35 +00:00
$getGroupesUID = $this -> pdo -> prepare ( " SELECT DISTINCT g.nom, s.rang, s.nom as semestre " .
2015-10-28 17:08:12 +00:00
" FROM groupe as g, semestre as s, appartenance as app " .
" WHERE g.id_groupe = app.id_groupe " .
" AND s.id_semestre = app.id_semestre " .
" AND s.id_semestre = :semestreUID " .
" ORDER BY g.nom " );
$getGroupesUID -> execute ( array (
':semestreUID' => $semestreUID
));
2015-10-23 08:04:26 +00:00
2015-10-28 17:08:12 +00:00
$grouplist = array (); // contiendra tout les groupes
2015-10-23 08:04:26 +00:00
// on parcourt tous les groupes
while ( $groupeUID = $getGroupesUID -> fetch () ){
2015-10-28 17:08:12 +00:00
2015-10-23 08:04:26 +00:00
$groupe = new stdClass ();
$groupe -> nom = $groupeUID [ 'nom' ]; // attribut "nom" ajouté au groupe
2015-11-04 08:15:35 +00:00
$groupe -> semestre = $groupeUID [ 'semestre' ];
2015-10-23 08:04:26 +00:00
2015-10-28 17:08:12 +00:00
$groupe -> userlist = $this -> listeEtudiantsGroupe ( $groupe -> nom , $semestre , $annee ); // on charge la liste des utilisateurs de ce groupe
2015-10-23 08:04:26 +00:00
array_push ( $grouplist , $groupe ); // on l'ajoute au résultat
}
return $grouplist ; // sinon on retourne le tableau
2015-11-04 08:15:35 +00:00
}
/******************************************************************/
/*** retourne la liste des utilisateurs des groupes d'une année ***/
/******************************************************************/
2015-11-06 13:05:14 +00:00
public function listeEtudiantsTousGroupesAnnee ( $annee , $pSemestre , $pGroupe ){
// définition des paramètres optionnels
$semestreDeb = 1 ; $semestreFin = 4 ;
if ( $pSemestre != null ){ $semestreDeb = $pSemestre ; $semestreFin = $pSemestre ; } // semestre donné uniquement (si param non null)
$groupeOpt = '%' ;
if ( $pGroupe != null ){ $groupeOpt = $pGroupe ; } // si le groupe est donné, on le définit
2015-11-04 08:15:35 +00:00
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
$checkAnnee = $this -> pdo -> prepare ( " SELECT id_semestre as id FROM semestre WHERE annee = :annee " );
$checkAnnee -> execute ( array (
':annee' => $annee
));
// si on trouve pas, on retourne "unknown_year"
if ( ! ( $checkAnnee -> fetch ()[ 'id' ] ) )
return 'unknown_year' ;
// on cherche tout les groupes du même semestre de la même année
$getGroupesUID = $this -> pdo -> prepare ( " SELECT DISTINCT g.nom, s.rang, s.nom as semestre " .
" FROM groupe as g, semestre as s, appartenance as app " .
" WHERE g.id_groupe = app.id_groupe " .
" AND s.id_semestre = app.id_semestre " .
2015-11-06 13:05:14 +00:00
" AND g.nom LIKE ' " . $groupeOpt . " ' " .
" AND s.rang BETWEEN :semestreDeb AND :semestreFin " .
2015-11-04 08:15:35 +00:00
" AND s.annee = :annee " .
" ORDER BY g.nom " );
$getGroupesUID -> execute ( array (
2015-11-06 13:05:14 +00:00
':semestreDeb' => $semestreDeb ,
':semestreFin' => $semestreFin ,
2015-11-04 08:15:35 +00:00
':annee' => $annee
));
$grouplist = array (); // contiendra tout les groupes
// on parcourt tous les groupes
while ( $groupeUID = $getGroupesUID -> fetch () ){
$groupe = new stdClass ();
$groupe -> nom = $groupeUID [ 'nom' ]; // attribut "nom" ajouté au groupe
$groupe -> semestre = $groupeUID [ 'semestre' ];
$groupe -> userlist = $this -> listeEtudiantsGroupe ( $groupe -> nom , $groupeUID [ 'rang' ], $annee ); // 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
}
/******************************************************************/
/*** retourne la liste des utilisateurs des groupes d'une année ***/
/******************************************************************/
2015-11-06 13:05:14 +00:00
public function listeEtudiantsTousGroupesEnseignant ( $annee , $enseignant , $pSemestre , $pGroupe ){
// définition des paramètres optionnels
$semestreDeb = 1 ; $semestreFin = 4 ;
if ( $pSemestre != null ){ $semestreDeb = $pSemestre ; $semestreFin = $pSemestre ; } // semestre donné uniquement (si param non null)
$groupeOpt = '%' ;
if ( $pGroupe != null ){ $groupeOpt = $pGroupe ; } // si le groupe est donné, on le définit
2015-11-04 08:15:35 +00:00
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
$checkAnnee = $this -> pdo -> prepare ( " SELECT id_semestre as id FROM semestre WHERE annee = :annee " );
$checkAnnee -> execute ( array (
':annee' => $annee
));
// si on trouve pas, on retourne "unknown_year"
if ( ! ( $checkAnnee -> fetch ()[ 'id' ] ) )
return 'unknown_year' ;
/*** on cherche un utilisateur avec cet identifiant ***/
$getEnseignantUID = $this -> pdo -> prepare ( " SELECT identifiant as id FROM utilisateur WHERE identifiant = :enseignant " );
$getEnseignantUID -> execute ( array (
':enseignant' => $enseignant
));
// si on trouve, on le définit, sinon on retourne "unknown_user"
if ( $enseignantUID = $getEnseignantUID -> fetch ()[ 'id' ] )
$enseignantUID = $enseignantUID ;
else
return 'unknown_user' ;
// on cherche tout les groupes du même semestre de la même année
2015-11-06 10:13:32 +00:00
$getGroupesUID = $this -> pdo -> prepare ( " SELECT DISTINCT s.nom as semestre, s.rang, g.nom as nom " .
" FROM module as m, utilisateur as u, utilisateur as eleve, groupe as g, enseignement as ens, mcc_ue, mcc_module as mcc_m, semestre as s, appartenance as app " .
" WHERE mcc_ue.id_semestre = s.id_semestre " .
" AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue " .
" AND mcc_m.id_module = m.id_module " .
" AND mcc_m.id_mcc_module = ens.id_mcc_module " .
" AND ens.id_enseignant = u.identifiant " .
" AND app.id_etudiant = eleve.identifiant " .
" AND app.id_semestre = s.id_semestre " .
" AND app.id_groupe = g.id_groupe " .
2015-11-04 08:15:35 +00:00
2015-11-06 13:05:14 +00:00
" AND g.nom LIKE ' " . $groupeOpt . " ' " .
" AND s.rang BETWEEN :semestreDeb AND :semestreFin " .
2015-11-04 08:15:35 +00:00
" AND s.annee = :annee " .
2015-11-06 10:13:32 +00:00
" AND u.identifiant = :enseignantUID " .
" ORDER BY s.rang, g.nom " );
2015-11-04 08:15:35 +00:00
$getGroupesUID -> execute ( array (
2015-11-06 13:05:14 +00:00
// ':groupeOpt' => $groupeOpt,
':semestreDeb' => $semestreDeb ,
':semestreFin' => $semestreFin ,
2015-11-06 10:13:32 +00:00
':annee' => $annee ,
':enseignantUID' => $enseignantUID
2015-11-04 08:15:35 +00:00
));
$grouplist = array (); // contiendra tout les groupes
// on parcourt tous les groupes
while ( $groupeUID = $getGroupesUID -> fetch () ){
$groupe = new stdClass ();
$groupe -> nom = $groupeUID [ 'nom' ]; // attribut "nom" ajouté au groupe
$groupe -> semestre = $groupeUID [ 'semestre' ];
$groupe -> userlist = $this -> listeEtudiantsGroupe ( $groupe -> nom , $groupeUID [ 'rang' ], $annee ); // 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-25 16:55:18 +00:00
/***********************************************/
/*** retourne le nom du groupe d'un étudiant ***/
/***********************************************/
2015-10-28 17:08:12 +00:00
public function getGroupeEtudiant ( $etudiant , $semestre , $annee ){
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
$getSemestreUID = $this -> pdo -> prepare ( " SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee " );
$getSemestreUID -> execute ( array (
':rang' => $semestre ,
':annee' => $annee
));
// si on trouve, on le définit, sinon on retourne "unknown_group"
if ( $semestreUID = $getSemestreUID -> fetch ()[ 'id' ] )
$semestreUID = ( int ) $semestreUID ;
else
return 'unknown_semestre' ;
2015-10-25 16:55:18 +00:00
2015-11-03 20:59:16 +00:00
/*** on cherche un utilisateur avec cet identifiant ***/
$getEtudiantUID = $this -> pdo -> prepare ( " SELECT identifiant as id FROM utilisateur WHERE identifiant = :etudiant " );
$getEtudiantUID -> execute ( array (
':etudiant' => $etudiant
));
// si on trouve, on le définit, sinon on retourne "unknown_user"
if ( $etudiantUID = $getEtudiantUID -> fetch ()[ 'id' ] )
$etudiantUID = $etudiantUID ;
else
return 'unknown_user' ;
2015-10-25 16:55:18 +00:00
// on cherche le groupe associé
2015-10-28 17:08:12 +00:00
$getNomGroupe = $this -> pdo -> prepare ( " SELECT g.nom " .
" FROM utilisateur as u, groupe as g, appartenance as app " .
2015-11-03 22:31:41 +00:00
" WHERE app.id_etudiant = u.identifiant " .
2015-11-03 20:59:16 +00:00
" AND app.id_groupe = g.id_groupe " .
" AND u.identifiant = :etudiantUID " .
2015-11-03 22:31:41 +00:00
" AND app.id_semestre = :semestreUID " .
2015-10-28 17:08:12 +00:00
" ORDER BY g.nom " );
2015-10-25 16:55:18 +00:00
$getNomGroupe -> execute ( array (
2015-11-03 20:59:16 +00:00
':etudiantUID' => $etudiantUID ,
':semestreUID' => $semestreUID
2015-10-25 16:55:18 +00:00
));
// si on a un résultat
if ( $nomGroupe = $getNomGroupe -> fetch ()[ 'nom' ] )
return $nomGroupe ;
else
return 'error' ;
}
2015-11-03 22:20:54 +00:00
/**************************************************/
/*** retourne les modules d'un étudiant par UEs ***/
/**************************************************/
public function getModulesByUEByEtudiant ( $etudiant , $semestre , $annee ){
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
$getSemestreUID = $this -> pdo -> prepare ( " SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee " );
$getSemestreUID -> execute ( array (
':rang' => $semestre ,
':annee' => $annee
));
// si on trouve, on le définit, sinon on retourne "unknown_group"
if ( $semestreUID = $getSemestreUID -> fetch ()[ 'id' ] )
$semestreUID = ( int ) $semestreUID ;
else
return 'unknown_semestre' ;
/*** on cherche un utilisateur avec cet identifiant ***/
$getEtudiantUID = $this -> pdo -> prepare ( " SELECT identifiant as id FROM utilisateur WHERE identifiant = :etudiant " );
$getEtudiantUID -> execute ( array (
':etudiant' => $etudiant
));
// si on trouve, on le définit, sinon on retourne "unknown_user"
if ( $etudiantUID = $getEtudiantUID -> fetch ()[ 'id' ] )
$etudiantUID = $etudiantUID ;
else
return 'unknown_user' ;
/*** on cherche le groupe de cet utilisateur ***/
$getGroupeUID = $this -> pdo -> prepare ( " SELECT g.id_groupe as id " .
" FROM utilisateur as u, groupe as g, appartenance as app, semestre as s " .
" WHERE app.id_etudiant = u.identifiant " .
" AND app.id_groupe = g.id_groupe " .
" AND app.id_semestre = s.id_semestre " .
" AND u.identifiant = :etudiantUID " .
" AND app.id_semestre = :semestreUID " );
$getGroupeUID -> execute ( array (
':etudiantUID' => $etudiantUID ,
':semestreUID' => $semestreUID ,
));
// si on trouve, on le définit, sinon on retourne "unknown_user"
if ( $groupeUID = $getGroupeUID -> fetch ()[ 'id' ] )
$groupeUID = $groupeUID ;
else
return 'unknown_group' ;
$UEList = $this -> getUEsEtudiant ( $etudiant , $semestre , $annee ); // on récupère la liste des UEs
foreach ( $UEList as $iter => $UE ){
// si on a l'UID utilisateur & l'UID groupe => on récupère les modules
$getModuleList = $this -> pdo -> prepare ( " SELECT DISTINCT m.id_module as id, m.nom as nom, m.libelle as libelle " .
" FROM module as m, groupe as g, semestre as s, ue, appartenance as app, mcc_ue, mcc_module as mcc_m " .
" WHERE app.id_semestre = s.id_semestre " .
" AND app.id_groupe = g.id_groupe " .
" AND app.id_semestre = mcc_ue.id_semestre " .
" AND mcc_ue.id_ue = ue.id_ue " .
" AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue " .
" AND mcc_m.id_module = m.id_module " .
" AND g.id_groupe = :groupeUID " .
" AND s.id_semestre = :semestreUID " .
" AND ue.id_ue = :UEUID " .
" ORDER BY m.nom, m.libelle ASC " );
$getModuleList -> execute ( array (
':groupeUID' => $groupeUID ,
':semestreUID' => $semestreUID ,
':UEUID' => $UE [ 'id' ]
));
$modulelist = $getModuleList -> fetchAll (); // on récupère la liste des modules
// on supprime les doublons des entrées (indice numérique)
for ( $i = 0 ; $i < count ( $modulelist ) ; $i ++ ) // pour tout les modules
foreach ( $modulelist [ $i ] as $col => $val ) // pour toutes les entrées
if ( is_int ( $col ) ) // si l'indice est un entier
unset ( $modulelist [ $i ][ $col ] ); // on le supprime
$UEList [ $iter ][ 'modules' ] = $modulelist ; // on ajoute la liste des mdules
}
return $UEList ;
}
2015-10-25 16:55:18 +00:00
2015-10-28 17:08:12 +00:00
/******************************************/
/*** retourne les modules d'un étudiant ***/
/******************************************/
public function getModulesEtudiant ( $etudiant , $semestre , $annee ){
2015-11-03 20:59:16 +00:00
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
$getSemestreUID = $this -> pdo -> prepare ( " SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee " );
$getSemestreUID -> execute ( array (
':rang' => $semestre ,
':annee' => $annee
));
// si on trouve, on le définit, sinon on retourne "unknown_group"
if ( $semestreUID = $getSemestreUID -> fetch ()[ 'id' ] )
$semestreUID = ( int ) $semestreUID ;
else
return 'unknown_semestre' ;
2015-10-28 17:08:12 +00:00
/*** on cherche un utilisateur avec cet identifiant ***/
$getEtudiantUID = $this -> pdo -> prepare ( " SELECT identifiant as id FROM utilisateur WHERE identifiant = :etudiant " );
$getEtudiantUID -> execute ( array (
':etudiant' => $etudiant
));
// si on trouve, on le définit, sinon on retourne "unknown_user"
if ( $etudiantUID = $getEtudiantUID -> fetch ()[ 'id' ] )
$etudiantUID = $etudiantUID ;
else
return 'unknown_user' ;
/*** on cherche le groupe de cet utilisateur ***/
$getGroupeUID = $this -> pdo -> prepare ( " SELECT g.id_groupe as id " .
" FROM utilisateur as u, groupe as g, appartenance as app, semestre as s " .
" WHERE app.id_etudiant = u.identifiant " .
" AND app.id_groupe = g.id_groupe " .
2015-11-03 20:59:16 +00:00
" AND app.id_semestre = :semestreUID " .
2015-10-28 17:08:12 +00:00
2015-11-03 20:59:16 +00:00
" AND u.identifiant = :etudiantUID " );
2015-10-28 17:08:12 +00:00
$getGroupeUID -> execute ( array (
2015-11-03 20:59:16 +00:00
':etudiantUID' => $etudiantUID ,
':semestreUID' => $semestreUID
2015-10-28 17:08:12 +00:00
));
// si on trouve, on le définit, sinon on retourne "unknown_user"
if ( $groupeUID = $getGroupeUID -> fetch ()[ 'id' ] )
$groupeUID = $groupeUID ;
else
return 'unknown_group' ;
// si on a l'UID utilisateur & l'UID groupe => on récupère les modules
2015-10-29 23:01:35 +00:00
$getModuleList = $this -> pdo -> prepare ( " SELECT DISTINCT m.id_module as id, m.nom as nom, m.libelle as libelle " .
2015-11-03 20:59:16 +00:00
" FROM module as m, groupe as g, semestre as s, ue, appartenance as app, mcc_ue, mcc_module as mcc_m " .
" WHERE app.id_semestre = s.id_semestre " .
2015-10-28 17:08:12 +00:00
" AND app.id_groupe = g.id_groupe " .
2015-11-03 20:59:16 +00:00
" AND app.id_semestre = mcc_ue.id_semestre " .
" AND mcc_ue.id_ue = ue.id_ue " .
" AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue " .
" AND mcc_m.id_module = m.id_module " .
2015-10-28 17:08:12 +00:00
" AND g.id_groupe = :groupeUID " .
" AND s.rang = :semestre " .
" AND s.annee = :annee " .
" ORDER BY m.nom, m.libelle ASC " );
$getModuleList -> execute ( array (
':groupeUID' => $groupeUID ,
':semestre' => $semestre ,
':annee' => $annee
));
$modulelist = $getModuleList -> fetchAll (); // on récupère la liste des modules
// on supprime les doublons des entrées (indice numérique)
for ( $i = 0 ; $i < count ( $modulelist ) ; $i ++ ) // pour tout les modules
foreach ( $modulelist [ $i ] as $col => $val ) // pour toutes les entrées
if ( is_int ( $col ) ) // si l'indice est un entier
unset ( $modulelist [ $i ][ $col ] ); // on le supprime
return $modulelist ;
}
2015-10-29 23:01:35 +00:00
/**************************************/
/*** retourne les UEs d'un étudiant ***/
/**************************************/
public function getUEsEtudiant ( $etudiant , $semestre , $annee ){
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
$getSemestreUID = $this -> pdo -> prepare ( " SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee " );
$getSemestreUID -> execute ( array (
':rang' => $semestre ,
':annee' => $annee
));
// si on trouve, on le définit, sinon on retourne "unknown_group"
if ( $semestreUID = $getSemestreUID -> fetch ()[ 'id' ] )
$semestreUID = ( int ) $semestreUID ;
else
return 'unknown_semestre' ;
/*** on cherche un utilisateur avec cet identifiant ***/
$getEtudiantUID = $this -> pdo -> prepare ( " SELECT identifiant as id FROM utilisateur WHERE identifiant = :etudiant " );
$getEtudiantUID -> execute ( array (
':etudiant' => $etudiant
));
// si on trouve, on le définit, sinon on retourne "unknown_user"
if ( $etudiantUID = $getEtudiantUID -> fetch ()[ 'id' ] )
$etudiantUID = $etudiantUID ;
else
return 'unknown_user' ;
/*** on cherche le groupe de cet utilisateur ***/
$getGroupeUID = $this -> pdo -> prepare ( " SELECT g.id_groupe as id " .
" FROM utilisateur as u, groupe as g, appartenance as app, semestre as s " .
" WHERE app.id_etudiant = u.identifiant " .
" AND app.id_groupe = g.id_groupe " .
" AND app.id_semestre = s.id_semestre " .
" AND u.identifiant = :etudiantUID " .
" AND app.id_semestre = :semestreUID " );
$getGroupeUID -> execute ( array (
':etudiantUID' => $etudiantUID ,
':semestreUID' => $semestreUID ,
));
// si on trouve, on le définit, sinon on retourne "unknown_user"
if ( $groupeUID = $getGroupeUID -> fetch ()[ 'id' ] )
$groupeUID = $groupeUID ;
else
return 'unknown_group' ;
// si on a l'UID utilisateur & l'UID groupe => on récupère les modules
$getUEList = $this -> pdo -> prepare ( " SELECT DISTINCT ue.id_ue as id, s.annee as annee, ue.nom as nom, ue.libelle as libelle " .
2015-11-03 20:59:16 +00:00
" FROM module as m, groupe as g, semestre as s, ue, appartenance as app, mcc_ue, mcc_module as mcc_m " .
" WHERE app.id_semestre = s.id_semestre " .
2015-10-29 23:01:35 +00:00
" AND app.id_groupe = g.id_groupe " .
2015-11-03 20:59:16 +00:00
" AND app.id_semestre = mcc_ue.id_semestre " .
" AND mcc_ue.id_ue = ue.id_ue " .
" AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue " .
" AND mcc_m.id_module = m.id_module " .
2015-10-29 23:01:35 +00:00
" AND g.id_groupe = :groupeUID " .
" AND app.id_semestre = :semestreUID " .
" ORDER BY m.nom, m.libelle ASC " );
$getUEList -> execute ( array (
':groupeUID' => $groupeUID ,
':semestreUID' => $semestreUID
));
$UElist = $getUEList -> fetchAll (); // on récupère la liste des modules
// on supprime les doublons des entrées (indice numérique)
for ( $i = 0 ; $i < count ( $UElist ) ; $i ++ ) // pour tout les modules
foreach ( $UElist [ $i ] as $col => $val ) // pour toutes les entrées
if ( is_int ( $col ) ) // si l'indice est un entier
unset ( $UElist [ $i ][ $col ] ); // on le supprime
return $UElist ;
}
/**************************************/
/*** retourne les notes par modules ***/
/**************************************/
public function getNotesByModules ( $etudiant , $semestre , $annee ){
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
$getSemestreUID = $this -> pdo -> prepare ( " SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee " );
$getSemestreUID -> execute ( array (
':rang' => $semestre ,
':annee' => $annee
));
// si on trouve, on le définit, sinon on retourne "unknown_group"
if ( $semestreUID = $getSemestreUID -> fetch ()[ 'id' ] )
$semestreUID = ( int ) $semestreUID ;
else
return 'unknown_semestre' ;
/*** on cherche un utilisateur avec cet identifiant ***/
$getEtudiantUID = $this -> pdo -> prepare ( " SELECT u.identifiant as id FROM utilisateur as u, appartenance as app " .
" WHERE u.identifiant = app.id_etudiant " .
" AND u.identifiant = :etudiant " .
" AND app.id_semestre = :semestreUID " );
$getEtudiantUID -> execute ( array (
':etudiant' => $etudiant ,
':semestreUID' => $semestreUID
));
// si on trouve, on le définit, sinon on retourne "unknown_user"
if ( $etudiantUID = $getEtudiantUID -> fetch ()[ 'id' ] )
$etudiantUID = $etudiantUID ;
else
return 'unknown_user' ;
$notelist = array (); // tableau qui contiendra tout les modules
$modulelist = $this -> getModulesEtudiant ( $etudiant , $semestre , $annee ); // on récupère la liste des modules
foreach ( $modulelist as $module ){ // pour chaque module
$notes = $this -> getModuleNotes ( $etudiant , $module [ 'nom' ], $semestre , $annee ); // on récupère les notes
$current = array (); // on créé l'entrée qui sera dans le tableau de retour
$current [ 'module' ] = array ();
$current [ 'module' ][ 'nom' ] = $module [ 'nom' ]; // contenant le nom du module
$current [ 'module' ][ 'libelle' ] = $module [ 'libelle' ]; // contenant le nom du module
$current [ 'notes' ] = $notes ; // et la liste de notes
array_push ( $notelist , $current ); // on l'ajoute au résultat
}
return $notelist ;
}
/*********************************/
/*** retourne les notes par UE ***/
/*********************************/
public function getNotesByUEs ( $etudiant , $semestre , $annee ){
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
$getSemestreUID = $this -> pdo -> prepare ( " SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee " );
$getSemestreUID -> execute ( array (
':rang' => $semestre ,
':annee' => $annee
));
// si on trouve, on le définit, sinon on retourne "unknown_group"
if ( $semestreUID = $getSemestreUID -> fetch ()[ 'id' ] )
$semestreUID = ( int ) $semestreUID ;
else
return 'unknown_semestre' ;
/*** on cherche un utilisateur avec cet identifiant ***/
$getEtudiantUID = $this -> pdo -> prepare ( " SELECT u.identifiant as id FROM utilisateur as u, appartenance as app " .
" WHERE u.identifiant = app.id_etudiant " .
" AND u.identifiant = :etudiant " .
" AND app.id_semestre = :semestreUID " );
$getEtudiantUID -> execute ( array (
':etudiant' => $etudiant ,
':semestreUID' => $semestreUID
));
// si on trouve, on le définit, sinon on retourne "unknown_user"
if ( $etudiantUID = $getEtudiantUID -> fetch ()[ 'id' ] )
$etudiantUID = $etudiantUID ;
else
return 'unknown_user' ;
$notelist = array (); // tableau qui contiendra tout les modules
$UElist = $this -> getUEsEtudiant ( $etudiant , $semestre , $annee ); // on récupère la liste des modules
foreach ( $UElist as $UE ){ // pour chaque module
$notes = $this -> getUENotes ( $etudiant , $UE [ 'nom' ], $semestre , $annee ); // on récupère les notes
$current = array (); // on créé l'entrée qui sera dans le tableau de retour
$current [ 'UE' ] = array ();
$current [ 'UE' ][ 'annee' ] = $UE [ 'annee' ]; // contenant l'annee du UE
$current [ 'UE' ][ 'nom' ] = $UE [ 'nom' ]; // contenant le nom du UE
$current [ 'UE' ][ 'libelle' ] = $UE [ 'libelle' ]; // contenant le libelle du UE
$current [ 'notes' ] = $notes ; // et la liste de notes
array_push ( $notelist , $current ); // on l'ajoute au résultat
}
return $notelist ;
}
/**************************************/
/*** retourne les notes d'un module ***/
/**************************************/
public function getModuleNotes ( $etudiant , $module , $semestre , $annee ){
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
$getSemestreUID = $this -> pdo -> prepare ( " SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee " );
$getSemestreUID -> execute ( array (
':rang' => $semestre ,
':annee' => $annee
));
// si on trouve, on le définit, sinon on retourne "unknown_group"
if ( $semestreUID = $getSemestreUID -> fetch ()[ 'id' ] )
$semestreUID = ( int ) $semestreUID ;
else
return 'unknown_semestre' ;
/*** on cherche un utilisateur avec cet identifiant ***/
$getEtudiantUID = $this -> pdo -> prepare ( " SELECT identifiant as id FROM utilisateur as u, appartenance as app " .
" WHERE u.identifiant = app.id_etudiant " .
" AND u.identifiant = :etudiant " .
" AND app.id_semestre = :semestreUID " );
$getEtudiantUID -> execute ( array (
':etudiant' => $etudiant ,
':semestreUID' => $semestreUID
));
// si on trouve, on le définit, sinon on retourne "unknown_user"
if ( $etudiantUID = $getEtudiantUID -> fetch ()[ 'id' ] )
$etudiantUID = $etudiantUID ;
else
return 'unknown_user' ;
/*** on cherche un module avec ce nom, en accord avec le semestre et l'étudiant ***/
2015-11-03 20:59:16 +00:00
$getModuleUID = $this -> pdo -> prepare ( " SELECT m.id_module as id FROM module as m, appartenance as app, ue, mcc_ue, mcc_module as mcc_m " .
" WHERE app.id_etudiant = :etudiantUID " .
" AND mcc_ue.id_ue = ue.id_ue " .
" AND mcc_ue.id_semestre = app.id_semestre " .
" AND mcc_ue.id_semestre = :semestreUID " .
" AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue " .
" AND mcc_m.id_module = m.id_module " .
" AND m.nom = :module " );
2015-10-29 23:01:35 +00:00
$getModuleUID -> execute ( array (
':module' => $module ,
':etudiantUID' => $etudiantUID ,
':semestreUID' => $semestreUID
));
// si on trouve, on le définit, sinon on retourne "unknown_group"
if ( $moduleUID = $getModuleUID -> fetch ()[ 'id' ] )
$moduleUID = ( int ) $moduleUID ;
else
return 'unknown_module' ;
2015-11-03 20:59:16 +00:00
2015-10-29 23:01:35 +00:00
// si on a l'UID utilisateur & l'UID groupe => on récupère les modules
2015-11-03 22:20:54 +00:00
$getModuleList = $this -> pdo -> prepare ( " SELECT m.nom as module, m.libelle as modulelib, note.intitule, note.valeur, note.base, note.coefficient " .
2015-11-03 20:59:16 +00:00
" FROM note, appartenance as app, semestre as s, module as m, mcc_ue, mcc_module as mcc_m " .
2015-10-29 23:01:35 +00:00
" WHERE note.id_appartenance = app.id_appartenance " .
2015-11-03 20:59:16 +00:00
" AND note.id_mcc_module = mcc_m.id_mcc_module " .
" AND mcc_ue.id_semestre = app.id_semestre " .
" AND mcc_ue.id_semestre = s.id_semestre " .
2015-10-29 23:01:35 +00:00
2015-11-03 20:59:16 +00:00
" AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue " .
" AND mcc_m.id_module = m.id_module " .
" AND m.id_module = :moduleUID " .
2015-10-29 23:01:35 +00:00
" AND app.id_etudiant = :etudiantUID " .
" AND s.id_semestre = :semestreUID " .
" ORDER BY note.valeur, note.base ASC " );
$getModuleList -> execute ( array (
':moduleUID' => $moduleUID ,
':etudiantUID' => $etudiantUID ,
':semestreUID' => $semestreUID
));
$notes = $getModuleList -> fetchAll (); // on récupère la liste des notes
// on supprime les doublons des entrées (indice numérique)
for ( $i = 0 ; $i < count ( $notes ) ; $i ++ ) // pour toutes les notes
foreach ( $notes [ $i ] as $col => $val ) // pour toutes les entrées
if ( is_int ( $col ) ) // si l'indice est un entier
unset ( $notes [ $i ][ $col ] ); // on le supprime
return $notes ;
}
/**********************************/
/*** retourne les notes d'un UE ***/
/**********************************/
public function getUENotes ( $etudiant , $UE , $semestre , $annee ){
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
$getSemestreUID = $this -> pdo -> prepare ( " SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee " );
$getSemestreUID -> execute ( array (
':rang' => $semestre ,
':annee' => $annee
));
// si on trouve, on le définit, sinon on retourne "unknown_group"
if ( $semestreUID = $getSemestreUID -> fetch ()[ 'id' ] )
$semestreUID = ( int ) $semestreUID ;
else
return 'unknown_semestre' ;
/*** on cherche un utilisateur avec cet identifiant ***/
$getEtudiantUID = $this -> pdo -> prepare ( " SELECT identifiant as id FROM utilisateur as u, appartenance as app " .
" WHERE u.identifiant = app.id_etudiant " .
" AND u.identifiant = :etudiant " .
" AND app.id_semestre = :semestreUID " );
$getEtudiantUID -> execute ( array (
':etudiant' => $etudiant ,
':semestreUID' => $semestreUID
));
// si on trouve, on le définit, sinon on retourne "unknown_user"
if ( $etudiantUID = $getEtudiantUID -> fetch ()[ 'id' ] )
$etudiantUID = $etudiantUID ;
else
return 'unknown_user' ;
/*** on cherche un module avec ce nom, en accord avec le semestre et l'étudiant ***/
$getUEUID = $this -> pdo -> prepare ( " SELECT ue.id_ue as id " .
2015-11-03 20:59:16 +00:00
" FROM module as m, appartenance as app, ue, mcc_ue, mcc_module as mcc_m " .
" WHERE mcc_ue.id_ue = ue.id_ue " .
" AND mcc_ue.id_semestre = app.id_semestre " .
" AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue " .
" AND mcc_m.id_module = m.id_module " .
2015-10-29 23:01:35 +00:00
" AND ue.nom = :UE " .
" AND app.id_etudiant = :etudiantUID " .
" AND app.id_semestre = :semestreUID " );
$getUEUID -> execute ( array (
':UE' => $UE ,
':etudiantUID' => $etudiantUID ,
':semestreUID' => $semestreUID
));
// si on trouve, on le définit, sinon on retourne "unknown_group"
if ( $UEUID = $getUEUID -> fetch ()[ 'id' ] )
$UEUID = ( int ) $UEUID ;
else
return 'unknown_UE' ;
// si on a l'UID utilisateur & l'UID UE => on récupère les notes
2015-11-03 22:20:54 +00:00
$getUEList = $this -> pdo -> prepare ( " SELECT m.nom as module, m.libelle as modulelib, note.intitule, note.valeur, note.base, note.coefficient " .
2015-11-03 20:59:16 +00:00
" FROM note, appartenance as app, semestre as s, module as m, ue, mcc_ue, mcc_module as mcc_m " .
2015-10-29 23:01:35 +00:00
" WHERE note.id_appartenance = app.id_appartenance " .
2015-11-03 20:59:16 +00:00
" AND note.id_mcc_module = mcc_m.id_mcc_module " .
" AND mcc_ue.id_ue = ue.id_ue " .
" AND mcc_ue.id_semestre = app.id_semestre " .
" AND mcc_ue.id_semestre = s.id_semestre " .
" AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue " .
" AND mcc_m.id_module = m.id_module " .
2015-10-29 23:01:35 +00:00
2015-11-03 20:59:16 +00:00
" AND ue.id_ue = :UEUID " .
2015-10-29 23:01:35 +00:00
" AND app.id_etudiant = :etudiantUID " .
" AND s.id_semestre = :semestreUID " .
2015-11-02 12:52:16 +00:00
" ORDER BY m.nom, note.valeur, note.base ASC " );
2015-10-29 23:01:35 +00:00
$getUEList -> execute ( array (
':UEUID' => $UEUID ,
':etudiantUID' => $etudiantUID ,
':semestreUID' => $semestreUID
));
$notes = $getUEList -> fetchAll (); // on récupère la liste des notes
// on supprime les doublons des entrées (indice numérique)
for ( $i = 0 ; $i < count ( $notes ) ; $i ++ ) // pour toutes les notes
foreach ( $notes [ $i ] as $col => $val ) // pour toutes les entrées
if ( is_int ( $col ) ) // si l'indice est un entier
unset ( $notes [ $i ][ $col ] ); // on le supprime
return $notes ;
}
2015-10-25 16:55:18 +00:00
2015-10-23 16:36:33 +00:00
/******************************************************/
/***** déplace un étudiant d'un groupe à un autre *****/
/******************************************************/
2015-11-06 14:57:12 +00:00
public function deplacerEtudiant ( $etudiant , $groupe , $annee ){
2015-10-31 16:25:19 +00:00
2015-11-06 14:57:12 +00:00
/*** on cherche le nouveau groupe pour cet utilisateur ***/
$getNouveauGroupeUID = $this -> pdo -> prepare ( " SELECT DISTINCT s.id_semestre as semestre, g.id_groupe as id, u.identifiant as etuUID " .
" FROM groupe as g, appartenance as app, appartenance as myapp, utilisateur as u, semestre as s " .
" WHERE g.nom = :groupe " .
2015-10-31 16:25:19 +00:00
" AND u.identifiant = :etudiant " .
2015-11-06 14:57:12 +00:00
" AND myapp.id_etudiant = u.identifiant " .
" AND myapp.id_semestre = s.id_semestre " .
2015-10-31 16:25:19 +00:00
2015-11-06 14:57:12 +00:00
" AND app.id_groupe = g.id_groupe " .
" AND app.id_semestre = s.id_semestre " );
2015-10-31 16:25:19 +00:00
$getNouveauGroupeUID -> execute ( array (
2015-11-06 14:57:12 +00:00
':groupe' => $groupe ,
':etudiant' => $etudiant
2015-10-31 16:25:19 +00:00
));
// si on trouve, on le définit, sinon on retourne "unknown_user"
2015-11-06 14:57:12 +00:00
if ( $data = $getNouveauGroupeUID -> fetch () ){
$nouveauGroupeUID = ( int ) $data [ 'id' ];
$semestreUID = $data [ 'semestre' ];
$etudiantUID = $data [ 'etuUID' ];
}
2015-10-31 16:25:19 +00:00
else
return 'unknown_newgroup' ;
/*** on cherche le groupe de cet utilisateur ***/
$getGroupeUID = $this -> pdo -> prepare ( " SELECT g.id_groupe as id " .
" FROM utilisateur as u, groupe as g, appartenance as app, semestre as s " .
" WHERE app.id_etudiant = u.identifiant " .
" AND app.id_groupe = g.id_groupe " .
" AND app.id_semestre = s.id_semestre " .
" AND u.identifiant = :etudiantUID " .
" AND app.id_semestre = :semestreUID " );
$getGroupeUID -> execute ( array (
':etudiantUID' => $etudiantUID ,
':semestreUID' => $semestreUID ,
));
// si on trouve, on le définit, sinon on retourne "unknown_user"
if ( $groupeUID = $getGroupeUID -> fetch ()[ 'id' ] ){
$groupeUID = $groupeUID ;
/***************************************************************/
/*** CAS 1 : l'utilisateur a déjà un groupe pour ce semestre ***/
/***************************************************************/
// il suffit donc maintenant de modifier l' "appartenance"
$updateGroupe = $this -> pdo -> prepare ( " UPDATE appartenance SET id_groupe = :nouveauGroupeUID " .
" WHERE id_etudiant = :etudiantUID " .
" AND id_groupe = :groupeUID " .
" AND id_semestre = :semestreUID " );
$updateGroupe -> execute ( array (
':nouveauGroupeUID' => $nouveauGroupeUID ,
':etudiantUID' => $etudiantUID ,
':groupeUID' => $groupeUID ,
':semestreUID' => $semestreUID
));
}
else {
/****************************************************/
/*** CAS 2 : l'utilisateur n'a pas encore de groupe */
/****************************************************/
$insertGroupe = $this -> pdo -> prepare ( " INSERT INTO appartenance(id_appartenance, id_etudiant, id_groupe, id_semestre) " .
" VALUES(NULL, :etudiantUID, :nouveauGroupeUID, :semestreUID) " );
$insertGroupe -> execute ( array (
':etudiantUID' => $etudiantUID ,
':nouveauGroupeUID' => $nouveauGroupeUID ,
':semestreUID' => $semestreUID
));
}
/* Vérification de l'entrée dans la table */
$verif = $this -> pdo -> prepare ( " SELECT count(id_appartenance) as count " .
" FROM appartenance " .
" WHERE id_etudiant = :etudiantUID " .
" AND id_groupe = :nouveauGroupeUID " .
" AND id_semestre = :semestreUID " );
$verif -> execute ( array (
':etudiantUID' => $etudiantUID ,
':nouveauGroupeUID' => $nouveauGroupeUID ,
':semestreUID' => $semestreUID
));
$verifFetch = $verif -> fetch ();
if ( $verifFetch && $verifFetch [ 'count' ] == '1' )
return 'success' ;
2015-10-24 17:01:22 +00:00
else
2015-10-31 16:25:19 +00:00
return 'error' ;
2015-10-23 16:36:33 +00:00
}
2015-10-22 16:55:26 +00:00
2015-10-22 12:06:49 +00:00
}
?>