LockAcces::bloquer_application('automate',$_SESSION['BASE'],'Purge annuelle de la base en cours.');
 // Supprimer tous les devoirs associés aux classes, mais pas les saisies associées
 DB_STRUCTURE_ADMINISTRATEUR::DB_supprimer_devoirs_sans_saisies();
 SACocheLog::ajouter('Suppression de tous les devoirs sans les saisies associées.');
 // Supprimer tous les types de groupes, sauf les classes (donc 'groupe' ; 'besoin' ; 'eval'), ainsi que les jointures avec les périodes.
 $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_groupes_sauf_classes();
 if(!empty($DB_TAB))
 {
   foreach($DB_TAB as $DB_ROW)
   {
     DB_STRUCTURE_ADMINISTRATEUR::DB_supprimer_groupe_par_admin( $DB_ROW['groupe_id'] , $DB_ROW['groupe_type'] , FALSE /*with_devoir*/ );
   }
 }
 SACocheLog::ajouter('Suppression de tous les groupes, hors classes, sans les devoirs associés.');
 // Supprimer les jointures classes/périodes, et donc les états des bilans officiels
 DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_liaison_groupe_periode( TRUE /*groupe_id*/ , TRUE /*periode_id*/ , FALSE /*etat*/ , '' /*date_debut_mysql*/ ,'' /*date_fin_mysql*/ );
 // Supprimer les saisies & les archives des bilans officiels
 DB_STRUCTURE_ADMINISTRATEUR::DB_supprimer_bilans_officiels();
 // Supprimer les saisies brevet & les archives (Notanet & fiches brevet)
 DB_STRUCTURE_ADMINISTRATEUR::DB_supprimer_bilans_brevet();
 // Supprimer les comptes utilisateurs désactivés depuis plus de 3 ans
 $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_users_desactives_obsoletes();
 if(!empty($DB_TAB))
 {
   foreach($DB_TAB as $DB_ROW)
   {
     DB_STRUCTURE_ADMINISTRATEUR::DB_supprimer_utilisateur($DB_ROW['user_id'],$DB_ROW['user_profil_sigle']);
     // Log de l'action
     SACocheLog::ajouter('Suppression d\'un utilisateur au compte désactivé depuis plus de 3 ans ('.$DB_ROW['user_profil_sigle'].' '.$DB_ROW['user_id'].').');
   }
 }
    $date_fin_mysql = convert_date_french_to_mysql($date_fin);
    // Vérifier que le date de début est antérieure à la date de fin
    if ($date_debut_mysql > $date_fin_mysql) {
        exit('Erreur : la date de début est postérieure à la date de fin !');
    }
    foreach ($tab_select_periodes as $periode_id) {
        foreach ($tab_select_classes_groupes as $groupe_id) {
            DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_liaison_groupe_periode($groupe_id, $periode_id, TRUE, $date_debut_mysql, $date_fin_mysql);
        }
    }
} elseif ($action == 'retirer') {
    $notification_contenu = '';
    $notification_intro = date('d-m-Y H:i:s') . ' ' . $_SESSION['USER_PRENOM'] . ' ' . $_SESSION['USER_NOM'];
    foreach ($tab_select_periodes as $periode_id) {
        foreach ($tab_select_classes_groupes as $groupe_id) {
            DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_liaison_groupe_periode($groupe_id, $periode_id, FALSE);
            // Log de l'action
            SACocheLog::ajouter('Suppression de l\'association période "' . $tab_periode[$periode_id] . '" (n°' . $periode_id . ') / regroupement "' . $tab_groupe[$groupe_id] . '" (n°' . $groupe_id . '), et donc des bilans officiels associés.');
            $notification_contenu .= $notification_intro . ' a supprimé l\'association période "' . $tab_periode[$periode_id] . '" (n°' . $periode_id . ') / regroupement "' . $tab_groupe[$groupe_id] . '" (n°' . $groupe_id . '), et donc les bilans officiels associés.' . "\r\n";
        }
    }
    // Notifications (rendues visibles ultérieurement)
    if ($notification_contenu) {
        DB_STRUCTURE_NOTIFICATION::enregistrer_action_admin($notification_contenu, $_SESSION['USER_ID']);
    }
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Bilan des affectations des périodes aux classes & groupes ; en plusieurs requêtes pour récupérer les périodes sans classes-groupes et les classes-groupes sans périodes.
// 2/2 - On poursuit avec les requêtes suivantes (associations) et l'affichage.
// ////////////////////////////////////////////////////////////////////////////////////////////////////
echo '<hr />' . NL;
if ($action == 'purger') {
    // Bloquer l'application
    LockAcces::bloquer_application('automate', $_SESSION['BASE'], 'Purge annuelle de la base en cours.');
    // Supprimer tous les devoirs associés aux classes, mais pas les saisies associées
    DB_STRUCTURE_ADMINISTRATEUR::DB_supprimer_devoirs_sans_saisies();
    SACocheLog::ajouter('Suppression de tous les devoirs sans les saisies associées.');
    // Supprimer tous les types de groupes, sauf les classes (donc 'groupe' ; 'besoin' ; 'eval'), ainsi que les jointures avec les périodes.
    $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_groupes_sauf_classes();
    if (!empty($DB_TAB)) {
        foreach ($DB_TAB as $DB_ROW) {
            DB_STRUCTURE_ADMINISTRATEUR::DB_supprimer_groupe_par_admin($DB_ROW['groupe_id'], $DB_ROW['groupe_type'], FALSE);
        }
    }
    SACocheLog::ajouter('Suppression de tous les groupes, hors classes, sans les devoirs associés.');
    // Supprimer les jointures classes/périodes, et donc les états des bilans officiels
    DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_liaison_groupe_periode(TRUE, TRUE, FALSE, '', '');
    // Supprimer les saisies & les archives des bilans officiels
    DB_STRUCTURE_ADMINISTRATEUR::DB_supprimer_bilans_officiels();
    // Supprimer les saisies brevet & les archives (Notanet & fiches brevet)
    DB_STRUCTURE_ADMINISTRATEUR::DB_supprimer_bilans_brevet();
    // Supprimer les comptes utilisateurs désactivés depuis plus de 3 ans
    $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_users_desactives_obsoletes();
    if (!empty($DB_TAB)) {
        foreach ($DB_TAB as $DB_ROW) {
            DB_STRUCTURE_ADMINISTRATEUR::DB_supprimer_utilisateur($DB_ROW['user_id'], $DB_ROW['user_profil_sigle']);
            // Log de l'action
            SACocheLog::ajouter('Suppression d\'un utilisateur au compte désactivé depuis plus de 3 ans (' . $DB_ROW['user_profil_sigle'] . ' ' . $DB_ROW['user_id'] . ').');
        }
    }
    // Retirer, dans les liaisons entre comptes, ceux qui sont désactivés ou supprimés
    DB_STRUCTURE_SWITCH::DB_supprimer_liaisons_obsoletes();