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:
xdrm-brackets 2015-11-06 15:57:12 +01:00
parent 954698d2b0
commit dcf23ef06a
4 changed files with 118 additions and 66 deletions

View File

@ -1035,49 +1035,31 @@ class DataBase{
/******************************************************/ /******************************************************/
/***** déplace un étudiant d'un groupe à un autre *****/ /***** déplace un étudiant d'un groupe à un autre *****/
/******************************************************/ /******************************************************/
public function deplacerEtudiant($etudiant, $groupe, $semestre, $annee){ public function deplacerEtudiant($etudiant, $groupe, $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 le nouveau groupe pour cet utilisateur ***/ /*** on cherche le nouveau groupe pour cet utilisateur ***/
$getNouveauGroupeUID = $this->pdo->prepare("SELECT g.id_groupe as id ". $getNouveauGroupeUID = $this->pdo->prepare("SELECT DISTINCT s.id_semestre as semestre, g.id_groupe as id, u.identifiant as etuUID ".
"FROM groupe as g ". "FROM groupe as g, appartenance as app, appartenance as myapp, utilisateur as u, semestre as s ".
"WHERE g.nom = :groupe"); "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( $getNouveauGroupeUID->execute(array(
':groupe' => $groupe ':groupe' => $groupe,
':etudiant' => $etudiant
)); ));
// si on trouve, on le définit, sinon on retourne "unknown_user" // si on trouve, on le définit, sinon on retourne "unknown_user"
if( $nouveauGroupeUID = $getNouveauGroupeUID->fetch()['id'] ) if( $data = $getNouveauGroupeUID->fetch() ){
$nouveauGroupeUID = $nouveauGroupeUID; $nouveauGroupeUID = (int) $data['id'];
$semestreUID = $data['semestre'];
$etudiantUID = $data['etuUID'];
}
else else
return 'unknown_newgroup'; return 'unknown_newgroup';

View File

@ -210,16 +210,14 @@ require_once __ROOT__.'/manager/database.php';
/* déplace un étudiant de son groupe à un autre */ /* déplace un étudiant de son groupe à un autre */
/************************************************/ /************************************************/
case 'move': case 'move':
$areSetParam = isset($request->etudiant) && isset($request->groupe) && isset($request->semestre) && isset($request->annee); // les arguments existent $areSetParam = isset($request->etudiant) && isset($request->groupe); // 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 $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 $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 $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 $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 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 }else
$answer->answer = 'param_error'; $answer->answer = 'param_error';
break; break;

View File

@ -57,9 +57,7 @@ if( document.querySelector('#CONTAINER section[name=movestudents]') != null ){ /
level_0: 'groups', level_0: 'groups',
level_1: 'move', level_1: 'move',
etudiant: id_etudiant, etudiant: id_etudiant,
groupe: nom_groupe, groupe: nom_groupe
semestre: 2,
annee: 2015
}; };
// l'ordre n'est pas alphabétique mais va à la fin // 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 ***/ /*** GESTION DES SELECT POUR AFFINER LES GROUPES ***/
/***************************************************/ /***************************************************/
var selectGroupes = document.querySelectorAll("#CONTAINER > section[name] > select"); var selectList = 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 ); // 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);

View File

@ -24,14 +24,12 @@ require_once __ROOT__.'/manager/groups.php';
array_push($postVars, $k); array_push($postVars, $k);
/* GESTION SEMESTRE OPTIONNEL */ /* GESTION SEMESTRE OPTIONNEL */
if( isset($postVars[1]) && is_numeric($postVars[1]) ) if( isset($postVars[1]) && is_numeric($postVars[1]) )
$semestreOpt = $postVars[1]; $semestreOpt = $postVars[1];
else else
$semestreOpt = null; $semestreOpt = null;
echo 'semestre '.$semestreOpt;
/* GESTION GROUPES OPTIONNEL */ /* GESTION GROUPES OPTIONNEL */
if( isset($postVars[2]) && is_string($postVars[2]) && strlen($postVars[2]) > 1 ) if( isset($postVars[2]) && is_string($postVars[2]) && strlen($postVars[2]) > 1 )
@ -39,8 +37,6 @@ require_once __ROOT__.'/manager/groups.php';
else else
$groupeOpt = null; $groupeOpt = null;
echo 'groupe '.$groupeOpt;
/************************/ /************************/
/*** TOUS LES GROUPES ***/ /*** TOUS LES GROUPES ***/
@ -128,6 +124,8 @@ if( $_SESSION['identifiant'] != null && ($_SESSION['droits'] == 'teacher' || $_S
$request->level_1 = 'grouplistForYear'; $request->level_1 = 'grouplistForYear';
$request->annee = $_SESSION['annee']; $request->annee = $_SESSION['annee'];
if ( $semestreOpt != null ) $request->semestre = $semestreOpt;
elseif( $groupeOpt != null ) $request->groupe = $groupeOpt;
groups_switch_level_1($request, $answer); groups_switch_level_1($request, $answer);
@ -137,11 +135,15 @@ if( $_SESSION['identifiant'] != null && ($_SESSION['droits'] == 'teacher' || $_S
/* select pour SEMESTRES */ /* select pour SEMESTRES */
$lastSemestre = null; $lastSemestre = null;
echo "<select>"; echo "<select name='semestre'>";
echo "<option>Choix du semestre</option>"; echo "<option value='*'>Tous les semestres</option>";
foreach($answer->grouplist as $group){ foreach($answer->grouplist as $group){
if( $lastSemestre == null || $lastSemestre != $group->semestre ){ 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; $lastSemestre = $group->semestre;
} }
} }
@ -150,11 +152,16 @@ if( $_SESSION['identifiant'] != null && ($_SESSION['droits'] == 'teacher' || $_S
/* select pour GROUPES */ /* select pour GROUPES */
$lastGroupe = null; $lastGroupe = null;
echo "<select>"; echo "<select name='groupe'>";
echo "<option>Choix du groupe</option>"; echo "<option value='*'>Tous les groupes</option>";
foreach($answer->grouplist as $group){ foreach($answer->grouplist as $group){
if( $lastGroupe == null || $lastGroupe != $group->nom ){ 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; $lastGroupe = $group->nom;
} }
} }
@ -307,6 +314,9 @@ if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'teacher' ){ // s
$request->level_1 = 'grouplistForTeacher'; /******************************************************************************************************** A FAIRE **/ $request->level_1 = 'grouplistForTeacher'; /******************************************************************************************************** A FAIRE **/
$request->enseignant = $_SESSION['identifiant']; $request->enseignant = $_SESSION['identifiant'];
$request->annee = $_SESSION['annee']; $request->annee = $_SESSION['annee'];
if ( $semestreOpt != null ) $request->semestre = $semestreOpt;
elseif( $groupeOpt != null ) $request->groupe = $groupeOpt;
groups_switch_level_1($request, $answer); groups_switch_level_1($request, $answer);
if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe 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 */ /* select pour SEMESTRES */
$lastSemestre = null; $lastSemestre = null;
echo "<select>"; echo "<select name='semestre'>";
echo "<option>Choix du semestre</option>"; echo "<option value='*'>Tous les semestres</option>";
foreach($answer->grouplist as $group){ foreach($answer->grouplist as $group){
if( $lastSemestre == null || $lastSemestre != $group->semestre ){ 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; $lastSemestre = $group->semestre;
} }
} }
@ -328,11 +343,16 @@ if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'teacher' ){ // s
/* select pour GROUPES */ /* select pour GROUPES */
$lastGroupe = null; $lastGroupe = null;
echo "<select>"; echo "<select name='groupe'>";
echo "<option>Choix du groupe</option>"; echo "<option value='*'>Tous les groupes</option>";
foreach($answer->grouplist as $group){ foreach($answer->grouplist as $group){
if( $lastGroupe == null || $lastGroupe != $group->nom ){ 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; $lastGroupe = $group->nom;
} }
} }
@ -404,14 +424,54 @@ if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'admin' ){ // si
$answer = new stdClass(); $answer = new stdClass();
$request->level_1 = 'grouplistForYear'; $request->level_1 = 'grouplistForYear';
$request->semestre = $i;
$request->annee = $_SESSION['annee']; $request->annee = $_SESSION['annee'];
if ( $semestreOpt != null ) $request->semestre = $semestreOpt;
elseif( $groupeOpt != null ) $request->groupe = $groupeOpt;
groups_switch_level_1($request, $answer); groups_switch_level_1($request, $answer);
if( $answer->request == 'success' ){ // si pas d'erreur 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 foreach($answer->grouplist as $group){ // pour chaque groupe