security_check(); if ($resultat_session == 'c') { header("Location: ../utilisateurs/mon_compte.php?change_mdp=yes"); die(); } else if ($resultat_session == '0') { header("Location: ../logout.php?auto=1"); die(); } if (!checkAccess()) { header("Location: ../logout.php?auto=1"); die(); } //**************** EN-TETE ***************** $titre_page = "Outil d'initialisation de l'année : Importation des responsables"; require_once("../lib/header.inc.php"); //**************** FIN EN-TETE ***************** // Utilisation de la classe LDAP chargee et configuree $ldap = new LDAPServerScribe(); echo "
"; if ($_POST['step'] == "3") { check_token(false); // On se connecte au LDAP $ldap->connect(); /* * Recherche de tous les responsables d'eleves de l'établissement */ $responsables = $ldap->get_all_responsables(); $nb_responsables = $responsables['count']; /* * Vidage des tables necessaires */ if (!is_table_vide("responsables2")) { vider_table_seule("responsables2"); } if (!is_table_vide("resp_pers")) { vider_table_seule("resp_pers"); } if (!is_table_vide("resp_adr")) { vider_table_seule("resp_adr"); } // On supprime tous les comptes d'accès de type responsable (vu qu'on a de toute façon supprimé tous les responsables... /* UtilisateurProfessionelQuery::create() ->filterByStatut('responsable') ->delete(); */ $del = mysqli_query($GLOBALS["mysqli"], "DELETE FROM utilisateurs WHERE statut = 'responsable'"); // On parcours tous les responsables $resp_inseres = 0; // avertissement si un eleve a plus de 2 responsables legaux $avertissement_trop_de_responsables = 0; for($nb=0; $nb<$nb_responsables; $nb++) { // On créé les responsables en base (avec les classes ORM) // Table resp_pers $pers_id = array_key_exists('intid', $responsables[$nb]) ? $responsables[$nb]['intid'][0] : ''; // On teste si le responsable est déjà enregistré, sur la base de son identifiant sconet $test_resp = mysqli_num_rows(mysqli_query($GLOBALS["mysqli"], "SELECT * FROM resp_pers WHERE pers_id = '".$pers_id."'")); if ($test_resp == 0) { $resp = new ResponsableEleve(); $resp->setLogin($responsables[$nb][$ldap->champ_login][0]); $resp->setNom($responsables[$nb][$ldap->champ_nom][0]); $resp->setPrenom($responsables[$nb][$ldap->champ_prenom][0]); $resp->setCivilite($responsables[$nb]['personaltitle'][0]); $homephone = array_key_exists('homephone', $responsables[$nb]) ? $responsables[$nb]['homephone'][0] : ''; $resp->setTelPers($homephone); $profphone = array_key_exists('telephonenumber', $responsables[$nb]) ? $responsables[$nb]['telephonenumber'][0] : ''; $resp->setTelProf($profphone); $mobilephone = array_key_exists('mobile', $responsables[$nb]) ? $responsables[$nb]['mobile'][0] : ''; $resp->setTelPort($mobilephone); $respemail = array_key_exists($ldap->champ_email, $responsables[$nb]) ? $responsables[$nb][$ldap->champ_email][0] : ''; $resp->setMel($respemail); $resp->setResponsableEleveId($pers_id); // On créé l'adresse associée $resp_addr = array_key_exists('entpersonadresse', $responsables[$nb]) ? $responsables[$nb]['entpersonadresse'][0] : null; $resp_ville = array_key_exists('entpersonville', $responsables[$nb]) ? $responsables[$nb]['entpersonville'][0] : ''; $resp_cp = array_key_exists('entpersoncodepostal', $responsables[$nb]) ? $responsables[$nb]['entpersoncodepostal'][0] : ''; $resp_pays = array_key_exists('entpersonpays', $responsables[$nb]) ? $responsables[$nb]['entpersonpays'][0] : ''; $test_adr = mysqli_num_rows(mysqli_query($GLOBALS["mysqli"], "SELECT * FROM resp_adr WHERE adr_id = '".$pers_id."'")); if ($resp_addr && $test_adr == 0) { $adr = new Adresse(); $adr->setId($pers_id); $adr->setAdr1($resp_addr); $adr->setAdr2(''); $adr->setAdr3(''); $adr->setAdr4(''); $adr->setCommune($resp_ville); $adr->setCp($resp_cp); $adr->setPays($resp_pays); $resp->setAdresse($adr); } $resp->save(); $resp_inseres++; } else { $resp = ResponsableElevePeer::retrieveByPK($pers_id); } // Pour chaque responsable, on cherche le ou les eleves associes // attribut de lien : ENTAuxPersRelEleveEleve $nb_eleves_a_charge = $responsables[$nb]['entauxpersreleleveeleve']['count']; $valid_associations = 0; //pour chaque dn d'eleve for ($i=0;$i<$nb_eleves_a_charge;$i++) { $eleve_uid = explode(",",$responsables[$nb]['entauxpersreleleveeleve'][$i]); $eleve_associe_login = mb_substr($eleve_uid[0], 4); $req_eleid = mysqli_query($GLOBALS["mysqli"], "SELECT ele_id FROM eleves WHERE login = '$eleve_associe_login'"); // On s'assure qu'on a bien un élève correspondant ! if (mysqli_num_rows($req_eleid) == 1) { $eleve_associe_ele_id = old_mysql_result($req_eleid, 0); /* * Il faut ensuite effectuer le lien entre Responsable et Eleve */ // Gepi donne un ordre aux responsables, il faut donc verifier combien de responsables sont deja enregistres pour l'eleve // On initialise le numero de responsable $numero_responsable = 1; $req_nb_resp_deja_presents = "SELECT count(*) FROM responsables2 WHERE ele_id = '$eleve_associe_ele_id'"; $res_nb_resp = mysqli_query($GLOBALS["mysqli"], $req_nb_resp_deja_presents); if (((is_object($GLOBALS["mysqli"])) ? mysqli_errno($GLOBALS["mysqli"]) : (($___mysqli_res = mysqli_connect_errno()) ? $___mysqli_res : false)) != 0) { error_log("Erreur : ".mysqli_error($GLOBALS["mysqli"])); die("Une erreur s'est produite lors la récupération des responsables déjà présents."); } $nb_resp = mysqli_fetch_array($res_nb_resp); if ($nb_resp[0] > 0) { // Si deja 1 ou plusieurs responsables legaux pour cet eleve,on ajoute le nouveau responsable en incrementant son numero $numero_responsable += $nb_resp[0]; if ($numero_responsable > 2) { // On affichera un avertissement disant que l'eleve a plus de 2 responsables legaux, et que ce n'est pas normal. // gepi les affichera dans la fiche de l'eleve mais ils ne seront pas reconnus parfaitement (recherches impossibles) $avertissement_trop_de_responsables = 1; } //-- // TODO: tester si on a des adresses identiques, et n'utiliser qu'un seul objet adresse dans ce cas. //-- } // Ajout de la relation entre Responsable et Eleve dans la table "responsables2" pour chaque eleve $req_ajout_lien_eleve_resp = "INSERT INTO responsables2 VALUES('$eleve_associe_ele_id','".$resp->getResponsableEleveId()."','$numero_responsable','','')"; mysqli_query($GLOBALS["mysqli"], $req_ajout_lien_eleve_resp); if (((is_object($GLOBALS["mysqli"])) ? mysqli_errno($GLOBALS["mysqli"]) : (($___mysqli_res = mysqli_connect_errno()) ? $___mysqli_res : false)) != 0) { die("Une erreur s'est produite lors de l'affectation d'un élève à son responsable légal."); } $valid_associations++; } } if ($nb_eleves_a_charge > 0 && $valid_associations > 0) { // On créé maintenant son compte d'accès à Gepi // On test si l'uid est deja connu de GEPI $compte_utilisateur_resp = UtilisateurProfessionnelPeer::retrieveByPK($resp->getLogin()); if ($compte_utilisateur_resp != null) { // Un compte d'accès avec le même identifiant existe déjà. On ne touche à rien. echo "Un compte existe déjà pour l'identifiant ".$resp->getLogin().".$resp_inseres responsables d'élèves insérés en base
(sur $nb_responsables trouvé(s))
Avertissement : certains élèves ont plus de 2 responsables legaux, ce qui n'est pas normal. Bien que gepi n'en gère que 2, ils ont tous été importés.
L'étape 3 vous permet d'importer les responsables d'élève et de les associer à leur(s) élève(s).
"; echo "Les données concernant les responsables d'élèves actuellement en base seront remplacées par ces nouvelles données
"; // On test si les tables dans lesquelles on va importer sont vides if ((!is_table_vide("responsables2")) || (!is_table_vide("resp_pers")) || (!is_table_vide("resp_adr"))) { // Si au moins une n'est pas vide, on affiche un message d'avertissement echo "Attention, les tables concernant les responsables ne sont pas vides, vous n'êtes pas passé par la première étape.