private function traite_file($file) { if (!isset($_POST["choix"]) || ($_POST["choix"] == "ecrit")) { $this->ecriture = TRUE; } else { $this->ecriture = FALSE; } $data = new ImportModele(); $this->verif_file($file); if (is_null($this->erreurs_lignes)) { $this->setVarGlobal('choix_info', 'affich_result'); $this->fic = fopen($file, 'r'); while (($this->ligne = fgetcsv($this->fic, 1000, ";")) !== FALSE) { $this->ligne[0] = traitement_magic_quotes(corriger_caracteres(htmlspecialchars($this->ligne[0], ENT_QUOTES))); $this->ligne[1] = traitement_magic_quotes(corriger_caracteres(htmlspecialchars($this->ligne[1], ENT_QUOTES))); $this->messages = $this->get_message($data->get_error($this->ligne[0], $this->ligne[1], $this->ecriture)); if ($_POST["choix"] == "erreur" && $this->messages[0] == "message_red") { $this->table[] = array('login_gepi' => $this->ligne[0], 'login_sso' => $this->ligne[1], 'couleur' => $this->messages[0], 'message' => $this->messages[1]); } else if ($_POST["choix"] != "erreur") { $this->table[] = array('login_gepi' => $this->ligne[0], 'login_sso' => $this->ligne[1], 'couleur' => $this->messages[0], 'message' => $this->messages[1]); } } fclose($this->fic); if(is_null($this->table)) { if ($_POST["choix"] != "erreur") $this->setVarGlobal('choix_info', 'no_data'); if ($_POST["choix"] == "erreur") $this->setVarGlobal('choix_info', 'no_error'); } } }
private function traite_file($file) { $data = new ImportModele(); $this->verif_file($file); if (is_null($this->erreurs_lignes)) { // on crée la table des imports ENT $data->cree_table_import(); $this->fic = fopen($file, 'r'); skip_bom_utf8($this->fic); $statut = 'eleve'; while (($this->ligne = fgetcsv($this->fic, 1024, ";")) !== FALSE) { foreach ($this->ligne as &$value) { $value = ensure_utf8($value); } // On charge la table temporaire //$this->ligne[0] : rne //$this->ligne[1] : uid //$this->ligne[2] : classe //$this->ligne[3] : statut //$this->ligne[4] : prénom //$this->ligne[5] : nom //$this->ligne[6] : login //$this->ligne[7] : mot de passe //$this->ligne[8] : cle de jointure //$this->ligne[9] : uid pere //$this->ligne[10] : uid pere //$this->ligne[11] : uid tuteur1 //$this->ligne[12] : uid tuteur2 // si on a un élève, il a un père ou une mère ou un tuteur 1 ou un tuteur 2 if ($this->ligne[9] != "" || $this->ligne[10] != "" || $this->ligne[11] != "" || $this->ligne[12] != "") { $recherche = TRUE; } else { $recherche = FALSE; } $this->res = $data->cherche_login($this->ligne, $statut, $recherche); if (mysqli_num_rows($this->res) == 1) { // on a un seul utilisateur dans Gépi $row = mysqli_fetch_row($this->res); $login_gepi = $row[0]; } else { // Pour les autres cas, il faut attendre que la table soit remplie $login_gepi = ''; } $data->ligne_table_import($this->ligne, $login_gepi); } // regrouper dans un seul enregistrement les UID présents plusieurs fois $data->cree_index_uid(); // récupérer les libellés élèves, responsables, enseignants //$this->req= "SELECT DISTINCT `statut` FROM `utilisateurs` u, `plugin_sso_table_import` e WHERE u.`statut` = 'professeur' AND e.login = u.login AND e.login != '' "; // Ne fonctionne pas, certains profs ont un statut 'personnel' dans l'ENT (remplaçant pas encore remonté, prof des école UPI...) // supprimer les élèves sans classe $this->res = $data->trouve_statut_eleves(); if (mysqli_num_rows($this->res) == 1) { $row = mysqli_fetch_row($this->res); $this->libel_eleve = $row[0]; } else { echo "il y a " . mysqli_num_rows($this->res) . " dénominations pour le statut élève "; die; } $data->supprime_sans_classe($this->libel_eleve); // supprimer les responsables sans classe $this->res = $data->trouve_statut_responsables(); if (mysqli_num_rows($this->res) == 1) { $row = mysqli_fetch_row($this->res); $this->libel_responsable = $row[0]; } else { echo "il y a " . mysqli_num_rows($this->res) . " dénominations pour le statut responsable "; die; } $data->supprime_sans_classe($this->libel_responsable); // supprimer les responsables sans élève (erreurs dans l'ENT) /* // si on a un tuteur dans l'ENT qui n'est que tuteur1 ou tuteur2, on peut le supprimer $this->tuteur = $data->est_que_tuteur(); if (mysql_num_rows($this->tuteur) != 0) { while ($this->row = mysql_fetch_array($this->tuteur)) { // on a bien un compte tuteur dans l'ENT, on peut le supprimer il n'a pas de compte dans gépi $data->del_by_uid($this->row['uid']); } } * */ /* On traite les doublons */ // On recherche les enregistrements sans login $this->res = $data->login_vide(); while ($this->row = mysqli_fetch_array($this->res)) { $login = ''; // si on a un responsable, on le retrouve dans père ou mère ou tuteur 1 ou tuteur 2 $this->resp = $data->est_responsable($this->row); if (mysqli_num_rows($this->resp) != 0) { // on a bien un responsable // on regarde déjà si la recherche sur responsable ne régle pas le problème $this->resp1 = $data->cherche_login($this->row, 'responsable'); if (mysqli_num_rows($this->resp1) == 1) { $row1 = mysqli_fetch_assoc($this->resp1); $login = $row1['login']; } else { if (mysqli_num_rows($this->resp) != 0) { // on recherche le responsable avec ce nom et prénom ayant cet élève $this->eleve = mysqli_fetch_assoc($this->resp); $this->resp2 = $data->cherche_responsable($this->eleve, $this->row); if (mysqli_num_rows($this->resp2) != 0) { $row2 = mysqli_fetch_row($this->resp2); $login = $row2[0]; } } else { // on a pas trouver d'élève, il va falloir traiter à la main $login = ''; } } } else { // si on a un élève, il a un père ou une mère ou un tuteur 1 ou un tuteur 2 $this->reselv = $data->est_eleve($this->row); if (mysqli_num_rows($this->reselv) != 0) { // on a bien un élève, on recherche l'élève ayant un de ces responsables $this->responsable = mysqli_fetch_assoc($this->reselv); $this->reselv2 = $data->cherche_eleve($this->responsable, $this->row); if (mysqli_num_rows($this->reselv2) == 1) { $rowelv2 = mysqli_fetch_row($this->reselv2); $login = $rowelv2[0]; } } // les autres sont ni élève ni responsable $this->resautre = $data->doublon_pro($this->row, $this->libel_eleve, $this->libel_responsable); if (mysqli_num_rows($this->resautre) == 1) { $rowautre = mysqli_fetch_row($this->resautre); $login = $rowautre[0]; } } // on enregistre $data->met_a_jour_ent($login, $this->row['uid']); } fclose($this->fic); // il reste encore les erreurs : 2 comptes ENT -> 1 compte Gépi, on peut nettoyer quand les 2 comptes ne sont pas des comptes parents $this->res = $data->doublon_2ent_1gepi(); if (mysqli_num_rows($this->res) > 0) { while ($this->row2 = mysqli_fetch_array($this->res)) { $data->efface_2ent_1gepi($this->row2, $this->libel_responsable); } } $this->res = $data->doublon_2ent_1gepi(); if (mysqli_num_rows($this->res) > 0) { $class = "message_red"; $message = "Ce compte pose problème"; while ($this->row2 = mysqli_fetch_array($this->res)) { $this->nom = $this->row2['nom'] . " " . $this->row2['prenom']; $this->table[] = array('login_gepi' => $this->nom, 'login_sso' => $this->ligne['uid'], 'couleur' => $class, 'message' => $message); } } $this->setVarGlobal('choix_info', 'affich_result'); if (!isset($_POST["choix"]) || $_POST["choix"] == "ecrit") { $this->ecriture = TRUE; } else { $this->ecriture = FALSE; } // On récupère tous les membres de l'ENT ayant un login Gépi $this->res = $data->get_gepi_ent(); if (mysqli_num_rows($this->res) != 0) { while ($this->ligne = mysqli_fetch_array($this->res)) { $this->messages = $this->get_message($data->get_error($this->ligne['login'], $this->ligne['uid'], $this->ecriture)); if ($_POST["choix"] == "erreur" && $this->messages[0] == "message_red") { $this->table[] = array('login_gepi' => $this->ligne['login'], 'login_sso' => $this->ligne['uid'], 'couleur' => $this->messages[0], 'message' => $this->messages[1]); } else { if ($_POST["choix"] != "erreur") { $this->table[] = array('login_gepi' => $this->ligne['login'], 'login_sso' => $this->ligne['uid'], 'couleur' => $this->messages[0], 'message' => $this->messages[1]); } } } } // On récupère les membres de l'ENT sans login présents dans Gépi $this->class = "message_red"; $this->res = $data->get_sans_login(); if (mysqli_num_rows($this->res) != 0) { while ($this->ligne = mysqli_fetch_array($this->res)) { $this->res2 = $data->cherche_login($this->ligne); if (mysqli_num_rows($this->res2) > 0) { $this->message = 'Il y a plusieurs personnes dans Gépi ayant les mêmes noms et prénoms'; $nomPrenom = $this->ligne['nom'] . " " . $this->ligne['prenom']; $this->table[] = array('login_gepi' => $nomPrenom, 'login_sso' => $this->ligne['uid'], 'couleur' => $this->class, 'message' => $this->message); } } } // On récupère les membres de l'ENT sans login absents de Gépi $this->res = $data->get_sans_login(); if (mysqli_num_rows($this->res) != 0) { while ($this->ligne = mysqli_fetch_array($this->res)) { $this->res2 = $data->cherche_login($this->ligne); if (mysqli_num_rows($this->res2) == 0) { $possibles = Null; $probable = Null; $this->res3 = $data->get_homonymes_sans_correspondance($this->ligne['nom']); while ($this->ligne2 = mysqli_fetch_array($this->res3)) { $possibles[] = $this->ligne2; } if (isset($possibles)) { $probable = $this->get_probable($this->ligne, $possibles); } if ($probable) { $this->message = "L'utilisateur est peut être " . $probable['nom'] . " " . $probable['prenom'] . "( " . $probable['statut'] . ")"; $this->class = "message_purple"; $nomPrenom = $this->ligne['nom'] . " " . $this->ligne['prenom']; $this->table[] = array('login_gepi' => $nomPrenom, 'login_sso' => $this->ligne['uid'], 'couleur' => $this->class, 'message' => $this->message); } else { $this->message = "L'utilisateur n'existe probablement pas dans gépi."; $this->class = "message_red"; $nomPrenom = $this->ligne['nom'] . " " . $this->ligne['prenom']; $this->table[] = array('login_gepi' => $nomPrenom, 'login_sso' => $this->ligne['uid'], 'couleur' => $this->class, 'message' => $this->message); } } } } // On s'assure que table a bien un enregistrement if (is_null($this->table)) { //$this->table[] = array('login_gepi' => ' ', 'login_sso' => ' ', 'couleur' => ' ', 'message' => ' '); if ($_POST["choix"] != "erreur") { $this->setVarGlobal('choix_info', 'no_data'); } if ($_POST["choix"] == "erreur") { $this->setVarGlobal('choix_info', 'no_error'); } } } //$data->supprime_table_import(); }
function updated() { try { $this->login_gepi=$_POST['login_gepi']; $this->login_sso=$_POST['login_sso']; if($this->login_sso=="")throw new Exception ('Vous devez entrer une valeur pour la correspondance'); $data=new ImportModele(); if($data->verif_exist_login_sso($this->login_sso)) throw new Exception ('Une entrée existe déja avec ce login sso; mise à jour impossible'); if($data->get_login_sso_table_sso($this->login_gepi)) $this->mode='update'; else $this->mode='insert'; $data->maj_sso_table($this->login_gepi,$this->login_sso,$this->mode); $this->vue->LoadTemplate('updated.php'); $this->var[]=Array('login_gepi'=>$this->login_gepi,'login_sso'=>$this->login_sso); $this->vue->MergeBlock('b1',$this->var) ; $this->vue->show(); }catch (Exception $e) { $this->vue->LoadTemplate('exceptions.php'); $this->mess[]=Array('mess'=>$e->getMessage()); $this->vue->MergeBlock('b1',$this->mess) ; $this->vue->Show() ; } }