Ajout de la fonctionnalité de selection semestre(ou)groupe pour la section COMPOSITION + correction de la fonction "MOVE" qui vérifie maintenant qu'on ne passe pas d'un semestre à un autre
This commit is contained in:
parent
954698d2b0
commit
dcf23ef06a
|
@ -1035,49 +1035,31 @@ class DataBase{
|
|||
/******************************************************/
|
||||
/***** déplace un étudiant d'un groupe à un autre *****/
|
||||
/******************************************************/
|
||||
public function deplacerEtudiant($etudiant, $groupe, $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';
|
||||
public function deplacerEtudiant($etudiant, $groupe, $annee){
|
||||
|
||||
|
||||
/*** on cherche le nouveau groupe pour cet utilisateur ***/
|
||||
$getNouveauGroupeUID = $this->pdo->prepare("SELECT g.id_groupe as id ".
|
||||
"FROM groupe as g ".
|
||||
"WHERE g.nom = :groupe");
|
||||
$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 ".
|
||||
"AND u.identifiant = :etudiant ".
|
||||
|
||||
"AND myapp.id_etudiant = u.identifiant ".
|
||||
"AND myapp.id_semestre = s.id_semestre ".
|
||||
|
||||
"AND app.id_groupe = g.id_groupe ".
|
||||
"AND app.id_semestre = s.id_semestre");
|
||||
$getNouveauGroupeUID->execute(array(
|
||||
':groupe' => $groupe
|
||||
':groupe' => $groupe,
|
||||
':etudiant' => $etudiant
|
||||
));
|
||||
|
||||
// si on trouve, on le définit, sinon on retourne "unknown_user"
|
||||
if( $nouveauGroupeUID = $getNouveauGroupeUID->fetch()['id'] )
|
||||
$nouveauGroupeUID = $nouveauGroupeUID;
|
||||
if( $data = $getNouveauGroupeUID->fetch() ){
|
||||
$nouveauGroupeUID = (int) $data['id'];
|
||||
$semestreUID = $data['semestre'];
|
||||
$etudiantUID = $data['etuUID'];
|
||||
}
|
||||
else
|
||||
return 'unknown_newgroup';
|
||||
|
||||
|
|
|
@ -210,16 +210,14 @@ require_once __ROOT__.'/manager/database.php';
|
|||
/* déplace un étudiant de son groupe à un autre */
|
||||
/************************************************/
|
||||
case 'move':
|
||||
$areSetParam = isset($request->etudiant) && isset($request->groupe) && isset($request->semestre) && isset($request->annee); // les arguments existent
|
||||
$typeOkParam = $areSetParam && is_string($request->etudiant) && is_string($request->groupe) && is_numeric($request->semestre) && is_numeric($request->annee); // si c'est des strings
|
||||
$areSetParam = isset($request->etudiant) && isset($request->groupe); // les arguments existent
|
||||
$typeOkParam = $areSetParam && is_string($request->etudiant) && is_string($request->groupe); // si c'est des strings
|
||||
$nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && strlen($request->groupe) > 0; // d'au moins 1 caractère
|
||||
$etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // etudiant (username) bon format
|
||||
$groupeCheck = $etudiantCheck && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); // groupe (nom) bon format
|
||||
$semestreCheck = $groupeCheck && preg_match('/^[1-4]{1}$/i', $request->semestre); // semestre (semestre) bon format
|
||||
$anneeCheck = $semestreCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
|
||||
|
||||
if( $groupeCheck ){ // si param ok
|
||||
$answer->request = DataBase::getInstance()->deplacerEtudiant($request->etudiant, $request->groupe, $request->semestre, $request->annee);
|
||||
$answer->request = DataBase::getInstance()->deplacerEtudiant($request->etudiant, $request->groupe, $_SESSION['annee']);
|
||||
}else
|
||||
$answer->answer = 'param_error';
|
||||
break;
|
||||
|
|
|
@ -57,9 +57,7 @@ if( document.querySelector('#CONTAINER section[name=movestudents]') != null ){ /
|
|||
level_0: 'groups',
|
||||
level_1: 'move',
|
||||
etudiant: id_etudiant,
|
||||
groupe: nom_groupe,
|
||||
semestre: 2,
|
||||
annee: 2015
|
||||
groupe: nom_groupe
|
||||
};
|
||||
|
||||
// l'ordre n'est pas alphabétique mais va à la fin
|
||||
|
@ -81,7 +79,21 @@ if( document.querySelector('#CONTAINER section[name=movestudents]') != null ){ /
|
|||
/***************************************************/
|
||||
/*** GESTION DES SELECT POUR AFFINER LES GROUPES ***/
|
||||
/***************************************************/
|
||||
var selectGroupes = document.querySelectorAll("#CONTAINER > section[name] > select");
|
||||
for( var i = 0 ; i < selectGroupes.length ; i++ )
|
||||
selectGroupes[i].associatedSection = selectGroupes[i].parentNode.getAttribute('name');
|
||||
console.log( selectGroupes );
|
||||
var selectList = document.querySelectorAll("#CONTAINER > section[name] > select");
|
||||
|
||||
|
||||
// GESTION DE LA PRISE EN COMPTE DES SELECT //
|
||||
DOM.CONTAINER.addEventListener('change', function(e){
|
||||
if( e.target.tagName == 'SELECT' && ['semestre', 'groupe'].indexOf(e.target.getAttribute('name')) > -1 ){
|
||||
if( e.target.getAttribute('name') == 'semestre' ){ // si modifie le semestre
|
||||
pageM.vars[1] = e.target.value; // on selectionne semestre
|
||||
pageM.vars[2] = '*'; // on désactive le groupe
|
||||
}else{
|
||||
pageM.vars[1] = '*'; // on désactive le semestre
|
||||
pageM.vars[2] = e.target.value; // on active le groupe
|
||||
}
|
||||
|
||||
selectSection( document.querySelector('#MENU > span[data-link='+pageM.page+']') );
|
||||
// console.log(e.target.getAttribute('name')+' = '+e.target.value);
|
||||
}
|
||||
}, false);
|
|
@ -24,14 +24,12 @@ require_once __ROOT__.'/manager/groups.php';
|
|||
array_push($postVars, $k);
|
||||
|
||||
|
||||
|
||||
/* GESTION SEMESTRE OPTIONNEL */
|
||||
if( isset($postVars[1]) && is_numeric($postVars[1]) )
|
||||
$semestreOpt = $postVars[1];
|
||||
else
|
||||
$semestreOpt = null;
|
||||
|
||||
echo 'semestre '.$semestreOpt;
|
||||
|
||||
/* GESTION GROUPES OPTIONNEL */
|
||||
if( isset($postVars[2]) && is_string($postVars[2]) && strlen($postVars[2]) > 1 )
|
||||
|
@ -39,8 +37,6 @@ require_once __ROOT__.'/manager/groups.php';
|
|||
else
|
||||
$groupeOpt = null;
|
||||
|
||||
echo 'groupe '.$groupeOpt;
|
||||
|
||||
|
||||
/************************/
|
||||
/*** TOUS LES GROUPES ***/
|
||||
|
@ -128,6 +124,8 @@ if( $_SESSION['identifiant'] != null && ($_SESSION['droits'] == 'teacher' || $_S
|
|||
|
||||
$request->level_1 = 'grouplistForYear';
|
||||
$request->annee = $_SESSION['annee'];
|
||||
if ( $semestreOpt != null ) $request->semestre = $semestreOpt;
|
||||
elseif( $groupeOpt != null ) $request->groupe = $groupeOpt;
|
||||
|
||||
groups_switch_level_1($request, $answer);
|
||||
|
||||
|
@ -137,11 +135,15 @@ if( $_SESSION['identifiant'] != null && ($_SESSION['droits'] == 'teacher' || $_S
|
|||
/* select pour SEMESTRES */
|
||||
$lastSemestre = null;
|
||||
|
||||
echo "<select>";
|
||||
echo "<option>Choix du semestre</option>";
|
||||
echo "<select name='semestre'>";
|
||||
echo "<option value='*'>Tous les semestres</option>";
|
||||
foreach($answer->grouplist as $group){
|
||||
if( $lastSemestre == null || $lastSemestre != $group->semestre ){
|
||||
echo '<option>'.$group->semestre.'</option>';
|
||||
|
||||
if( $group->semestre[1] == $semestreOpt ) // si c'est le semestre séléctionné
|
||||
echo "<option value='".$group->semestre[1]."' selected>".$group->semestre.'</option>';
|
||||
else // sinon on affiche normalement
|
||||
echo "<option value='".$group->semestre[1]."'>".$group->semestre.'</option>';
|
||||
$lastSemestre = $group->semestre;
|
||||
}
|
||||
}
|
||||
|
@ -150,11 +152,16 @@ if( $_SESSION['identifiant'] != null && ($_SESSION['droits'] == 'teacher' || $_S
|
|||
/* select pour GROUPES */
|
||||
$lastGroupe = null;
|
||||
|
||||
echo "<select>";
|
||||
echo "<option>Choix du groupe</option>";
|
||||
echo "<select name='groupe'>";
|
||||
echo "<option value='*'>Tous les groupes</option>";
|
||||
foreach($answer->grouplist as $group){
|
||||
if( $lastGroupe == null || $lastGroupe != $group->nom ){
|
||||
echo '<option>'.$group->nom.'</option>';
|
||||
|
||||
if( $group->nom == $groupeOpt ) // si c'est le groupe séléctionné
|
||||
echo "<option value='".$group->nom."' selected>".$group->nom.'</option>';
|
||||
else
|
||||
echo "<option value='".$group->nom."'>".$group->nom.'</option>';
|
||||
|
||||
$lastGroupe = $group->nom;
|
||||
}
|
||||
}
|
||||
|
@ -307,6 +314,9 @@ if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'teacher' ){ // s
|
|||
$request->level_1 = 'grouplistForTeacher'; /******************************************************************************************************** A FAIRE **/
|
||||
$request->enseignant = $_SESSION['identifiant'];
|
||||
$request->annee = $_SESSION['annee'];
|
||||
if ( $semestreOpt != null ) $request->semestre = $semestreOpt;
|
||||
elseif( $groupeOpt != null ) $request->groupe = $groupeOpt;
|
||||
|
||||
groups_switch_level_1($request, $answer);
|
||||
|
||||
if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe
|
||||
|
@ -315,11 +325,16 @@ if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'teacher' ){ // s
|
|||
/* select pour SEMESTRES */
|
||||
$lastSemestre = null;
|
||||
|
||||
echo "<select>";
|
||||
echo "<option>Choix du semestre</option>";
|
||||
echo "<select name='semestre'>";
|
||||
echo "<option value='*'>Tous les semestres</option>";
|
||||
foreach($answer->grouplist as $group){
|
||||
if( $lastSemestre == null || $lastSemestre != $group->semestre ){
|
||||
echo '<option>'.$group->semestre.'</option>';
|
||||
|
||||
if( $group->semestre[1] == $semestreOpt ) // si c'est le semestre séléctionné
|
||||
echo "<option value='".$group->semestre[1]."' selected>".$group->semestre.'</option>';
|
||||
else // sinon on affiche normalement
|
||||
echo "<option value='".$group->semestre[1]."'>".$group->semestre.'</option>';
|
||||
|
||||
$lastSemestre = $group->semestre;
|
||||
}
|
||||
}
|
||||
|
@ -328,11 +343,16 @@ if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'teacher' ){ // s
|
|||
/* select pour GROUPES */
|
||||
$lastGroupe = null;
|
||||
|
||||
echo "<select>";
|
||||
echo "<option>Choix du groupe</option>";
|
||||
echo "<select name='groupe'>";
|
||||
echo "<option value='*'>Tous les groupes</option>";
|
||||
foreach($answer->grouplist as $group){
|
||||
if( $lastGroupe == null || $lastGroupe != $group->nom ){
|
||||
echo '<option>'.$group->nom.'</option>';
|
||||
|
||||
if( $group->nom == $groupeOpt ) // si c'est le groupe séléctionné
|
||||
echo "<option value='".$group->nom."' selected>".$group->nom.'</option>';
|
||||
else
|
||||
echo "<option value='".$group->nom."'>".$group->nom.'</option>';
|
||||
|
||||
$lastGroupe = $group->nom;
|
||||
}
|
||||
}
|
||||
|
@ -404,14 +424,54 @@ if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'admin' ){ // si
|
|||
$answer = new stdClass();
|
||||
|
||||
$request->level_1 = 'grouplistForYear';
|
||||
$request->semestre = $i;
|
||||
$request->annee = $_SESSION['annee'];
|
||||
if ( $semestreOpt != null ) $request->semestre = $semestreOpt;
|
||||
elseif( $groupeOpt != null ) $request->groupe = $groupeOpt;
|
||||
|
||||
groups_switch_level_1($request, $answer);
|
||||
|
||||
if( $answer->request == 'success' ){ // si pas d'erreur
|
||||
//////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/* select pour SEMESTRES */
|
||||
$lastSemestre = null;
|
||||
|
||||
echo "<select name='semestre'>";
|
||||
echo "<option value='*'>Tous les semestres</option>";
|
||||
foreach($answer->grouplist as $group){
|
||||
if( $lastSemestre == null || $lastSemestre != $group->semestre ){
|
||||
|
||||
if( $group->semestre[1] == $semestreOpt ) // si c'est le semestre séléctionné
|
||||
echo "<option value='".$group->semestre[1]."' selected>".$group->semestre.'</option>';
|
||||
else // sinon on affiche normalement
|
||||
echo "<option value='".$group->semestre[1]."'>".$group->semestre.'</option>';
|
||||
|
||||
$lastSemestre = $group->semestre;
|
||||
}
|
||||
}
|
||||
echo "<select>";
|
||||
|
||||
/* select pour GROUPES */
|
||||
$lastGroupe = null;
|
||||
|
||||
echo "<select name='groupe'>";
|
||||
echo "<option value='*'>Tous les groupes</option>";
|
||||
foreach($answer->grouplist as $group){
|
||||
if( $lastGroupe == null || $lastGroupe != $group->nom ){
|
||||
|
||||
if( $group->nom == $groupeOpt ) // si c'est le groupe séléctionné
|
||||
echo "<option value='".$group->nom."' selected>".$group->nom.'</option>';
|
||||
else
|
||||
echo "<option value='".$group->nom."'>".$group->nom.'</option>';
|
||||
|
||||
$lastGroupe = $group->nom;
|
||||
}
|
||||
}
|
||||
echo "<select>";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
foreach($answer->grouplist as $group){ // pour chaque groupe
|
||||
|
||||
|
|
Loading…
Reference in New Issue