diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..1f1ae9b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/manager/conf*.json \ No newline at end of file diff --git a/css/global.css b/css/global.css index f76894c..fe0105d 100755 --- a/css/global.css +++ b/css/global.css @@ -372,9 +372,159 @@ select.active + .confirm, .confirm.pamp{ border-color: #f55b55; color: #f55b55; - background-image: url(../src/validate@pamp.svg); + background-image: url(../src/validate@pamp.svg) !important; } +@-webkit-keyframes bounce_err{ + 0%{ + transform: translateX(5px); + -moz-transform: translateX(5px); + -webkit-transform: translateX(5px); + -ms-transform: translateX(5px); + -o-transform: translateX(5px); + } + + + 25%{ + transform: translateX(-5px); + -moz-transform: translateX(-5px); + -webkit-transform: translateX(-5px); + -ms-transform: translateX(-5px); + -o-transform: translateX(-5px); + } + + 50%{ + transform: translateX(5px); + -moz-transform: translateX(5px); + -webkit-transform: translateX(5px); + -ms-transform: translateX(5px); + -o-transform: translateX(5px); + } + + 100%{ + transform: translateX(0); + -moz-transform: translateX(0); + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + -o-transform: translateX(0); + } +} + +@-moz-keyframes bounce_err{ + 0%{ + transform: translateX(5px); + -moz-transform: translateX(5px); + -webkit-transform: translateX(5px); + -ms-transform: translateX(5px); + -o-transform: translateX(5px); + } + + + 25%{ + transform: translateX(-5px); + -moz-transform: translateX(-5px); + -webkit-transform: translateX(-5px); + -ms-transform: translateX(-5px); + -o-transform: translateX(-5px); + } + + 50%{ + transform: translateX(5px); + -moz-transform: translateX(5px); + -webkit-transform: translateX(5px); + -ms-transform: translateX(5px); + -o-transform: translateX(5px); + } + + 100%{ + transform: translateX(0); + -moz-transform: translateX(0); + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + -o-transform: translateX(0); + } +} + +@-o-keyframes bounce_err{ + 0%{ + transform: translateX(5px); + -moz-transform: translateX(5px); + -webkit-transform: translateX(5px); + -ms-transform: translateX(5px); + -o-transform: translateX(5px); + } + + + 25%{ + transform: translateX(-5px); + -moz-transform: translateX(-5px); + -webkit-transform: translateX(-5px); + -ms-transform: translateX(-5px); + -o-transform: translateX(-5px); + } + + 50%{ + transform: translateX(5px); + -moz-transform: translateX(5px); + -webkit-transform: translateX(5px); + -ms-transform: translateX(5px); + -o-transform: translateX(5px); + } + + 100%{ + transform: translateX(0); + -moz-transform: translateX(0); + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + -o-transform: translateX(0); + } +} + +@keyframes bounce_err{ + 0%{ + transform: translateX(5px); + -moz-transform: translateX(5px); + -webkit-transform: translateX(5px); + -ms-transform: translateX(5px); + -o-transform: translateX(5px); + } + + + 25%{ + transform: translateX(-5px); + -moz-transform: translateX(-5px); + -webkit-transform: translateX(-5px); + -ms-transform: translateX(-5px); + -o-transform: translateX(-5px); + } + + 50%{ + transform: translateX(5px); + -moz-transform: translateX(5px); + -webkit-transform: translateX(5px); + -ms-transform: translateX(5px); + -o-transform: translateX(5px); + } + + 100%{ + transform: translateX(0); + -moz-transform: translateX(0); + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + -o-transform: translateX(0); + } +} + +/* bounce animation */ +.confirm.bounce_error{ + animation: bounce_err .8s ease-in; + -moz-animation: bounce_err .8s ease-in; + -webkit-animation: bounce_err .8s ease-in; + -ms-animation: bounce_err .8s ease-in; + -o-animation: bounce_err .8s ease-in; +} + + /* tr@hover */ body.trHoverActivated tr:hover td select.active + .confirm, body.trHoverActivated tr:hover td input.active + .confirm, diff --git a/js/action-script.js b/js/action-script.js index a04aa23..a791518 100755 --- a/js/action-script.js +++ b/js/action-script.js @@ -87,15 +87,15 @@ var connected = !( DOM.AUTH.children[0].innerHTML == 'Connexion' ); /* [c] gestion des classes ================================================*/ - function addClass(el, pClass){ - if( el.className.length > 0 && el.className != pClass ) el.className = el.className + ' ' + pClass; - else el.className = pClass; - } + // function addClass(el, pClass){ + // if( el.className.length > 0 && el.className != pClass ) el.className = el.className + ' ' + pClass; + // else el.className = pClass; + // } - function remClass(el, pClass){ - if( el.className.indexOf(pClass) > -1 ) // si la class de l'élement contient la classe à enlever - el.className = el.className.substr(0, el.className.indexOf(pClass)) + '' + el.className.substr(el.className.indexOf(pClass)+pClass.length); - } + // function remClass(el, pClass){ + // if( el.className.indexOf(pClass) > -1 ) // si la class de l'élement contient la classe à enlever + // el.className = el.className.substr(0, el.className.indexOf(pClass)) + '' + el.className.substr(el.className.indexOf(pClass)+pClass.length); + // } diff --git a/js/lib/adjust.js b/js/lib/adjust.js index 81f3a9b..9407bc4 100755 --- a/js/lib/adjust.js +++ b/js/lib/adjust.js @@ -6,4 +6,32 @@ NodeList.prototype.indexOf = HTMLCollection.prototype.indexOf = function(searche // si on a rien trouvé, on retourne -1 return -1; -}; \ No newline at end of file +}; + + +/* GESTION DE L'AJOUT/SUPPRESSION D'UNE CLASSE */ +function addClass(el, pClass){ + if( el.className.length > 0 && el.className != pClass ) el.className = el.className + ' ' + pClass; + else el.className = pClass; +} + +function remClass(el, pClass){ + if( el.className.indexOf(pClass) > -1 ) // si la class de l'élement contient la classe à enlever + el.className = el.className.substr(0, el.className.indexOf(pClass)) + '' + el.className.substr(el.className.indexOf(pClass)+pClass.length); +} + + +/* ANIMATION DE BOUNCE PENDANT 1 SEC */ +function makeBounce(buttonElement){ + // ajout de la classe + remClass(buttonElement, 'loading'); + addClass(buttonElement, 'bounce_error'); + addClass(buttonElement, 'pamp'); + + // suppression de la classe après 1 sec + setTimeout(function(){ + remClass(buttonElement, 'bounce_error'); + remClass(buttonElement, 'pamp'); + }, 1000); + +} \ No newline at end of file diff --git a/manager/career.php b/manager/career.php index a636400..36b70f6 100755 --- a/manager/career.php +++ b/manager/career.php @@ -200,6 +200,26 @@ class careerManager{ break; + /********************************************/ + /* modification des capitalisations d'un UE */ + /********************************************/ + case 'capitaliser': if( permission('admin') ){ + + $areSetParam = isset($request->etudiant) && isset($request->ue) && isset($request->semestre); // les arguments existent + $etudiantCheck = $areSetParam && checkParam($request->etudiant, 'utilisateur.identifiant'); // identifiant etudiant bon format + $semestreCheck = $etudiantCheck && checkParam($request->semestre, 'auto_increment_id'); // id semestre bon format + $ueCheck = $semestreCheck && checkParam($request->ue, 'auto_increment_id'); // id ue bon format + + if( $ueCheck ){ // si tout les paramètres sont bons + $answer->request = DataBase::getInstance()->capitaliserUE($request->ue, $request->semestre, $request->etudiant); + }else + $answer->request = 'param_error'; + + }else + $answer->request = 'permission_error'; + + break; + /****************************************************/ diff --git a/manager/database.php b/manager/database.php index 0fc60b3..505f725 100755 --- a/manager/database.php +++ b/manager/database.php @@ -38,12 +38,11 @@ class DataBase{ /* retourne une instance de la classe */ public static function getInstance(){ if( DataBase::$instance == null ){ - if( $_SERVER['HTTP_HOST'] == 'sid' ) // si co en local (xdrm) - DataBase::$instance = new DataBase("localhost", "sid2", "php", "Qt358nUdyeTxLDM8"); - else if( $_SERVER['HTTP_HOST'] == 'localhost' ) // si co en local (autres) - DataBase::$instance = new DataBase("localhost", "sid2", "root", ""); - else // si co en ligne - DataBase::$instance = new DataBase("mysql.hostinger.fr", "u712664263_sid", "u712664263_php", "Qt358nUdyeTxLDM8"); + + // chargement de la configuration du server SQL + $conf = json_decode(file_get_contents(__ROOT__.'/manager/conf.json'), true); + DataBase::$instance = new DataBase($conf['host'], $conf['dbname'], $conf['user'], $conf['password']); + } return DataBase::$instance; @@ -309,6 +308,63 @@ class DataBase{ + + /* effectue la capitalisation de l'ue + * @ue pour le semestre @semestre + * pour l'étudiant @etudiant + */ + public function capitaliserUE($ue, $semestre, $etudiant){ + // on vérifie l'existence des paramètres (etudiant, semestre, ue) + if( !semestreRepo::exists($semestre) ) return 'unknown_semestre'; + if( !groupRepo::forStudent($etudiant, $semestre) ) return 'unknown_user'; + if( !($ueInfo=ueRepo::info($ue)) ) return 'unknown_ue'; + + // on vérifie que ce semestre a bien l'ue donnée + $UEs = ueRepo::forStudent($etudiant, $semestre); + $UEUIDList = array(); + + foreach($UEs as $UE) + if( !in_array($UE['id'], $UEUIDList) ) + array_push($UEUIDList, $UE['id']); + + // si l'UE n'est pas dans ce semestre, on retourne une erreur + if( !in_array($ue, $UEUIDList) ) return 'unknown_ue'; + + + /* [1] On récupère les redoublements de ce semestre + ======================================================*/ + $redoublements = semestreRepo::getRedoublements($semestre, $etudiant); + + /* [2] On retire ceux qui n'ont pas l'UE + ======================================================*/ + foreach($redoublements as $iter_s=>$SEM){ + $listeUEs = ueRepo::forStudent($etudiant, $SEM['id_semestre']); + $hasUE = false; + // on vérifie que le semestre a bien l'UE + foreach($listeUEs as $UE) + if( $UE['id'] == $ue ) $hasUE = true; + + // s'il n'a pas l'UE, on le supprime + if( !$hasUE ) unset($redoublements[$iter_s]); + } + + /* [3] On applique les modifications + ======================================================*/ + $checker = true; + // on définit l'UE comme actif + $checker = $checker && ueRepo::capitalisation($semestre, $etudiant, $ue, true); + + // on définit l'UE dans les autres semestres comme inactif + foreach($redoublements as $red) + $checker = $checker && ueRepo::capitalisation($red['id_semestre'], $etudiant, $ue, false); + + + return ($checker) ? 'success' : 'error'; + + } + + + /*************************************************************************************/ /* _ _ _______ _____ _ _____ _____ _______ ______ _ _ _____ */ /* | | | |__ __|_ _| | |_ _|/ ____| /\|__ __| ____| | | | __ \ */ @@ -1004,9 +1060,25 @@ class DataBase{ $parcours = semestreRepo::getParcours($etudiantUID); + + // contiendra les couples [id_formation, rang] pour les semestres capitalisables + $listeSemestresCapitalisables = array(); + /* [1] Chaque semestre ==========================*/ foreach($parcours as $iter_s=>$semestre){ + // on récupère les id des UEs non pris en compte + $inactiveUE = explode(',', $semestre['inactive']); + // on supprime les entrées vides + foreach($inactiveUE as $i=>$UE) + if( strlen($UE) == 0 ) + unset($inactiveUE[$i]); + + // si des UEs non pris en compte, on ajoute le rang+formation à la liste + if( count($inactiveUE) > 0 ) + if( !in_array( array($semestre['id_formation'], $semestre['rang']), $listeSemestresCapitalisables) ) + array_push($listeSemestresCapitalisables, array($semestre['id_formation'], $semestre['rang'])); + $parcours[$iter_s]['UEs'] = ueRepo::forStudent($etudiantUID, $semestre['id']); /* CALCUL DE MOYENNE DU SEMESTRE */ @@ -1060,14 +1132,15 @@ class DataBase{ $parcours[$iter_s]['UEs'][$iter_ue]['moyenne'] = array('moyenne' => 20*$moyenneUE/$totalUE, 'base' => 20 ); - // on complète la moyenne du semestre si l'UE a une moyenne + // on complète la moyenne du semestre + // SI l'UE a une moyenne $tmpUE = $parcours[$iter_s]['UEs'][$iter_ue]; if( !is_bool($tmpUE['moyenne']) ){ $moyenneSemestre += $tmpUE['moyenne']['moyenne']/$tmpUE['moyenne']['base'] * $tmpUE['coefficient']; $totalSemestre += $tmpUE['coefficient']; - // le semestre est non compensable si la moyenne d'au moins un UE < 8 + // le semestre est non compensable si la moyenne d'au moins un UE < 8 if( 20*$tmpUE['moyenne']['moyenne']/$tmpUE['moyenne']['base'] < 8 ) $semestreCompensable = false; @@ -1080,10 +1153,15 @@ class DataBase{ /* ENREGISTREMENT DE LA MOYENNE DU SEMESTRE */ + // on enregistre les valeurs du calcul pour pouvoir calculer avec compensation + $parcours[$iter_s]['calculMoyenne'] = array( 'sum' => $moyenneSemestre, 'count' => $totalSemestre ); + if( $totalSemestre == 0 ) // si la somme vaut 0, on retourne FALSE $parcours[$iter_s]['moyenne'] = false; - else + else{ + // on enregistre la moyenne $parcours[$iter_s]['moyenne'] = array('moyenne' => 20*$moyenneSemestre/$totalSemestre, 'base' => 20 ); + } $parcours[$iter_s]['compensable'] = $semestreCompensable; @@ -1093,6 +1171,80 @@ class DataBase{ else $parcours[$iter_s]['compensation'] = false; + // on met la liste des id d'ue inactifs sous forme de tableau + $parcours[$iter_s]['inactive'] = $inactiveUE; + } + + + + + + + /* LISTE DES UES CAPITALISÉES PAR SEMESTRES REGROUPÉS (FORMATION+RANG) */ + // On ajoute toutes les UE capitalisées + foreach($listeSemestresCapitalisables as $i=>$formationRang){ + + // pour cette formation+rang, on récupère toutes les UEs + $listeUEs = array(); + $UEUIDS = array(); + $listeSemestresIndexes = array(); + + foreach($parcours as $iter_s=>$semestre){ + + // si fait partie de la formation+rang courante + if( $formationRang == array( $semestre['id_formation'], $semestre['rang'] ) ){ + + // on ajoute l'index du semestre à la liste + array_push($listeSemestresIndexes, $iter_s); + + // on ajoute chaque UE de ce semestre s'il est actif + foreach($semestre['UEs'] as $UE) + if( !in_array($UE['id'], $semestre['inactive']) ){ + if( array_search($UE['id'], $UEUIDS) === false ){ + // pour le premier UE (capitalisé) on s'assure de lui attribuer la capitalisation + DataBase::getInstance()->capitaliserUE($UE['id'], $semestre['id'], $etudiantUID); + array_push( $listeUEs, $UE ); + array_push( $UEUIDS, $UE['id'] ); + }//else // si UE existe déjà pour formation+rang, on créé la capitalisation du semestre (on le désactive) + } + } + + } + + // variables utiles pour la moyenne + $moyenneSemestre = 0; $totalSemestre = 0; + $semestreCompensable = true; $semestreCompensation = true; + + // pour chaque UE capitalisée + foreach($listeUEs as $iter_ue=>$UE){ + // si l'UE a une moyenne + if( !is_bool($UE['moyenne']) ){ + $moyenneSemestre += $UE['moyenne']['moyenne']/$UE['moyenne']['base'] * $UE['coefficient']; + $totalSemestre += $UE['coefficient']; + + // le semestre est non compensable si la moyenne d'au moins un UE < 8 + if( 20*$UE['moyenne']['moyenne']/$UE['moyenne']['base'] < 8 ) + $semestreCompensable = false; + + // semestreCompensé est VRAI si au moins un semestre est entre 8 et 10 + if( 20*$UE['moyenne']['moyenne']/$UE['moyenne']['base'] >= 8 && 20*$UE['moyenne']['moyenne']/$UE['moyenne']['base'] < 10 ) + $semestreCompensation = true; + } + } + + + // attribution des moyennes aux semestres concernés + foreach($listeSemestresIndexes as $index){ + if( $totalSemestre > 0 ) + $parcours[$index]['moyenne'] = array( 'moyenne' => 20*$moyenneSemestre/$totalSemestre, 'base' => 20 ); + else + $parcours[$index]['moyenne'] = array( 'moyenne' => 0, 'base' => 20 ); + + // on met à jour le semestre compensable, et compensation + $parcours[$index]['compensable'] = $semestreCompensable; + $parcours[$index]['compensation'] = $semestreCompensation; + } + } return $parcours; diff --git a/manager/index.php b/manager/index.php new file mode 100755 index 0000000..eff6aaf --- /dev/null +++ b/manager/index.php @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/manager/repo/controle.php b/manager/repo/controle.php index b0080b7..e09b1bb 100755 --- a/manager/repo/controle.php +++ b/manager/repo/controle.php @@ -71,7 +71,7 @@ class controleRepo{ $ctrlInfo = $getControleInfo->fetch(); if( !is_bool($ctrlInfo) ) // on retourne le résultat en supprimant les doublons à indices numériques s'il est ok - return DataBase::delNumeric( $ctrlInfo, true ); + return $ctrlInfo; else return array(); } diff --git a/manager/repo/group.php b/manager/repo/group.php index 60cade9..08dbb63 100755 --- a/manager/repo/group.php +++ b/manager/repo/group.php @@ -44,7 +44,7 @@ class groupRepo{ $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 ); + return $getGroupeInfo->fetch(); } @@ -232,7 +232,7 @@ class groupRepo{ ORDER BY g.nom"); $getGroupe->execute(array( ':etudiant' => $etudiant, ':semestre' => $semestre )); - return DataBase::delNumeric( $getGroupe->fetch(), true ); + return $getGroupe->fetch(); } diff --git a/manager/repo/index.php b/manager/repo/index.php new file mode 100755 index 0000000..0982349 --- /dev/null +++ b/manager/repo/index.php @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/manager/repo/module.php b/manager/repo/module.php index 61857ac..50a4564 100755 --- a/manager/repo/module.php +++ b/manager/repo/module.php @@ -41,7 +41,7 @@ class moduleRepo{ $getModuleInfo->execute(array( ':moduleUID' => $moduleUID )); // on retourne le résultat en supprimant les doublons à indices numériques - return DataBase::delNumeric( $getModuleInfo->fetch(), true ); + return $getModuleInfo->fetch(); } diff --git a/manager/repo/note.php b/manager/repo/note.php index f7130f1..4ef48c8 100755 --- a/manager/repo/note.php +++ b/manager/repo/note.php @@ -52,7 +52,7 @@ class noteRepo{ )); // on retourne le résultat en supprimant les doublons à indices numériques - return DataBase::delNumeric( $getUtilisateurInfo->fetch(), true ); + return $getUtilisateurInfo->fetch(); } diff --git a/manager/repo/semestre.php b/manager/repo/semestre.php index 0cc18cd..0e8fa5a 100755 --- a/manager/repo/semestre.php +++ b/manager/repo/semestre.php @@ -189,7 +189,7 @@ class semestreRepo{ $getSemestreInfo->execute(array( ':semestreUID' => $semestreUID )); // on retourne le résultat en supprimant les doublons à indices numériques - return DataBase::delNumeric( $getSemestreInfo->fetch(), true ); + return $getSemestreInfo->fetch(); } @@ -258,7 +258,7 @@ class semestreRepo{ * */ public static function getParcours($etudiant){ - $getSemestreListe = DataBase::getPDO()->prepare("SELECT DISTINCT s.id_semestre as id, f.id_formation, f.code, f.nom as formation, f.nb_semestres, s.nom as semestre, s.rang, s.annee, app.mention + $getSemestreListe = DataBase::getPDO()->prepare("SELECT DISTINCT s.id_semestre as id, f.id_formation, f.code, f.nom as formation, f.nb_semestres, s.nom as semestre, s.rang, s.annee, app.mention, app.inactive FROM formation as f, semestre as s, appartenance as app WHERE s.id_formation = f.id_formation AND app.id_semestre = s.id_semestre @@ -444,7 +444,7 @@ class semestreRepo{ FROM semestre as s, mcc_ue GROUP BY s.annee"); - return DataBase::delNumeric( $getLastMccYear->fetch(), true ); + return $getLastMccYear->fetch(); } @@ -568,4 +568,47 @@ class semestreRepo{ return $prev; } + /* RETOURNE LES SEMESTRES EQUIVALENTS (REDOUBLÉS) + * + * @semestre UID du semestre de base + * @etudiant UID de l'étudiant en question + * + * + * @return redoublements Retourne un tableau contenant les UIDs des semestre équivalents + * @return error Retourne FAUX si une erreur occure + * + */ + public static function getRedoublements($semestre, $etudiant){ + /* [1] On récupère les informations du semestre + =================================================*/ + $getSemestreInfo = DataBase::getPDO()->prepare("SELECT DISTINCT s.* + FROM semestre as s, appartenance as app + WHERE s.id_semestre = app.id_semestre + AND s.id_semestre = :semestre + AND app.id_etudiant = :etudiant"); + $getSemestreInfo->execute(array( ':semestre' => $semestre, ':etudiant' => $etudiant )); + + // aucun résultat, on retourne une erreur + if( !($semestreInfo=$getSemestreInfo->fetch()) ) return 'unknown_semestre'; + + /* [2] On cherche les semestre redoublés + =================================================*/ + $getRedoublements = DataBase::getPDO()->prepare("SELECT s.id_semestre + FROM semestre as s, appartenance as app + WHERE s.id_semestre = app.id_semestre + AND s.id_formation = :formation + AND s.rang = :rang + AND app.id_etudiant = :etudiant + AND s.id_semestre <> :semestre + ORDER BY s.annee, s.rang ASC"); + $getRedoublements->execute(array( + ':formation' => $semestreInfo['id_formation'], + ':rang' => $semestreInfo['rang'], + ':etudiant' => $etudiant, + ':semestre' => $semestre + )); + + return $getRedoublements->fetchAll(); + } + } \ No newline at end of file diff --git a/manager/repo/ue.php b/manager/repo/ue.php index 7fc8a1d..1a50411 100755 --- a/manager/repo/ue.php +++ b/manager/repo/ue.php @@ -41,7 +41,7 @@ class ueRepo extends DBAccess{ $getUEInfo->execute(array( ':UEUID' => $UEUID )); // on retourne le résultat en supprimant les doublons à indices numériques - return DataBase::delNumeric( $getUEInfo->fetch(), true ); + return $getUEInfo->fetch(); } @@ -56,7 +56,7 @@ class ueRepo extends DBAccess{ * */ public static function forStudent($etudiant, $semestre){ - // on récupère les modules + // on récupère les UEs $getUesForStudent = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.nom as semestre, s.annee, ue.nom, ue.libelle, mcc_ue.coefficient FROM appartenance as app, semestre as s, mcc_ue, ue WHERE app.id_semestre = s.id_semestre @@ -247,4 +247,62 @@ class ueRepo extends DBAccess{ } + + /* DEFINIT SI UN UE EST PRIS EN COMPTE OU NON (CAPITALISATION) + * + * @semestre UID du semestre en question + * @etudiant UID de l'étudiant en question + * @ue UID de l'UE en question + * @active VRAI si on veut qu'il soit pris en compte, NON sinon + * + * + * @return state VRAI si les changements sont pris en compte, sinon FAUX + * + */ + public static function capitalisation($semestre, $etudiant, $ue, $active){ + /* [1] On récupère l'appartenance + ==========================================================================*/ + $getUEState = DataBase::getPDO()->prepare("SELECT * + FROM appartenance + WHERE id_semestre = :semestre + AND id_etudiant = :etudiant"); + $getUEState->execute(array( ':semestre' => $semestre, ':etudiant' => $etudiant )); + + // si on trouve aucune appartenance, on retourne FAUX + if( !($ueState=$getUEState->fetch()) ) return false; + + $stateArray = explode(',', $ueState['inactive'] ); + // on supprime les entrées vides + foreach($stateArray as $i=>$state) + if( strlen($state) == 0 ) + unset($stateArray[$i]); + + /* [2] On met à jour "inactive" pour enlever ou mettre l'UE + ==========================================================================*/ + if( $active && in_array($ue, $stateArray) ) // si on doit enlever l'ue et qu'il y est + array_splice($stateArray, array_search($ue, $stateArray), 1 ); // => on enleve l'ue + + if( !$active && !in_array($ue, $stateArray) ) // si on doit ajouter l'ue et qu'il n'y est pas encore + array_push($stateArray, $ue); // => on ajoute l'ue + + $stateString = implode(',', $stateArray); + + /* [3] On met à jour dans la base de données + ==========================================================================*/ + $setUEState = DataBase::getPDO()->prepare("UPDATE appartenance + SET inactive = :uestate + WHERE id_appartenance = :appartenance"); + $setUEState->execute(array( ':uestate' => $stateString, ':appartenance' => $ueState['id_appartenance'] )); + + /* [4] On vérifie que la modification a bien été faite + ==========================================================================*/ + $getVerifState = DataBase::getPDO()->prepare("SELECT inactive FROM appartenance WHERE id_appartenance = :appartenance"); + $getVerifState->execute(array( ':appartenance' => $ueState['id_appartenance'] )); + + if( !($verifState=$getVerifState->fetch()) ) return false; + + return $verifState['inactive'] == $stateString; + + } + } \ No newline at end of file diff --git a/manager/repo/user.php b/manager/repo/user.php index 1e60797..601526f 100755 --- a/manager/repo/user.php +++ b/manager/repo/user.php @@ -85,7 +85,7 @@ class userRepo{ $getUtilisateurInfo->execute(array( ':utilisateurUID' => $utilisateurUID )); // on retourne le résultat en supprimant les doublons à indices numériques - return DataBase::delNumeric( $getUtilisateurInfo->fetch(), true ); + return $getUtilisateurInfo->fetch(); } diff --git a/page/_JS/career.js b/page/_JS/career.js index d35d06b..1c2ba94 100755 --- a/page/_JS/career.js +++ b/page/_JS/career.js @@ -226,6 +226,8 @@ if( document.querySelector('#CONTAINER section[name=controlesenseignants]') != n API.send(request, function(response){ // on gère la réponse de API, si déplacement effectué, on recharge la page if( response.request == 'success' ) reload(); + // si réponse erreur, on le signale physiquement + else makeBounce(obj.button); }); } @@ -270,6 +272,7 @@ if( document.querySelector('#CONTAINER section[name=controlesenseignants]') != n API.send(request, function(response){ // on gère la réponse de API if( response.request == 'success' ) // si on a une réponse positive, on incrémente le nombre de succès reload(); + else makeBounce(e.target); }); }, false); @@ -369,6 +372,8 @@ if( document.querySelector('#CONTAINER section[name=allcontroles]') != null ){ / API.send(request, function(response){ // on gère la réponse de API, si déplacement effectué, on recharge la page if( response.request == 'success' ) reload(); + // si réponse erreur, on le signale physiquement + else makeBounce(obj.button); }); } @@ -413,6 +418,8 @@ if( document.querySelector('#CONTAINER section[name=allcontroles]') != null ){ / API.send(request, function(response){ // on gère la réponse de API if( response.request == 'success' ) // si on a une réponse positive, on incrémente le nombre de succès reload(); + // si réponse erreur, on le signale physiquement + else makeBounce(e.target); }); }, false); @@ -479,9 +486,9 @@ if( exportJury != null ){ if( answer2.request == 'success' ){ // le fichier a bien été généré, on lance le téléchargement document.location = answer2.pathfile; reload(); - } + }else makeBounce(e.target); }); - } + }else makeBounce(e.target); }); @@ -543,13 +550,19 @@ if( importJury != null ){ if( f.request == 'success' ){ console.log('liste intégrée'); reload(); - }else console.log('integration error'); + }else{ + console.log('integration error'); + makeBounce(e.target); + } }); - }else console.log('import error'); + }else{ + console.log('import error'); + makeBounce(e.target); + } }); - } + }else makeBounce(e.target); } @@ -591,6 +604,7 @@ if( publicationControles.length > 0 ){ // on envoie la requête vers l'API API.send(request, function(answer){ if( answer.request == 'success' ) reload(); + else makeBounce(e.target); }); } }, false); @@ -708,13 +722,19 @@ if( importNotes.length > 0 ){ if( f.request == 'success' ){ console.log('liste intégrée'); reload(); - }else console.log('integration error'); + }else{ + console.log('integration error'); + makeBounce(boutonImport); + } }); - }else console.log('import error'); + }else{ + console.log('import error'); + makeBounce(boutonImport); + } }); - } + }else makeBounce(boutonImport); } @@ -726,8 +746,38 @@ if( importNotes.length > 0 ){ } +/****************************************/ +/* GESTION DE LA CAPITALISATION D'UN UE */ +/****************************************/ +var capitalisationUE = document.querySelectorAll('.capitalisation_ue[data-stre][data-ue][data-etu]'); +// si il y en a sur la page +if( capitalisationUE.length > 0 ){ + for( var i = 0 ; i < capitalisationUE.length ; i++ ){ + + capitalisationUE[i].addEventListener('click', function(e){ + + // on créé la requête + request = { + level_0: 'career', + level_1: 'capitaliser', + semestre: e.target.dataset.stre, + ue: e.target.dataset.ue, + etudiant: e.target.dataset.etu + }; + + // on envoie la requête + API.send(request, function(answer){ + if( answer.request == 'success' ) reload(); + else makeBounce(e.target); + }); + + }, false); + + } + +} diff --git a/page/_JS/groups.js b/page/_JS/groups.js index 0f34a88..c89eeec 100755 --- a/page/_JS/groups.js +++ b/page/_JS/groups.js @@ -85,6 +85,7 @@ if( canMoveStudents ){ // si c'set l'admin // on envoie la requête API.send(request, function(answer){ if( answer.request == 'success' ) reload(); + else makeBounce(e.target); }); }, false); @@ -231,9 +232,9 @@ if( exportInscrits != null ){ if( answer2.request == 'success' ){ // le fichier a bien été généré, on lance le téléchargement document.location = answer2.pathfile; reload(); - } + }else makeBounce(e.target); }); - } + }else makeBounce(e.target); }); @@ -282,24 +283,31 @@ if( importInscrits != null ){ /* [2] LECTURE DU FICHIER =======================================*/ var request = { level_0: 'excel', level_1: 'import_inscrits' }; - API.send(request, function(e){ - console.log('[2] PARSE=>'+e.request); - if( e.request == 'success' ){ + API.send(request, function(ex){ + console.log('[2] PARSE=>'+ex.request); + if( ex.request == 'success' ){ /* [3] INTÉGRATION À LA BDD =======================================*/ - requestIntegration = { level_0: 'groups', level_1: 'addUserlist', rang: rang, annee: annee, formationList: e.formationList }; + requestIntegration = { level_0: 'groups', level_1: 'addUserlist', rang: rang, annee: annee, formationList: ex.formationList }; API.send( requestIntegration, function(f){ console.log('[3] INTEGRATION=>'+f.request); if( f.request == 'success' ){ console.log('liste intégrée'); reload(); - }else console.log('integration error'); + }else{ + console.log('integration error'); + makeBounce(e.target.parentNode); + } }); - }else console.log('import error'); + }else{ + console.log('import error'); + makeBounce(e.target.parentNode); + console.log( e.target ); + } }); - } + }else makeBounce(e.target.parentNode); } diff --git a/page/_JS/modules.js b/page/_JS/modules.js index 6aed31e..0180f6c 100755 --- a/page/_JS/modules.js +++ b/page/_JS/modules.js @@ -158,13 +158,13 @@ if( importMcc != null ){ if( f.request == 'success' ){ console.log('mcc intégré'); reload(); - } + }else makeBounce(e.target); }); - } + }else makeBounce(e.target); }); - } + }else makeBounce(e.target); } @@ -217,6 +217,7 @@ if( creerSemestre != null ){ // si la page est présente API.send(request, function(e){ if( e.request == 'success' ) reload(); + else makeBounce(e.target); }); @@ -251,6 +252,7 @@ if( cloneMCC != null ){ // si la page est présente API.send(request, function(e){ if( e.request == 'success' ) reload(); + else makeBounce(e.target); }); diff --git a/page/_JS/settings.js b/page/_JS/settings.js index bf2456f..c6c5453 100755 --- a/page/_JS/settings.js +++ b/page/_JS/settings.js @@ -138,8 +138,11 @@ if( roleSection != null ){ }; API.send(request, function(answer){ - if( answer.request != 'success' ) console.log('erreur de changement de rôle (admin)'); - reload(); + if( answer.request != 'success' ){ + console.log('erreur de changement de rôle (admin)'); + makeBounce(e.target); + }else + reload(); }); } @@ -169,8 +172,11 @@ if( roleSection != null ){ }; API.send(request, function(answer){ - if( answer.request != 'success' ) console.log('erreur de changement de rôle (référent)'); - reload(); + if( answer.request != 'success' ){ + console.log('erreur de changement de rôle (référent)'); + makeBounce(e.target); + }else + reload(); }); } @@ -206,8 +212,11 @@ if( roleSection != null ){ }; API.send(request, function(answer){ - if( answer.request != 'success' ) console.log('erreur de changement de rôle'); - reload(); + if( answer.request != 'success' ){ + console.log('erreur de changement de rôle'); + makeBounce(e.target); + }else + reload(); }); } @@ -241,8 +250,11 @@ if( roleSection != null ){ }; API.send(request, function(answer){ - if( answer.request != 'success' ) console.log('erreur de changement de rôle'); - reload(); + if( answer.request != 'success' ){ + console.log('erreur de changement de rôle'); + makeBounce(e.target); + }else + reload(); }); } @@ -273,8 +285,11 @@ if( roleSection != null ){ }; API.send(request, function(answer){ - if( answer.request != 'success' ) console.log('erreur de changement de rôle'); - reload(); + if( answer.request != 'success' ){ + console.log('erreur de changement de rôle'); + makeBounce(e.target); + }else + reload(); }); } @@ -320,7 +335,7 @@ if( changeYear.select != null && changeYear.button != null ){ if( answer.request == 'success' ){ reload(); // on recharge la page updateCurrentYear(request.year); - } + }else makeBounce(e.target); }); }, false); diff --git a/page/career.php b/page/career.php index 78659d4..bd10955 100755 --- a/page/career.php +++ b/page/career.php @@ -440,9 +440,9 @@ elseif( permission('teacher') ){ // si enseignant et qu'un contrôle est spécif echo ""; if( $user['note'] != null ) // s'il a déjà une note, on la met par défaut - echo ""; + echo ""; else // sinon on laisse le champ vide - echo ""; + echo ""; echo "
enregistrer
"; echo ""; @@ -1113,11 +1113,13 @@ if( (permission('master') || permission('admin')) && $etudiantOpt != null ){ $request->etudiant = $etudiantOpt; careerManager::switch_level_1($request, $answer); - + if( $answer->request == 'success' ){ // si on a bien récupéré les UE/notes //////////////////////////////////////////////////////////////////////////////// echo "
"; + + // on récupère $semestreOpt original $semestreOpt = $semestreOptBis; @@ -1142,13 +1144,16 @@ if( (permission('master') || permission('admin')) && $etudiantOpt != null ){ $parcoursChart[$index]['UEs'] = array(); foreach($semestre['UEs'] as $UE){ array_push( $parcoursChart[$index]['UEs'], - array( 'id' => $UE['id'], 'moyenne' => $UE['moyenne'] ) + array( 'id' => $UE['id'], 'moyenne' => $UE['moyenne'], 'capitalisation' => !in_array($UE['id'], $semestre['inactive']) ) ); } } /* ON GENERE LE DU PARCOURS */ displayParcours( $parcoursChart, $semestreOpt); + // echo "
Importer le dossier
"; + + // pour chaque semestres (tous si aucun semestreOpt, sinon uniquement le selectionné) foreach($answer->parcours as $semestre){ if( $semestreOpt == null || $semestreOpt == $semestre['id'] ){ @@ -1182,21 +1187,31 @@ if( (permission('master') || permission('admin')) && $etudiantOpt != null ){ /* MOYENNE MODULE */ if( is_bool($module['moyenne']) ) // si aucune note pour ce controle on affiche 'Pas de note' - echo "Pas de moyenne"; + echo "Pas de moyenne"; else // si une note, alors on l'affiche - echo "Moyenne module: ".number_format($module['moyenne']['moyenne'], 2)." / ".$module['moyenne']['base'].""; + echo "Moyenne module: ".number_format($module['moyenne']['moyenne'], 2)." / ".$module['moyenne']['base'].""; /* MOYENNE UE */ - if( is_bool($UE['moyenne']) ) // si aucune note pour cet UE on affiche 'Pas de moyenne' - echo "Pas de moyenne"; - else // si un moyenne, alors on l'affiche - echo "Moyenne UE: ".number_format($UE['moyenne']['moyenne'], 2)." / ".$UE['moyenne']['base'].""; + // si UE non inactif dans la capitalisation, on affiche + if( !in_array($UE['id'], $semestre['inactive']) ){ + + if( is_bool($UE['moyenne']) ) // si aucune note pour cet UE on affiche 'Pas de moyenne' + echo "Pas de moyenne"; + else // si un moyenne, alors on l'affiche + echo "Moyenne UE: ".number_format($UE['moyenne']['moyenne'], 2)." / ".$UE['moyenne']['base'].""; + + // UE pas utilisé dans la capitalisation, on affiche pas + }else{ // sert de lien pour l'activer dans la capitalisation + echo "Non pris en compte"; + } + + /* MOYENNE SEMESTRE */ if( is_bool($semestre['moyenne']) ) // si aucune note pour ce semestre on affiche 'Pas de moyenne' - echo "Pas de moyenne"; + echo "Pas de moyenne"; else // si un moyenne, alors on l'affiche - echo "Moyenne semestre: ".number_format($semestre['moyenne']['moyenne'], 2)." / ".$semestre['moyenne']['base'].""; + echo "Moyenne semestre: ".number_format($semestre['moyenne']['moyenne'], 2)." / ".$semestre['moyenne']['base'].""; echo ''; diff --git a/page/groups.php b/page/groups.php index f14ce52..5e3942c 100755 --- a/page/groups.php +++ b/page/groups.php @@ -693,7 +693,6 @@ if( permission('master') || permission('admin') ){ echo ""; echo "
"; - // echo "
Importer une liste
"; echo "
Importer une liste
"; diff --git a/page/index.php b/page/index.php new file mode 100755 index 0000000..eff6aaf --- /dev/null +++ b/page/index.php @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/files/admin2_export_jury.xlsx b/src/files/admin2_export_jury.xlsx new file mode 100755 index 0000000..bbfe941 Binary files /dev/null and b/src/files/admin2_export_jury.xlsx differ diff --git a/src/files/admin2_export_liste_etudiants.xlsx b/src/files/admin2_export_liste_etudiants.xlsx new file mode 100644 index 0000000..0fedb28 Binary files /dev/null and b/src/files/admin2_export_liste_etudiants.xlsx differ diff --git a/src/files/admin2_import_inscrits.xlsx b/src/files/admin2_import_inscrits.xlsx new file mode 100755 index 0000000..bb8094e Binary files /dev/null and b/src/files/admin2_import_inscrits.xlsx differ diff --git a/src/files/admin2_import_jury.xlsx b/src/files/admin2_import_jury.xlsx new file mode 100755 index 0000000..c8eb2f7 Binary files /dev/null and b/src/files/admin2_import_jury.xlsx differ diff --git a/src/files/admin2_import_mcc.xlsx b/src/files/admin2_import_mcc.xlsx new file mode 100755 index 0000000..7c391af Binary files /dev/null and b/src/files/admin2_import_mcc.xlsx differ diff --git a/src/files/modele_import_jury.xlsx b/src/files/modele_import_jury.xlsx index 7077e96..1ac8096 100755 Binary files a/src/files/modele_import_jury.xlsx and b/src/files/modele_import_jury.xlsx differ diff --git a/src/files/modele_import_notes.xlsx b/src/files/modele_import_notes.xlsx old mode 100644 new mode 100755 diff --git a/src/svg_v2.php b/src/svg_v2.php index ab87925..83ac62c 100755 --- a/src/svg_v2.php +++ b/src/svg_v2.php @@ -116,6 +116,10 @@ function displayParcours($parcours, $selected){ }else // si pas de note, on met la couleur par défaut $themeColor = $normColor; + // si le semestre n'est pas pris en compte dans la capitalisation, on l'affiche en violet + if( !$UE['capitalisation'] ) + $themeColor = '#b18cff'; + echo ""; } } diff --git a/test.php b/test.php index 565410c..a8c06a2 100755 --- a/test.php +++ b/test.php @@ -48,7 +48,23 @@ debug(); // var_dump(DataBase::getInstance()->getSemestreInfoFromTime( strtotime('2017-01-31') )); +// on récupère les année équivalentes (redoublées) pour un semestre +// var_dump( semestreRepo::getRedoublements(252, 'Etud100') ); +// 35 = UE1, +// on veut que l'ue d'id 35 compte pour le semestre 252 et que les semestres de même rang et formation soient ignorés +/*******************************************************/ +// $request = new stdClass; $answer = new stdClass; +// $request->level_1 = 'capitaliser'; +// $request->ue = 37; +// $request->semestre = 276; +// $request->etudiant = 'Etud100'; + +// careerManager::switch_level_1($request, $answer); +// var_dump( $answer ); +/*******************************************************/ + +var_dump( $_SERVER['HTTP_HOST'] ); // $ts = time(); // $date1 = date('Y-m-d', $ts); // $date2 = date('Y-m-d', strtotime($date1.' - 1 year')); diff --git a/xdoc/MCD.png b/xdoc/MCD.png index 4a4fd30..e796996 100755 Binary files a/xdoc/MCD.png and b/xdoc/MCD.png differ diff --git a/xdoc/empty.sql b/xdoc/empty.sql index 60f6908..d1dbb98 100755 --- a/xdoc/empty.sql +++ b/xdoc/empty.sql @@ -3,7 +3,7 @@ -- http://www.phpmyadmin.net -- -- Client: localhost --- Généré le: Ven 08 Janvier 2016 à 10:51 +-- Généré le: Ven 08 Janvier 2016 à 23:38 -- Version du serveur: 5.5.46-0ubuntu0.14.04.2 -- Version de PHP: 5.5.9-1ubuntu4.14 @@ -32,6 +32,7 @@ CREATE TABLE IF NOT EXISTS `appartenance` ( `id_groupe` int(11) NOT NULL, `id_semestre` int(11) NOT NULL, `mention` varchar(3) DEFAULT NULL, + `inactive` varchar(50) NOT NULL DEFAULT '', PRIMARY KEY (`id_appartenance`), KEY `id_etudiant` (`id_etudiant`), KEY `id_groupe` (`id_groupe`), @@ -40,7 +41,7 @@ CREATE TABLE IF NOT EXISTS `appartenance` ( KEY `id_etudiant_2` (`id_etudiant`), KEY `id_groupe_2` (`id_groupe`), KEY `id_semestre_2` (`id_semestre`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5651 ; +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5950 ; -- -- RELATIONS POUR LA TABLE `appartenance`: @@ -68,7 +69,7 @@ CREATE TABLE IF NOT EXISTS `controle` ( `publication` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id_controle`), KEY `id_mcc_module` (`id_mcc_module`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1309 ; +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1399 ; -- -- RELATIONS POUR LA TABLE `controle`: @@ -92,7 +93,7 @@ CREATE TABLE IF NOT EXISTS `enseignement` ( KEY `id_enseignant` (`id_enseignant`), KEY `id_mcc_module` (`id_mcc_module`), KEY `id_groupe` (`id_groupe`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=229 ; +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=243 ; -- -- RELATIONS POUR LA TABLE `enseignement`: @@ -116,7 +117,7 @@ CREATE TABLE IF NOT EXISTS `formation` ( `nom` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `nb_semestres` int(11) NOT NULL DEFAULT '2', PRIMARY KEY (`id_formation`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=106 ; +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=114 ; -- -------------------------------------------------------- @@ -176,7 +177,6 @@ INSERT INTO `groupe` (`id_groupe`, `nom`) VALUES (48, 'S7M'), (49, 'S8M'), (50, 'S9M'), -(51, 'S10M'), (52, 'S1G'), (53, 'S1H'), (54, 'S1I'), @@ -261,18 +261,6 @@ INSERT INTO `groupe` (`id_groupe`, `nom`) VALUES (133, 'S9J'), (134, 'S9K'), (135, 'S9L'), -(136, 'S10A'), -(137, 'S10B'), -(138, 'S10C'), -(139, 'S10D'), -(140, 'S10E'), -(141, 'S10F'), -(142, 'S10G'), -(143, 'S10H'), -(144, 'S10I'), -(145, 'S10J'), -(146, 'S10K'), -(147, 'S10L'), (148, 'INGBD1 S2'), (149, 'INSIQ1 S2'), (150, 'ITINAS S2'), @@ -280,16 +268,7 @@ INSERT INTO `groupe` (`id_groupe`, `nom`) VALUES (152, 'ITINN2 S2'), (153, 'ITINS1 S2'), (154, 'ITINT2 S2'), -(155, 'ITINT3 S2'), -(156, 'ITINN1 S0'), -(157, 'INGBD1 S10'), -(158, 'INSIQ1 S10'), -(159, 'ITINAS S10'), -(160, 'ITINN1 S10'), -(161, 'ITINN2 S10'), -(162, 'ITINS1 S10'), -(163, 'ITINT2 S10'), -(164, 'ITINT3 S10'); +(155, 'ITINT3 S2'); -- -------------------------------------------------------- @@ -305,7 +284,7 @@ CREATE TABLE IF NOT EXISTS `mcc_module` ( PRIMARY KEY (`id_mcc_module`), KEY `id_mcc_ue` (`id_mcc_ue`), KEY `id_module` (`id_module`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=599 ; +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=638 ; -- -- RELATIONS POUR LA TABLE `mcc_module`: @@ -329,7 +308,7 @@ CREATE TABLE IF NOT EXISTS `mcc_ue` ( PRIMARY KEY (`id_mcc_ue`), KEY `id_semestre` (`id_semestre`), KEY `id_ue` (`id_ue`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=93 ; +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=99 ; -- -- RELATIONS POUR LA TABLE `mcc_ue`: @@ -350,7 +329,7 @@ CREATE TABLE IF NOT EXISTS `module` ( `nom` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `libelle` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id_module`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=222 ; +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=235 ; -- -------------------------------------------------------- @@ -366,7 +345,7 @@ CREATE TABLE IF NOT EXISTS `note` ( PRIMARY KEY (`id_note`), KEY `id_appartenance` (`id_appartenance`), KEY `id_controle` (`id_controle`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=493 ; +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=507 ; -- -- RELATIONS POUR LA TABLE `note`: @@ -390,7 +369,7 @@ CREATE TABLE IF NOT EXISTS `semestre` ( `annee` year(4) NOT NULL, PRIMARY KEY (`id_semestre`), KEY `id_formation` (`id_formation`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=249 ; +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=267 ; -- -- RELATIONS POUR LA TABLE `semestre`: @@ -431,7 +410,7 @@ CREATE TABLE IF NOT EXISTS `ue` ( `nom` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `libelle` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id_ue`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=35 ; +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=37 ; -- -------------------------------------------------------- @@ -456,7 +435,7 @@ CREATE TABLE IF NOT EXISTS `utilisateur` ( -- INSERT INTO `utilisateur` (`identifiant`, `prenom`, `nom`, `sexe`, `mail`, `mdp`, `droits`) VALUES -('admin', 'monsieur', 'administrateur', 1, 'admin@iut-tlse3.fr', 'lkjdsqlkjdlqksjdlqksjdqlksdjlqksjdqj', 'teacher,admin'), +('admin', 'monsieur', 'administrateur', 1, 'admin@iut-tlse3.fr', 'lkjdsqlkjdlqksjdlqksjdqlksdjlqksjdqj', 'admin'), ('admin2', 'madame', 'administratrice', 0, 'mme.admin@iut-tlse3.fr', 'lkjdsqlkjdlqksjdlqksjdqlksdjlqksjdqj', 'admin'), ('lbh1609a', 'Hervé', 'LEBLANC', 1, 'herve.leblanc@iut-tlse3.fr', 'lqkjsdlkjsdlkjqsdlkjqsdlkjqsdkjqsldjqsj', 'teacher'), ('ref', 'mlle', 'référente', 0, 'ref@ref.ref', 'sqldkmsqldksqmlkd', 'master'); diff --git a/xdoc/git.graph b/xdoc/git.graph old mode 100644 new mode 100755