コード例 #1
0
ファイル: etape2.php プロジェクト: rhertzog/lcs
} 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 élèves";
require_once "../lib/header.inc.php";
//**************** FIN EN-TETE *****************
// Utilisation de la classe LDAP chargee et configuree
$ldap = new LDAPServerScribe();
echo "<p class=bold><a href='index.php'><img src='../images/icons/back.png' alt='Retour' class='back_link'/> Retour</a></p>";
//----***** STEP 2 *****-----//
/*
 * L'étape 2 consiste à
 *  - Creer les periodes pour les classes recemment importees
 *  - Associer les eleves a leurs classes
 */
if ($_POST['step'] == "2") {
    check_token(false);
    // On se connecte au LDAP
    $ldap->connect();
    if (!isset($_SESSION['classesamodifier'])) {
        echo "Erreur : aucune p&eacute;riodes &agrave; cr&eacute;er";
        require "../lib/footer.inc.php";
    } else {
コード例 #2
0
ファイル: Session.class.php プロジェクト: rhertzog/lcs
	private function import_user_profile_from_scribe() {
        global $mysqli;
		# On ne peut arriver ici quand dans le cas où on a une authentification réussie.
		# L'import d'un utilisateur ne peut se faire qu'à partir d'un LDAP de Scribe, ici.
		if (!LDAPServer::is_setup()) {
			return false;
			die();
		} else {
      
      // config_cas.inc.php est le fichier d'informations de connexions au serveur cas
      $path = dirname(__FILE__)."/LDAPServerScribe.class.php";
      include($path);
      
			# Le serveur LDAP est configuré, on y va.
			# Encore un dernier petit test quand même : est-ce que l'utilisateur
			# est bien absent de la base.
			$sql = "SELECT login FROM utilisateurs WHERE (login = '******')"; 
                $resultat = mysqli_query($mysqli, $sql);  
                if ($resultat->num_rows != "0") {
                    $resultat->close();
                    return false;
                    die();                    
                }
                $resultat->close();

			$ldap_server = new LDAPServerScribe;
      
			$user = $ldap_server->get_user_profile($this->login);
			if ($user) {
				# On ne refait pas de tests ou de formattage. La méthode get_user_profile
				# s'occupe de tout.
        
        $errors = false;
        
        // On s'occupe de tous les traitements spécifiques à chaque statut
        
        // Eleve
        if ($user['statut'] == 'eleve') {
          // On a un élève : on vérifie s'il existe dans la table 'eleves',
          // sur la base de son INE, ou nom et prénom.
          $sql_test = "SELECT * FROM eleves
                            WHERE (no_gep = '".$user['raw']['ine'][0]."'
                                OR (nom = '".$user['nom']."' AND prenom = '".$user['prenom']."'))";
                 
                $resultat = mysqli_query($mysqli, $sql);  
                $test = $resultat->num_rows;
                $resultat->close();
          
          if ($test == 0) {
            // L'élève n'existe pas du tout. On va donc le créer.
            $nouvel_eleve = new Eleve();
            $nouvel_eleve->setLogin($this->login);
            $nouvel_eleve->setNom($user['nom']);
            $nouvel_eleve->setPrenom($user['prenom']);
            $nouvel_eleve->setSexe($user['raw']['entpersonsexe'][0]);
            
            $naissance = $user['raw']['entpersondatenaissance'][0];
            if ($naissance != '') {
              $annee = mb_substr($naissance, 0, 4);
              $mois = mb_substr($naissance, 4, 2);
              $jour = mb_substr($naissance, 6, 2);
            } else {
              $annee = '0000';
              $mois = '00';
              $jour = '00';
            }
            
            $nouvel_eleve->setNaissance("$annee-$mois-$jour");
            $nouvel_eleve->setLieuNaissance('');
            $nouvel_eleve->setElenoet($user['raw']['employeenumber'][0] || '');
            $nouvel_eleve->setEreno('');
            $nouvel_eleve->setEleid($user['raw']['intid'][0] || '');
            $nouvel_eleve->setNoGep($user['raw']['ine'][0] || '');
            $nouvel_eleve->setEmail($user['email']);
            
            if (!$nouvel_eleve->save()) $errors = true;
            
            /*
             * Récupération des CLASSES de l'eleve :
             * Pour chaque eleve, on parcours ses classes, et on ne prend que celles
             * qui correspondent à la branche de l'établissement courant, et on les stocke
             */
            $nb_classes = $user['raw']['enteleveclasses']['count'];

            // Pour chaque classe trouvée..
            $eleve_added_to_classe = false;
            for ($cpt=0; $cpt<$nb_classes; $cpt++) {
                if ($eleve_added_to_classe) break;
                $classe_from_ldap = explode("$", $user['raw']['enteleveclasses'][$cpt]);
                // $classe_from_ldap[0] contient le DN de l'établissement
                // $classe_from_ldap[1] contient l'id de la classe
                $code_classe = $classe_from_ldap[1];

                // Si le SIREN de la classe trouvée correspond bien au SIREN de l'établissement courant,
                // on crée une entrée correspondante dans le tableau des classes disponibles
                // Sinon c'est une classe d'un autre établissement, on ne doit donc pas en tenir compte
                if (strcmp($classe_from_ldap[0], $ldap_server->get_base_branch()) == 0) {

                    /*
                     * On test si la classe que l'on souhaite ajouter existe déjà
                     * en la cherchant dans la base (
                     */
                    $classe_courante = ClasseQuery::create()
                          ->filterByClasse($code_classe)
                          ->findOne();

                    if ($classe_courante) {
                      
                      foreach($classe_courante->getPeriodeNotes() as $periode) {
                          // On associe l'élève à la classe
                          $sql_classe = "INSERT INTO j_eleves_classes SET
                              login = '******', 
                              id_classe = '".$classe_courante->getId()."',
                              periode = '".$periode->getNumPeriode()."'";
                                  
                            $res = mysqli_query($mysqli, $sql); 
                            $res->close();
                          
                      } // Fin boucle périodes
                      $eleve_added_to_classe = true;
                    } // Fin test classe
                } //Fin du if classe appartient a l'etablissement courant
            } //Fin du parcours des classes de l'eleve

            
            // On a maintenant un élève en base, qui appartient à sa classe
            // pour toutes les périodes à partir de la période courante
            
            // On ne l'associe pas aux enseignements, car c'est un peu trop
            // risqué et bancal pour être réalisé dynamiquement ici, dans
            // la mesure où l'on n'a pas une information précise sur la
            // composition des groupes.
            
            
          } else {
            // L'élève existe déjà dans la base. On ne créé que l'utilisateur correspondant.
            // Pour ça, on va devoir s'assurer que l'identifiant est identique !
            $sql_login = "******".$user['raw']['ine'][0]."'
                                OR (nom = '".$user['nom']."' AND prenom = '".$user['prenom']."'))";
                    
                $resultat = mysqli_query($mysqli, $sql);
                $res = $resultatè->fetch_object();
                $test_login = $res->login;
                $resultat->close();
            
            
            if ($test_login != $this->login) {
              // Le login est différent, on ne peut rien faire... Il faudrait renommer
              // le login partout dans l'application, mais il n'existe pas de mécanisme
              // pour le faire de manière fiable.
              $errors = true;
            }
          }
          
        } elseif ($user['statut'] == 'responsable') {
          // Si on a un responsable, il faut l'associer à un élève
          
          $resp = new ResponsableEleve();
          $resp->setLogin($this->login);
          $resp->setNom($user['nom']);
          $resp->setPrenom($user['prenom']);
          $resp->setCivilite($user['raw']['personaltitle'][0]);
          $resp->setTelPers($user['raw']['homephone'][0]);
          $resp->setTelProf($user['raw']['telephonenumber'][0]);
          $resp->setTelPort($user['raw']['mobile'][0]);
          $resp->setMel($user['email']);
          $resp->setAdresseId($user['raw']['intid'][0]);
                    
          // On créé l'adresse associée
          
          $adr = new Adresse();
          $adr->setAdresseId($user['raw']['intid'][0]);
          $adr->setAdr1($user['raw']['entpersonadresse'][0]);
          $adr->setAdr2('');
          $adr->setAdr3('');
          $adr->setAdr4('');
          $adr->setCommune($user['raw']['entpersonville'][0]);
          $adr->setCp($user['raw']['entpersoncodepostal'][0]);
          $adr->setPays($user['raw']['entpersonpays'][0]);
          
          $resp->setAdresse($adr);
          
          $resp->save();

          $nb_eleves_a_charge = $user['raw']['entauxpersreleleveeleve']['count'];

          //pour chaque dn d'eleve
          for ($i=0;$i<$nb_eleves_a_charge;$i++) {
              $eleve_uid = explode(",",$user['raw']['entauxpersreleleveeleve'][$i]);
              $eleve_associe_login = mb_substr($eleve_uid[0], 4);
              $eleve_sql = "SELECT ele_id FROM eleves WHERE login = '******'";
                      
                    $eleve_query = mysqli_query($mysqli, $sql);
                    if ($eleve_query->num_rows == 1) {
                        $eleve_associe_obj = $eleve_query->fetch_object();
                        $eleve_associe_ele_id = $eleve_associe_obj->ele_id;
                        // 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($mysqli, $req_nb_resp_deja_presents);
                        $nb_resp = $res_nb_resp->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];

                            //--
                            // 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','')";
                        $insert_lien = mysqli_query($mysqli, $req_ajout_lien_eleve_resp);
                    }
            }
          
        } elseif ($user['statut'] == 'professeur') {
          // Rien de spécial à ce stade.
          
        } else {
          // Ici : que fait-on si l'on n'a pas un statut directement reconnu
          // et compatible Gepi ?
          // On applique le statut par défaut, configuré par l'admin.
          $user['statut'] = getSettingValue("statut_utilisateur_defaut");
        }
        
        // On créé l'utilisateur, s'il n'y a pas eu d'erreurs.
        if (!$errors) {
            $new_compte_utilisateur = new UtilisateurProfessionnel();
            $new_compte_utilisateur->setAuthMode('sso');
            $new_compte_utilisateur->setCivilite($user['civilite']);
            $new_compte_utilisateur->setEmail($user['email']);
            $new_compte_utilisateur->setEtat('actif');
            $new_compte_utilisateur->setLogin($this->login);
            $new_compte_utilisateur->setNom($user['nom']);
            $new_compte_utilisateur->setPrenom($user['prenom']);
            $new_compte_utilisateur->setShowEmail('no');
            $new_compte_utilisateur->setStatut($user['statut']);
            //$new_compte_utilisateur->save();
			if ($new_compte_utilisateur->save()) {
				return true;
			} else {
				return false;
			}
        }
        
			} else {
				return false;
			}
		}
	}
コード例 #3
0
ファイル: etape7.php プロジェクト: rhertzog/lcs
} 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 personnels administratifs";
require_once "../lib/header.inc.php";
//**************** FIN EN-TETE *****************
// Utilisation de la classe LDAP chargee et configuree
$ldap = new LDAPServerScribe();
echo "<p class=bold><a href='index.php'><img src='../images/icons/back.png' alt='Retour' class='back_link'/> Retour</a></p>";
if ($_POST['step'] == "7") {
    check_token(false);
    // On se connecte au LDAP
    $ldap->connect();
    // Si on a bien les donnees dans la session, on peut continuer
    /*
     * Recherche de tous les profs de l'établissement (pour ce RNE)
     */
    $personnels = $ldap->get_all_personnels();
    $nb_pers = $personnels['count'];
    /*
     * Ajout des profs
     */
    // Infos nécessaires
コード例 #4
0
ファイル: etape1.php プロジェクト: rhertzog/lcs
} 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 élèves";
require_once "../lib/header.inc.php";
//**************** FIN EN-TETE *****************
// Utilisation de la classe LDAP chargee et configuree
$ldap = new LDAPServerScribe();
echo "<p class=bold><a href='index.php'><img src='../images/icons/back.png' alt='Retour' class='back_link'/> Retour</a></p>";
if (isset($_POST['step'])) {
    check_token(false);
    // Compteurs pour les insertions
    $classes_inserees = 0;
    $eleves_inseres = 0;
    // Compteur pour les erreurs
    $eleves_erreurs = 0;
    $resp_erreurs = 0;
    $classes_deja_existantes = 0;
    // Logins des eleves en erreur
    $eleves_erreurs_logins = array();
    // Logins des responsables en erreur
    $resp_erreurs_logins = array();
    // Données à importer
コード例 #5
0
ファイル: etape4.php プロジェクト: rhertzog/lcs
} 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 enseignants";
require_once "../lib/header.inc.php";
//**************** FIN EN-TETE *****************
// Utilisation de la classe LDAP chargee et configuree
$ldap = new LDAPServerScribe();
echo "<p class=bold><a href='index.php'><img src='../images/icons/back.png' alt='Retour' class='back_link'/> Retour</a></p>";
if ($_POST['step'] == "4") {
    check_token(false);
    // On se connecte au LDAP
    $ldap->connect();
    // Si on a bien les donnees dans la session, on peut continuer
    /*
     * Recherche de tous les profs de l'établissement (pour ce RNE)
     */
    $profs = $ldap->get_all_profs();
    $nb_profs = $profs['count'];
    /*
     * Ajout des profs
     */
    // Infos nécessaires pour le prof
コード例 #6
0
ファイル: cherche_login.php プロジェクト: alhousseyni/gepi
$gepi_non_plugin_lcs_mais_recherche_ldap = false;
if (getSettingAOui('gepi_non_plugin_lcs_mais_recherche_ldap') && file_exists("../secure/config_ldap.inc.php")) {
    include "../secure/config_ldap.inc.php";
    $lcs_ldap_base_dn = $ldap_base_dn;
    $lcs_ldap_host = $ldap_host;
    $lcs_ldap_port = $ldap_port;
    $gepi_non_plugin_lcs_mais_recherche_ldap = true;
    $lcs_ldap_people_dn = 'ou=people,' . $lcs_ldap_base_dn;
    $lcs_ldap_groups_dn = 'ou=groups,' . $lcs_ldap_base_dn;
}
$nom = isset($_POST['nom']) ? $_POST['nom'] : (isset($_GET['nom']) ? $_GET['nom'] : "");
$prenom = isset($_POST['prenom']) ? $_POST['prenom'] : (isset($_GET['prenom']) ? $_GET['prenom'] : "");
$statut_recherche = isset($_POST['statut_recherche']) ? $_POST['statut_recherche'] : (isset($_GET['statut_recherche']) ? $_GET['statut_recherche'] : "eleve");
$type_server = isset($_POST['type_server']) ? $_POST['type_server'] : (isset($_GET['type_server']) ? $_GET['type_server'] : "");
if ($type_server == 'scribe' && ($nom != "" || $prenom != "")) {
    $ldap = new LDAPServerScribe();
    $ldap->connect();
    $nom = preg_replace("[A-Za-z]", "*", $nom);
    $prenom = preg_replace("[A-Za-z]", "*", $prenom);
    $filtre = "";
    if ($nom != '') {
        if ($prenom != '') {
            $filtre = "(&(" . $ldap->champ_nom . "=*{$nom}*)(" . $ldap->champ_prenom . "=*{$prenom}*))";
        } else {
            $filtre = "(" . $ldap->champ_nom . "=*{$nom}*)";
        }
    } elseif ($prenom != '') {
        $filtre = "(" . $ldap->champ_prenom . "=*{$prenom}*)";
    }
    if ($filtre != "") {
        $result = ldap_search($ldap->ds, 'ou=utilisateurs,' . $ldap->get_base_branch(), $filtre);
コード例 #7
0
ファイル: etape6.php プロジェクト: rhertzog/lcs
} 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 matières";
require_once "../lib/header.inc.php";
//**************** FIN EN-TETE *****************
// Utilisation de la classe LDAP chargee et configuree
$ldap = new LDAPServerScribe();
echo "<p class=bold><a href='index.php'><img src='../images/icons/back.png' alt='Retour' class='back_link'/> Retour</a></p>";
if ($_POST['step'] == "6") {
    check_token(false);
    /*
     * Vidage des tables necessaires
     */
    if (!is_table_vide("groupes")) {
        vider_table_seule("groupes");
    }
    if (!is_table_vide("j_groupes_classes")) {
        vider_table_seule("j_groupes_classes");
    }
    if (!is_table_vide("j_groupes_professeurs")) {
        vider_table_seule("j_groupes_professeurs");
    }
コード例 #8
0
ファイル: etape3.php プロジェクト: rhertzog/lcs
} 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 "<p class=bold><a href='index.php'><img src='../images/icons/back.png' alt='Retour' class='back_link'/> Retour</a></p>";
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");
コード例 #9
0
ファイル: etape5.php プロジェクト: rhertzog/lcs
} 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 matières";
require_once "../lib/header.inc.php";
//**************** FIN EN-TETE *****************
// Utilisation de la classe LDAP chargee et configuree
$ldap = new LDAPServerScribe();
echo "<p class=bold><a href='index.php'><img src='../images/icons/back.png' alt='Retour' class='back_link'/> Retour</a></p>";
if ($_POST['step'] == "5") {
    check_token(false);
    // On se connecte au LDAP
    $ldap->connect();
    // Si on a bien les donnees dans la session, on peut continuer
    /*
     * Recherche de tous les profs de l'établissement (pour ce RNE)
     */
    $matieres = $ldap->get_all_matieres();
    $nb_matieres = $matieres['count'];
    /*
     * Ajout des matières
     */
    for ($cpt = 0; $cpt < $matieres['count']; $cpt++) {