Correction de la liste de proposition de changement de groupe (maintenant exhaustive) + correction de relation dans requête d'affichage des manager/repo@membres

This commit is contained in:
xdrm-brackets 2015-11-26 00:18:50 +01:00
parent 917fdec52f
commit 853f2ec03e
5 changed files with 229 additions and 183 deletions

View File

@ -465,12 +465,6 @@ class DataBase{
/*** retourne la liste des utilisateurs des groupes d'une année ***/
/******************************************************************/
public function listeEtudiantsTousGroupesAnnee($annee, $semestre_pair){
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
$checkAnnee = DataBase::getPDO()->prepare("SELECT id_semestre as id FROM semestre WHERE annee = :annee");
$checkAnnee->execute(array( ':annee' => $annee ));
if( !( $checkAnnee->fetch()['id'] ) ) return 'unknown_year';
// on récupère la liste des groupes
$grouplist = DataBase::delNumeric( groupRepo::forYear($semestre_pair, $annee) );
@ -512,9 +506,9 @@ class DataBase{
// on vérifie que le semestre et que le groupe de destination existent
if( !($semestreInfo=semestreRepo::info($semestre)) ) return 'unknown_semestre';
if( !($destGroupeUID=groupRepo::UID($groupe)) ) return 'unknown_newgroup';
if( !($destGroupeInfo=groupRepo::info($groupe)) ) return 'unknown_newgroup';
if( groupRepo::ajouterMembre($etudiant, $destGroupeUID, $semestreInfo['id']) )
if( groupRepo::ajouterMembre($etudiant, $destGroupeInfo['id'], $semestreInfo['id']) )
return 'success';
else
return 'error';
@ -523,6 +517,27 @@ class DataBase{
/* retourne la liste exhaustive des groupes de la BDD
*
* @return grouplist<Array> la liste de tous les groupes de la BDD
*
*/
public function getExhaustiveGroupList(){
$grouplist = groupRepo::getAllGroups();
// on essaie de supposer le semestre en fonction du nom
foreach($grouplist as $i=>$group)
if( preg_match('/^(?:.+)?S(\d)(?:.+)?$/', $group['nom'], $m) ) // si le semestre est dans le nom
$grouplist[$i]['rang'] = intval($m[1]); // on récupère le rang
else
$grouplist[$i]['rang'] = null; // sinon rang = null
return $grouplist;
}

View File

@ -231,12 +231,11 @@ require_once __ROOT__.'/manager/database.php';
case 'move': if( permission('admin') ){
$areSetParam = isset($request->etudiant) && isset($request->groupe) && isset($request->semestre); // 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 && is_numeric($request->semestre); // d'au moins 1 caractère
$typeOkParam = $areSetParam && is_string($request->etudiant) && is_numeric($request->groupe); // si c'est des strings
$nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && is_numeric($request->semestre); // 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
if( $groupeCheck ){ // si param ok
if( $etudiantCheck ){ // si param ok
$answer->request = DataBase::getInstance()->deplacerEtudiant($request->etudiant, $request->groupe, $request->semestre);
}else
$answer->request = 'param_error';
@ -247,6 +246,21 @@ require_once __ROOT__.'/manager/database.php';
/******************************************/
/* la liste de TOUS les groupes de la BDD */
/******************************************/
case 'exhaustiveList': if( permission('admin') ){
$answer->grouplist = DataBase::getInstance()->getExhaustiveGroupList();
$answer->request = 'success';
}else
$answer->request = 'permission_error';
break;
/*******************************************/
/* intégration des élèves pour un semestre */
/*******************************************/
@ -262,6 +276,11 @@ require_once __ROOT__.'/manager/database.php';
$answer->request = 'permission_error';
break;
/***********/
/* DEFAULT */
/***********/

View File

@ -41,7 +41,7 @@ class groupRepo extends DBAccess{
*/
public static function info($groupeUID){
// on considère que le groupe existe
$getGroupeInfo = DataBase::getPDO()->prepare("SELECT id_groupe as id, nom, libelle FROM groupe WHERE id_groupe = :groupeUID");
$getGroupeInfo = DataBase::getPDO()->prepare("SELECT id_groupe as id, nom FROM groupe WHERE id_groupe = :groupeUID");
$getGroupeInfo->execute(array( ':groupeUID' => $groupeUID ));
return DataBase::delNumeric( $getGroupeInfo->fetch(), true );
@ -121,7 +121,7 @@ class groupRepo extends DBAccess{
*
*/
public static function ajouterMembre($etudiant, $groupe, $semestre){
debug();
/* [1] On vérifie si l'utilisateur appartient à un groupe pour ce semestre
===========================================================================*/
if( $appartenanceUID = groupRepo::forStudent($etudiant, $semestre)['id_appartenance'] ){ // si c'est le cas
@ -143,11 +143,7 @@ class groupRepo extends DBAccess{
==============================*/
// création et exécution de la requête de création d'appartenance
$ajouterMembres = DataBase::getPDO()->prepare("INSERT INTO appartenance(id_etudiant, id_groupe, id_semestre)
VALUES(
(SELECT identifiant FROM utilisateur WHERE identifiant = :etudiant),
(SELECT id_groupe FROM groupe WHERE id_groupe = :groupe),
(SELECT id_semestre FROM semestre WHERE id_semestre = :semestre)
)");
VALUES(:etudiant, :groupe, :semestre)");
$ajouterMembres->execute(array(
':etudiant' => $etudiant,
':groupe' => $groupe,
@ -179,7 +175,7 @@ class groupRepo extends DBAccess{
WHERE s.id_formation = f.id_formation
AND u.identifiant = app.id_etudiant
AND g.id_groupe = app.id_groupe
AND app.id_semestre = app.id_semestre
AND app.id_semestre = s.id_semestre
AND g.id_groupe = :groupeUID
AND s.id_semestre = :semestreUID
@ -325,6 +321,17 @@ class groupRepo extends DBAccess{
/* retourne la liste exhaustive des groupes
*
* @return groupes<Array> retourne la liste des groupes de la BDD
*
*/
public static function getAllGroups(){
$getGroupList = DataBase::getPDO()->query("SELECT id_groupe as id, nom FROM groupe ORDER BY nom ASC");
// $getGroupList = DataBase::getPDO()->query("SELECT id_groupe as id, nom FROM groupe WHERE length(nom) <= 6 ORDER BY nom ASC");
return DataBase::delNumeric( $getGroupList->fetchAll() );
}

View File

@ -362,18 +362,23 @@ if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un
/****************************/
if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un admin
for( $i = 2 ; $i <= 2 ; $i++ ){ // pour chaque semestre
$request = new stdClass();
$answer = new stdClass();
$requestAllGroups = new stdClass(); $answerAllGroups = new stdClass();
// on récupère la liste de tous les groupes (pour le déplacement)
$requestAllGroups->level_1 = 'exhaustiveList';
groups_switch_level_1($requestAllGroups, $answerAllGroups);
// on récupère les groupes affichés sur la page
$request = new stdClass(); $answer = new stdClass();
$request->level_1 = 'grouplistForYear';
$request->annee = $_SESSION['annee'];
groups_switch_level_1($request, $answer); // on fait la requête pour les groupes en fonction des filtres si définis
if( $answer->request == 'success' && $answer->request == 'success' ){ // si pas d'erreur
if( $answer->request == 'success' && $answerAllGroups->request == 'success' ){ // si pas d'erreur
//////////////////////////////////////////////////////////////
echo "<section name='movestudents' data-title='Tous les groupes' class='basic'>";
@ -466,7 +471,7 @@ if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un adm
if( count($group['userlist']) > 0 ){ // s'il y a des utilisateurs
echo "<table class='basic col4'>";
echo "<table class='basic col5'>";
echo '<thead>';
echo '<tr>';
@ -487,20 +492,21 @@ if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un adm
echo "<td><span class=link>".$user['identifiant'].'</span></td>';
echo '<td>'.$user['prenom'].'</td>';
echo '<td>'.$user['nom'].'</td>';
// echo '<td><strong><span>'.$group['nom'].'</span></strong></td>';
// changement de groupe
echo '<td>'.$group['nom'].'</td>';
echo '<td>';
echo "<select data-stre='".$group['id_semestre']."' class='deplacement_groupe'>";
foreach($answer->grouplist as $groupemodif) // pour tous les groupes
if( $groupemodif['id_semestre'] == $group['id_semestre'] ) // si c'est un groupe du même semestre uniquement
if( $groupemodif['nom'] == $group['nom'] ) // si c'est le groupe en cours, on le pré-sélectionne
echo "<option value='".$groupemodif['nom']."' selected>".$groupemodif['nom']."</option>";
else
echo "<option value='".$groupemodif['nom']."'>".$groupemodif['nom']."</option>";
/* CHANGEMENT DE GROUPE */
echo "<select data-stre='".$group['id_semestre']."' class='deplacement_groupe'>";
// on affiche le groupe courant
echo "<option value='".$group['id']."' selected>".$group['nom']."</option>";
foreach($answerAllGroups->grouplist as $groupemodif) // pour tous les groupes
if( $groupemodif['rang'] == $group['rang'] && $groupemodif['id'] != $group['id'] ) // si c'est un groupe du même rang et pas le groupe actuel
echo "<option value='".$groupemodif['id']."'>".$groupemodif['nom']."</option>";
echo '</select>';
echo "<div class='confirm'>déplacer</div>";
echo '</td>';
echo '</tr>';
}
@ -519,7 +525,6 @@ if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un adm
////////////////////////////////////////////////////////
}else
echo "<section name='movestudents' data-title='Tous les groupes' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>";
}
} ?>

View File

@ -46,30 +46,30 @@ require_once __ROOT__.'/manager/security.php';
debug();
$_SESSION['annee'] = 2018;
$_SESSION['annee'] = 2019;
require_once __ROOT__.'/manager/phpExcel.php';
require_once __ROOT__.'/manager/groups.php';
// require_once __ROOT__.'/manager/phpExcel.php';
// require_once __ROOT__.'/manager/groups.php';
$r1 = new stdClass(); $a1 = new stdClass();
$r1->level_1 = 'import_inscrits';
$r1->docPath = __ROOT__.'/src/files/modele_import_inscrits.xlsx';
// $r1 = new stdClass(); $a1 = new stdClass();
// $r1->level_1 = 'import_inscrits';
// $r1->docPath = __ROOT__.'/src/files/modele_import_inscrits.xlsx';
xlsx_switch_lvl1($r1, $a1);
// xlsx_switch_lvl1($r1, $a1);
if( $a1->request == 'success' ){
// if( $a1->request == 'success' ){
$r2 = new stdClass(); $a2 = new stdClass();
$r2->level_1 = 'addUserlist';
$r2->rang = 1;
$r2->annee = 2018;
$r2->formationList = $a1->formationList;
// $r2 = new stdClass(); $a2 = new stdClass();
// $r2->level_1 = 'addUserlist';
// $r2->rang = 1;
// $r2->annee = 2018;
// $r2->formationList = $a1->formationList;
groups_switch_level_1($r2, $a2);
// groups_switch_level_1($r2, $a2);
var_dump( $a2 );
}
// var_dump( $a2 );
// }