예제 #1
0
파일: ImportCtrl.php 프로젝트: rhertzog/lcs
    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');
            }
        }
    }
예제 #2
0
 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();
 }
예제 #3
0
파일: MajCtrl.php 프로젝트: rhertzog/lcs
  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() ;

    }

  }