$lignes_principal_ras = '';
$lignes_principal_add = '';
$lignes_principal_del = '';
$lignes_matieres_ras = '';
$lignes_matieres_add = '';
$lignes_matieres_del = '';
$lignes_groupes_ras = '';
$lignes_groupes_add = '';
$lignes_groupes_del = '';
// On récupère le fichier avec des infos sur les correspondances : $tab_liens_id_base['classes'] -> $tab_i_classe_TO_id_base ; $tab_liens_id_base['groupes'] -> $tab_i_groupe_TO_id_base ; $tab_liens_id_base['users'] -> $tab_i_fichier_TO_id_base
$tab_liens_id_base = load_fichier('liens_id_base');
$tab_i_classe_TO_id_base = $tab_liens_id_base['classes'];
$tab_i_groupe_TO_id_base = $tab_liens_id_base['groupes'];
$tab_i_fichier_TO_id_base = $tab_liens_id_base['users'];
// On récupère le fichier avec les utilisateurs : $tab_users_fichier['champ'] : i -> valeur, avec comme champs : sconet_id / sconet_num / reference / profil_sigle / nom / prenom / classe / groupes / matieres / adresse / enfant
$tab_users_fichier = load_fichier('users');
//
// Pour sconet_professeurs_directeurs, il faut regarder les associations profs/classes & profs/PP + profs/matières + profs/groupes.
// Pour tableur_professeurs_directeurs, il faut regarder les associations profs/classes & profs/groupes.
// Pour sconet_eleves & tableur_eleves, il faut juste à regarder les associations élèves/groupes.
//
if ($import_profil == 'professeur') {
    // ////////////////////////////////////////////////////////////////////////////////////////////////////
    // associations profs/classes
    // ////////////////////////////////////////////////////////////////////////////////////////////////////
    // Garder trace des associations profs/classes pour faire le lien avec les propositions d'ajouts profs/pp
    $tab_asso_prof_classe = array();
    // Garder trace des identités des profs de la base
    $tab_base_prof_identite = array();
    // On récupère le contenu de la base pour comparer : $tab_base_affectation[user_id_groupe_id]=TRUE $tab_base_classe[groupe_id]=groupe_nom
    // En deux requêtes sinon on ne récupère pas les groupes sans utilisateurs affectés.
 * Consultez la Licence Publique Générale GNU Affero pour plus de détails.
 * 
 * Vous devriez avoir reçu une copie de la Licence Publique Générale GNU Affero avec SACoche ;
 * si ce n’est pas le cas, consultez : <http://www.gnu.org/licenses/>.
 * 
 */

if(!defined('SACoche')) {exit('Ce fichier ne peut être appelé directement !');}
if(!isset($STEP))       {exit('Ce fichier ne peut être appelé directement !');}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Étape 71 - Adresses des parents (sconet_parents | base_eleves_parents | tableur_parents | factos_parents)
// ////////////////////////////////////////////////////////////////////////////////////////////////////

// On récupère le fichier avec des infos sur les correspondances : $tab_liens_id_base['users'] -> $tab_i_fichier_TO_id_base
$tab_liens_id_base = load_fichier('liens_id_base');
$tab_i_fichier_TO_id_base  = $tab_liens_id_base['users'];
// On récupère le fichier avec les utilisateurs : $tab_users_fichier['champ'] : i -> valeur, avec comme champs : sconet_id / sconet_num / reference / profil_sigle / nom / prenom / classe / groupes / matieres / adresse / enfant
$fnom = CHEMIN_DOSSIER_IMPORT.'import_'.$import_origine.'_'.$import_profil.'_'.$_SESSION['BASE'].'_'.session_id().'_users.txt';
if(!is_file($fnom))
{
  exit('Erreur : le fichier contenant les utilisateurs est introuvable !');
}
$contenu = file_get_contents($fnom);
$tab_users_fichier = @unserialize($contenu);
if($tab_users_fichier===FALSE)
{
  exit('Erreur : le fichier contenant les utilisateurs est syntaxiquement incorrect !');
}
// On récupère le contenu de la base pour comparer : $tab_base_adresse[user_id]=array()
$tab_base_adresse = array();
 * 
 * Vous devriez avoir reçu une copie de la Licence Publique Générale GNU Affero avec SACoche ;
 * si ce n’est pas le cas, consultez : <http://www.gnu.org/licenses/>.
 * 
 */
if (!defined('SACoche')) {
    exit('Ce fichier ne peut être appelé directement !');
}
if (!isset($STEP)) {
    exit('Ce fichier ne peut être appelé directement !');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Étape 82 - Traitement des liens de responsabilités des parents (sconet_parents | base_eleves_parents | tableur_parents)
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// On récupère le fichier avec des infos sur les utilisateurs : $tab_memo_analyse[$eleve_id][$parent_id] = $resp_legal_num;
$tab_memo_analyse = load_fichier('memo_analyse');
// Récupérer les éléments postés
$tab_eleve_id = array();
$tab_check = isset($_POST['f_check']) ? explode(',', $_POST['f_check']) : array();
foreach ($tab_check as $check_infos) {
    if (substr($check_infos, 0, 4) == 'mod_') {
        $eleve_id = Clean::entier(substr($check_infos, 4));
        if (isset($tab_memo_analyse[$eleve_id])) {
            $tab_eleve_id[] = $eleve_id;
        }
    }
}
$nb_modifs_eleves = count($tab_eleve_id);
if ($nb_modifs_eleves) {
    // supprimer les liens de responsabilité des élèves concernés (il est plus simple de réinitialiser que de traiter les resp un par un puis de vérifier s'il n'en reste pas à supprimer...)
    DB_STRUCTURE_ADMINISTRATEUR::DB_supprimer_jointures_parents_for_eleves(implode(',', $tab_eleve_id));
 */

if(!defined('SACoche')) {exit('Ce fichier ne peut être appelé directement !');}
if(!isset($STEP))       {exit('Ce fichier ne peut être appelé directement !');}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Étape 41 - Analyse des données des groupes (sconet_professeurs_directeurs | sconet_eleves | tableur_professeurs_directeurs | tableur_eleves)
// ////////////////////////////////////////////////////////////////////////////////////////////////////

// On récupère le fichier avec des infos sur les correspondances : $tab_liens_id_base['classes'] -> $tab_i_classe_TO_id_base ; $tab_liens_id_base['groupes'] -> $tab_i_groupe_TO_id_base ; $tab_liens_id_base['users'] -> $tab_i_fichier_TO_id_base
$tab_liens_id_base = load_fichier('liens_id_base');
$tab_i_classe_TO_id_base  = $tab_liens_id_base['classes'];
$tab_i_groupe_TO_id_base  = $tab_liens_id_base['groupes'];
$tab_i_fichier_TO_id_base = $tab_liens_id_base['users'];
// On récupère le fichier avec les groupes : $tab_groupes_fichier['ref'] : i -> ref ; $tab_groupes_fichier['nom'] : i -> nom ; $tab_groupes_fichier['niveau'] : i -> niveau
$tab_groupes_fichier = load_fichier('groupes');
// On récupère le contenu de la base pour comparer : $tab_groupes_base['ref'] : id -> ref ; $tab_groupes_base['nom'] : id -> nom
$tab_groupes_base        = array();
$tab_groupes_base['ref'] = array();
$tab_groupes_base['nom'] = array();
$DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_groupes();
foreach($DB_TAB as $DB_ROW)
{
  $tab_groupes_base['ref'][$DB_ROW['groupe_id']] = $DB_ROW['groupe_ref'];
  $tab_groupes_base['nom'][$DB_ROW['groupe_id']] = $DB_ROW['groupe_nom'];
}
// Contenu du fichier à conserver
$lignes_ras = '';
foreach($tab_groupes_fichier['ref'] as $i_groupe => $ref)
{
  $id_base = array_search($ref,$tab_groupes_base['ref']);
if (!defined('SACoche')) {
    exit('Ce fichier ne peut être appelé directement !');
}
if (!isset($STEP)) {
    exit('Ce fichier ne peut être appelé directement !');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Étape 31 - Analyse des données des classes (sconet_professeurs_directeurs | sconet_eleves | base_eleves_eleves | factos_eleves | tableur_professeurs_directeurs | tableur_eleves)
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// On récupère le fichier avec des infos sur les correspondances : $tab_liens_id_base['classes'] -> $tab_i_classe_TO_id_base ; $tab_liens_id_base['groupes'] -> $tab_i_groupe_TO_id_base ; $tab_liens_id_base['users'] -> $tab_i_fichier_TO_id_base
$tab_liens_id_base = load_fichier('liens_id_base');
$tab_i_classe_TO_id_base = $tab_liens_id_base['classes'];
$tab_i_groupe_TO_id_base = $tab_liens_id_base['groupes'];
$tab_i_fichier_TO_id_base = $tab_liens_id_base['users'];
// On récupère le fichier avec les classes : $tab_classes_fichier['ref'] : i -> ref ; $tab_classes_fichier['nom'] : i -> nom ; $tab_classes_fichier['niveau'] : i -> niveau
$tab_classes_fichier = load_fichier('classes');
// On récupère le contenu de la base pour comparer : $tab_classes_base['ref'] : id -> ref ; $tab_classes_base['nom'] : id -> nom
$tab_classes_base = array();
$tab_classes_base['ref'] = array();
$tab_classes_base['nom'] = array();
$DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_classes();
foreach ($DB_TAB as $DB_ROW) {
    $tab_classes_base['ref'][$DB_ROW['groupe_id']] = $DB_ROW['groupe_ref'];
    $tab_classes_base['nom'][$DB_ROW['groupe_id']] = $DB_ROW['groupe_nom'];
}
// Contenu du fichier à conserver
$lignes_ras = '';
foreach ($tab_classes_fichier['ref'] as $i_classe => $ref) {
    $id_base = array_search($ref, $tab_classes_base['ref']);
    if ($id_base !== FALSE) {
        if ($mode == 'complet') {