Import du MCC en cours (phase de déploiement)

This commit is contained in:
xdrm-brackets 2015-11-21 18:09:03 +01:00
parent 6cb50fdac6
commit f9f79e1e49
12 changed files with 226 additions and 100 deletions

View File

@ -61,6 +61,14 @@ require_once __ROOT__.'/manager/security.php';
case 'modules':
if( isset($request->level_1) ){ require_once __ROOT__.'/manager/modules.php'; modules_switch_level_1($request, $answer); }
else { $answer->request = 'missing_level_1'; }
break;
/**********/
/* MODULE */
/**********/
case 'phpExcel':
if( isset($request->level_1) ){ require_once __ROOT__.'/manager/phpExcel.php'; xlsx_switch_lvl1($request, $answer); }
else { $answer->request = 'missing_level_1'; }
break;

View File

@ -279,9 +279,26 @@ td select > option{ padding: 0; }
/* extra */
cursor: pointer;
/* scroll */
overflow: hidden;
}
.confirm [type=file]{
/* position */
display: block;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
/* extra */
opacity: 0;
cursor: pointer;
}
/* @all */

View File

@ -197,6 +197,28 @@ require_once __ROOT__.'/manager/database.php';
/**********************/
/* intégration du MCC */
/**********************/
case 'setMCC': if( permission('admin') ){
if( isset($request->mcc) && isset($request->semestre) && is_numeric($request->semestre) ){ // si tout les paramètres sont bons
DataBase::getInstance()->setMCC($request->semestre, $request->mcc);
$answer->request = 'success';
}else
$answer->request = 'param_error';
}else
$answer->request = 'permission_error';
break;
/***********/
/* DEFAULT */
/***********/

View File

@ -123,7 +123,7 @@ class DataBase{
* @mcc<Array> contient toutes les données du MCC
*
*/
public static function setMCC($semestre, $mcc){debug();
public static function setMCC($semestre, $mcc){
foreach($mcc as $ue){

16
manager/import.php Executable file
View File

@ -0,0 +1,16 @@
<?php define('__ROOT__', dirname(dirname(__FILE__)) ); require_once __ROOT__.'/manager/security.php';
if( isset($_FILES['file']) && isset($_POST['filename']) ){
$path = __ROOT__.'/src/files/';
$targetFile = $_SESSION['identifiant'].'_'.$_POST['filename'].'.xlsx';
if( move_uploaded_file($_FILES["file"]["tmp_name"], $path.$targetFile) )
echo "success";
else
echo "error";
}else
echo 'missing_param';
?>

View File

@ -276,118 +276,114 @@ function xlsx_switch_lvl1($request, $answer){
/**********************/
case 'import_mcc':
if(isset($request->docPath)) {
// $inputFileType = 'Excel2007';
$inputFileName = $request->docPath;
// Charger le fichier en tant que document Excel
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName);
// Get sur la première case
$sheet = $objPHPExcel->getSheet(0);
$mccData = $sheet->rangeToArray('A2:'.$sheet->getHighestColumn().''.$sheet->getHighestRow());
$filePath = __ROOT__.'/src/files/'.$_SESSION['identifiant'].'_import_mcc.xlsx';
/* permet d'éviter les doublons */
$mcc = array(); // contiendra le tableau de retour
$ueuid = array();
// file_put_contents($filePath, $file['file']);
/****************************/
/* TRAITEMENT SUR LES CASES */
/****************************/
foreach($mccData as $line){
// // $inputFileType = 'Excel2007';
// $inputFileName = $request->docPath;
// Charger le fichier en tant que document Excel
$objPHPExcel = PHPExcel_IOFactory::load($filePath);
// Get sur la première case
$sheet = $objPHPExcel->getSheet(0);
$mccData = $sheet->rangeToArray('A2:'.$sheet->getHighestColumn().''.$sheet->getHighestRow());
if( $line[0] != null ){
/* permet d'éviter les doublons */
$mcc = array(); // contiendra le tableau de retour
$ueuid = array();
/****************************/
/* TRAITEMENT SUR LES CASES */
/****************************/
foreach($mccData as $line){
if( $line[0] != null ){
/* [1] On récupère les données de l'UE, si les champs sont définis
/* [1] On récupère les données de l'UE, si les champs sont définis
=========================================================================*/
if( /*$line[0] != null && */ $line[1] != null && $line[2] != null ){
if( $line[0] != null && !in_array($line[0], $ueuid) ){ // on créé l'UE dans la liste s'il n'y est pas déjà
array_push( // on ajoute l'UE
$mcc,
array(
'nom' => $line[0],
'libelle' => $line[1],
'coefficient' => $line[2],
'modules' => array(),
'moduid' => array()
)
);
array_push($ueuid, $line[0]); // on dis qu'on a déjà enregistré l'ue
}
if( $line[0] != null )
$ueIndex = array_search($line[0], $ueuid);
/* [2] On récupère les données du module, si les champs sont définis
=========================================================================*/
if( /*$line[0] != null && */ $line[1] != null && $line[2] != null ){
if( $line[0] != null && !in_array($line[0], $ueuid) ){ // on créé l'UE dans la liste s'il n'y est pas déjà
if( /*$line[3] != null && */ $line[4] != null && $line[5] != null ){
if( $line[3] != null && !in_array($line[3], $mcc[$ueIndex]['moduid']) ){ // on créé le module dans la liste de cet UE s'il n'y est pas déjà
array_push( // on ajoute l'UE
$mcc,
$mcc[$ueIndex]['modules'],
array(
'nom' => $line[0],
'libelle' => $line[1],
'coefficient' => $line[2],
'modules' => array(),
'moduid' => array()
'nom' => $line[3],
'libelle' => $line[4],
'coefficient' => $line[5],
'controles' => array(),
'ctrluid' => array()
)
);
array_push($ueuid, $line[0]); // on dis qu'on a déjà enregistré l'ue
array_push($mcc[$ueIndex]['moduid'], $line[3]); // on dis qu'on a déjà enregistré le module
}
if( $line[0] != null )
$ueIndex = array_search($line[0], $ueuid);
/* [2] On récupère les données du module, si les champs sont définis
=========================================================================*/
if( /*$line[3] != null && */ $line[4] != null && $line[5] != null ){
if( $line[3] != null && !in_array($line[3], $mcc[$ueIndex]['moduid']) ){ // on créé le module dans la liste de cet UE s'il n'y est pas déjà
array_push( // on ajoute l'UE
$mcc[$ueIndex]['modules'],
array(
'nom' => $line[3],
'libelle' => $line[4],
'coefficient' => $line[5],
'controles' => array(),
'ctrluid' => array()
)
);
array_push($mcc[$ueIndex]['moduid'], $line[3]); // on dis qu'on a déjà enregistré le module
}
}
if( $line[3] != null )
$modIndex = array_search($line[3], $mcc[$ueIndex]['moduid']);
/* [3] On récupère les contrôles du module, si les champs sont définis
=========================================================================*/
if( $line[6] != null && $line[7] != null && $line[8] != null ){
if( !in_array($line[6], $mcc[$ueIndex]['modules'][$modIndex]['ctrluid']) ){ // on créé le contrôle dans la liste de ce module s'il n'y est pas déjà
array_push( // on ajoute l'UE
$mcc[$ueIndex]['modules'][$modIndex]['controles'],
array(
'nom' => $line[6],
'libelle' => $line[7],
'coefficient' => $line[8]
)
);
array_push($mcc[$ueIndex]['modules'][$modIndex]['ctrluid'], $line[6]); // on dis qu'on a déjà enregistré le module
}
}
}
if( $line[3] != null )
$modIndex = array_search($line[3], $mcc[$ueIndex]['moduid']);
/* [3] On récupère les contrôles du module, si les champs sont définis
=========================================================================*/
if( $line[6] != null && $line[7] != null && $line[8] != null ){
if( !in_array($line[6], $mcc[$ueIndex]['modules'][$modIndex]['ctrluid']) ){ // on créé le contrôle dans la liste de ce module s'il n'y est pas déjà
array_push( // on ajoute l'UE
$mcc[$ueIndex]['modules'][$modIndex]['controles'],
array(
'nom' => $line[6],
'libelle' => $line[7],
'coefficient' => $line[8]
)
);
array_push($mcc[$ueIndex]['modules'][$modIndex]['ctrluid'], $line[6]); // on dis qu'on a déjà enregistré le module
}
}
}
}
}
/* [4] Affinage des données, on supprime les données temporaires
=========================================================================*/
foreach($mcc as $iter_ue=>$ue){
unset( $mcc[$iter_ue]['moduid'] );
/* [4] Affinage des données, on supprime les données temporaires
=========================================================================*/
foreach($mcc as $iter_ue=>$ue){
unset( $mcc[$iter_ue]['moduid'] );
foreach($mcc[$iter_ue]['modules'] as $iter_m=>$mod)
unset( $mcc[$iter_ue]['modules'][$iter_m]['ctrluid'] );
}
foreach($mcc[$iter_ue]['modules'] as $iter_m=>$mod)
unset( $mcc[$iter_ue]['modules'][$iter_m]['ctrluid'] );
}
$answer->mcc = $mcc;
$answer->request = 'success';
}else
$answer->request = 'param_error';
$answer->mcc = $mcc;
$answer->request = 'success';
break;

View File

@ -93,4 +93,75 @@ creerSemestre.addEventListener('click', function(e){
}, false);
/* GESTION DE L'IMPORT DE MCC */
var importMcc = document.getElementById('import_mcc');
importMcc.addEventListener('change', function(e){
addClass( importMcc, 'loading' );
var file = importMcc.files[0];
/* IMPORTATION DU FICHIER */
var fd = new FormData();
fd.append('filename', 'import_mcc');
fd.append('file', file, file.name);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'manager/import.php', true);
xhr.onreadystatechange = function(){
if( xhr.readyState == 4 )
if( [0, 200].indexOf(xhr.status) > -1 )
if( xhr.responseText == 'success' ){
var request = {
level_0: 'phpExcel',
level_1: 'import_mcc'
}
API.send(request, function(e){
if( e.request == 'success' ){ // si on a récupéré l'objet MCC, on lance maintenant l'intégration
requestIntegration = {
level_0: 'career',
level_1: 'setMCC',
semestre: 1,
mcc: e.mcc
}
API.send( requestIntegration, function(f){
if( f.request == 'success' ){
console.log('mcc intégré');
reload();
}else
console.log('Mcc non intégré');
});
}else
reload();
});
}
}
xhr.send(fd);
}, false);
-->

View File

@ -529,7 +529,6 @@ if( permission('admin') ){
echo "<div class='p center'>";
$anneesListe = array();
$semestresListe = array();
/**********************/
/* AFFINAGE PAR ANNEE */
@ -554,6 +553,7 @@ if( permission('admin') ){
/*************************/
/* AFFINAGE PAR SEMESTRE */
/*************************/
$semestresListe = array();
foreach($answer->yearList as $annee){ if( in_array($annee['annee'], $anneesListe) ){ // on récupère la liste des ids
foreach($annee['semestres'] as $semestre){ if( !in_array($semestre['id'], $semestresListe) ){
array_push($semestresListe, $semestre['id']);
@ -561,8 +561,7 @@ if( permission('admin') ){
}}
// si semestreOpt n'est pas cohérent (pas pour cette année)
if( !in_array($semestreOpt, $semestresListe) ) $semestreOpt = null;
if( $semestreOpt == null || !in_array($semestreOpt, $semestresListe) ) $semestreOpt = $semestresListe[0];
$count = 0;
echo "<div class='partlist' name='semestre'>";
@ -571,7 +570,6 @@ if( permission('admin') ){
foreach($annee['semestres'] as $semestre){ if( in_array($semestre['id'], $semestresListe) ){
$count++;
if( $semestreOpt == null ) $semestreOpt = $semestre['id'];
if( $semestre['id'] == $semestreOpt ) // si c'est le semestre séléctionné
echo "<span data-year='".$annee['annee']."' data-stre='".$semestre['id']."' class='active'>".$semestre['formation']." - ".$semestre['nom'].'</span>';
@ -632,7 +630,7 @@ if( permission('admin') ){
// if( $answer->request == 'success' ){ // si pas d'erreur
echo "<div class='p center'>";
echo "Importation des MCC d'un semestre<br>";
echo "<span style='font-size:.8em;'>(Fichier .xlsx suivant le modèle : <a href='".__ROOT__."/src/import_mcc.xlsx'>modèle de fichier</a>)</span><br>";
echo "<span style='font-size:.8em;'>(Fichier .xlsx suivant le modèle : <a href='/src/import_mcc.xlsx'>modèle de fichier</a>)</span><br>";
/**********************/
@ -662,8 +660,6 @@ if( permission('admin') ){
echo "<div class='partlist' name='semestre'>";
foreach($annee['semestres'] as $semestre){ if( in_array($semestre['id'], $semestresListe) ){
if( $semestreOpt == null ) $semestreOpt = $semestre['id'];
if( $semestre['id'] == $semestreOpt ) // si c'est le semestre séléctionné
echo "<span data-year='".$annee['annee']."' data-stre='".$semestre['id']."' class='active'>".$semestre['formation']." - ".$semestre['nom'].'</span>';
else // sinon on affiche normalement
@ -680,7 +676,7 @@ if( permission('admin') ){
echo "<div data-year='".$anneeOpt."' class='confirm active center'>Importer les MCC</div>";
echo "<div data-year='".$anneeOpt."' data-stre='".$semestreOpt."' class='confirm active center'>Importer les MCC<input type='file' id='import_mcc'></div>";
echo "</div>";
@ -742,12 +738,12 @@ if( permission('admin') ){
echo "<option value='".($_SESSION['annee']+$i)."'>".anneeScolaire($_SESSION['annee']+$i)."</option>";
echo "</select><br>";
echo "<input type='text' placeholder='cursur, ex: ITINN1'><br>";
echo "<input type='text' placeholder='cursus, ex: ITINN1'><br>";
echo "<input type='text' placeholder='libellé, ex: DUT INFORMATIQUE 1A'><br>";
echo "<input type='text' placeholder='semestre, ex: S1'><br>";
echo "<input type='number' min=0 max=6 step=1 placeholder='rang, ex: 1'><br>";
echo "<div class='confirm active center'>Créer le semestre</div>";
echo "<div class='confirm active center' id='creer_semestre'>Créer le semestre</div>";

View File

BIN
src/import_mcc.xlsx Executable file

Binary file not shown.

0
src/loader.gif Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 847 B

After

Width:  |  Height:  |  Size: 847 B

0
xdoc/empty.sql Normal file → Executable file
View File