/** * supprimer_selections_items_obsoletes * * Est appelé lors de l'initialisation annuelle ou sur demande "recherche et suppression de correspondances anormales". * * @param void * @return int */ public static function DB_supprimer_selections_items_obsoletes() { // On recherche les sélections d'items sans item $DB_SQL = 'SELECT sacoche_selection_item.selection_item_id '; $DB_SQL .= 'FROM sacoche_selection_item '; $DB_SQL .= 'LEFT JOIN sacoche_jointure_selection_item ON sacoche_selection_item.selection_item_id = sacoche_jointure_selection_item.selection_item_id '; $DB_SQL .= 'WHERE sacoche_jointure_selection_item.selection_item_id IS NULL '; $DB_SQL .= 'GROUP BY sacoche_selection_item.selection_item_id '; $DB_COL = DB::queryCol(SACOCHE_STRUCTURE_BD_NAME, $DB_SQL, NULL); $nb_obsoletes = count($DB_COL); if ($nb_obsoletes) { // On supprime les sélections d'items sans item foreach ($DB_COL as $selection_item_id) { DB_STRUCTURE_SELECTION_ITEM::DB_supprimer($selection_item_id); } } return $nb_obsoletes; }
/** * Recherche et suppression de correspondances anormales dans la base * * @param void * @return array tableau avec label et commentaire pour chaque recherche */ public static function DB_corriger_anomalies() { $tab_bilan = array(); // un bout de code utilisé à chaque fois function compte_rendu( $nb_modifs , $sujet ) { $message = (!$nb_modifs) ? 'rien à signaler' : ( ($nb_modifs>1) ? $nb_modifs.' anomalies supprimées' : '1 anomalie supprimée' ) ; $classe = (!$nb_modifs) ? 'valide' : 'alerte' ; return '<label class="'.$classe.'">'.$sujet.' : '.$message.'.</label>'; } // Référentiels associés à une matière supprimée $DB_SQL = 'DELETE sacoche_referentiel,sacoche_referentiel_domaine, sacoche_referentiel_theme, sacoche_referentiel_item, sacoche_jointure_devoir_item, sacoche_saisie, sacoche_demande '; $DB_SQL.= 'FROM sacoche_referentiel '; $DB_SQL.= 'LEFT JOIN sacoche_matiere USING (matiere_id) '; $DB_SQL.= 'LEFT JOIN sacoche_referentiel_domaine USING (matiere_id,niveau_id) '; $DB_SQL.= 'LEFT JOIN sacoche_referentiel_theme USING (domaine_id) '; $DB_SQL.= 'LEFT JOIN sacoche_referentiel_item USING (theme_id) '; $DB_SQL.= 'LEFT JOIN sacoche_jointure_devoir_item USING (item_id) '; $DB_SQL.= 'LEFT JOIN sacoche_saisie USING (item_id) '; $DB_SQL.= 'LEFT JOIN sacoche_demande USING (item_id) '; $DB_SQL.= 'WHERE sacoche_matiere.matiere_id IS NULL '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $tab_bilan[] = compte_rendu( DB::rowCount(SACOCHE_STRUCTURE_BD_NAME) , 'Référentiels' ); // Domaines associés à une matière supprimée... $DB_SQL = 'DELETE sacoche_referentiel_domaine, sacoche_referentiel_theme, sacoche_referentiel_item, sacoche_jointure_devoir_item, sacoche_saisie, sacoche_demande '; $DB_SQL.= 'FROM sacoche_referentiel_domaine '; $DB_SQL.= 'LEFT JOIN sacoche_matiere USING (matiere_id) '; $DB_SQL.= 'LEFT JOIN sacoche_referentiel_theme USING (domaine_id) '; $DB_SQL.= 'LEFT JOIN sacoche_referentiel_item USING (theme_id) '; $DB_SQL.= 'LEFT JOIN sacoche_jointure_devoir_item USING (item_id) '; $DB_SQL.= 'LEFT JOIN sacoche_saisie USING (item_id) '; $DB_SQL.= 'LEFT JOIN sacoche_demande USING (item_id) '; $DB_SQL.= 'WHERE sacoche_matiere.matiere_id IS NULL '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $tab_bilan[] = compte_rendu( DB::rowCount(SACOCHE_STRUCTURE_BD_NAME) , 'Domaines (arborescence)' ); // Thèmes associés à un domaine supprimé... $DB_SQL = 'DELETE sacoche_referentiel_theme, sacoche_referentiel_item, sacoche_jointure_devoir_item, sacoche_saisie, sacoche_demande '; $DB_SQL.= 'FROM sacoche_referentiel_theme '; $DB_SQL.= 'LEFT JOIN sacoche_referentiel_domaine USING (domaine_id) '; $DB_SQL.= 'LEFT JOIN sacoche_referentiel_item USING (theme_id) '; $DB_SQL.= 'LEFT JOIN sacoche_jointure_devoir_item USING (item_id) '; $DB_SQL.= 'LEFT JOIN sacoche_saisie USING (item_id) '; $DB_SQL.= 'LEFT JOIN sacoche_demande USING (item_id) '; $DB_SQL.= 'WHERE sacoche_referentiel_domaine.domaine_id IS NULL '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $tab_bilan[] = compte_rendu( DB::rowCount(SACOCHE_STRUCTURE_BD_NAME) , 'Thèmes (arborescence)' ); // Items associés à un thème supprimé... $DB_SQL = 'DELETE sacoche_referentiel_item, sacoche_jointure_devoir_item, sacoche_saisie, sacoche_demande '; $DB_SQL.= 'FROM sacoche_referentiel_item '; $DB_SQL.= 'LEFT JOIN sacoche_referentiel_theme USING (theme_id) '; $DB_SQL.= 'LEFT JOIN sacoche_jointure_devoir_item USING (item_id) '; $DB_SQL.= 'LEFT JOIN sacoche_saisie USING (item_id) '; $DB_SQL.= 'LEFT JOIN sacoche_demande USING (item_id) '; $DB_SQL.= 'WHERE sacoche_referentiel_theme.theme_id IS NULL '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $tab_bilan[] = compte_rendu( DB::rowCount(SACOCHE_STRUCTURE_BD_NAME) , 'Items (arborescence)' ); // Demandes d'évaluations associées à un user ou une matière ou un item supprimé... $DB_SQL = 'DELETE sacoche_demande '; $DB_SQL.= 'FROM sacoche_demande '; $DB_SQL.= 'LEFT JOIN sacoche_user ON sacoche_demande.eleve_id=sacoche_user.user_id '; $DB_SQL.= 'LEFT JOIN sacoche_matiere USING (matiere_id) '; $DB_SQL.= 'LEFT JOIN sacoche_referentiel_item USING (item_id) '; $DB_SQL.= 'WHERE ( (sacoche_user.user_id IS NULL) OR (sacoche_matiere.matiere_id IS NULL) OR (sacoche_referentiel_item.item_id IS NULL) ) '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $nb_modifs = DB::rowCount(SACOCHE_STRUCTURE_BD_NAME); $DB_SQL = 'UPDATE sacoche_demande '; $DB_SQL.= 'LEFT JOIN sacoche_user ON sacoche_demande.prof_id=sacoche_user.user_id '; $DB_SQL.= 'SET prof_id=0 '; $DB_SQL.= 'WHERE sacoche_user.user_id IS NULL '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $nb_modifs += DB::rowCount(SACOCHE_STRUCTURE_BD_NAME); $tab_bilan[] = compte_rendu( $nb_modifs , 'Demandes d\'évaluations' ); // Saisies de scores associées à un élève ou un item supprimé... // Attention, on ne teste pas le professeur ou le devoir, car les saisies sont conservées au delà $DB_SQL = 'DELETE sacoche_saisie '; $DB_SQL.= 'FROM sacoche_saisie '; $DB_SQL.= 'LEFT JOIN sacoche_user ON sacoche_saisie.eleve_id=sacoche_user.user_id '; $DB_SQL.= 'LEFT JOIN sacoche_referentiel_item USING (item_id) '; $DB_SQL.= 'WHERE ( (sacoche_user.user_id IS NULL) OR (sacoche_referentiel_item.item_id IS NULL) ) '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $tab_bilan[] = compte_rendu( DB::rowCount(SACOCHE_STRUCTURE_BD_NAME) , 'Scores' ); // Devoirs associés à un prof ou un groupe supprimé... $DB_SQL = 'DELETE sacoche_devoir, sacoche_jointure_devoir_item , sacoche_jointure_devoir_prof , sacoche_jointure_devoir_eleve '; $DB_SQL.= 'FROM sacoche_devoir '; $DB_SQL.= 'LEFT JOIN sacoche_jointure_devoir_item USING (devoir_id) '; $DB_SQL.= 'LEFT JOIN sacoche_jointure_devoir_prof USING (devoir_id) '; $DB_SQL.= 'LEFT JOIN sacoche_jointure_devoir_eleve USING (devoir_id) '; $DB_SQL.= 'LEFT JOIN sacoche_user ON sacoche_devoir.proprio_id=sacoche_user.user_id '; $DB_SQL.= 'LEFT JOIN sacoche_groupe USING (groupe_id) '; $DB_SQL.= 'WHERE ( (sacoche_user.user_id IS NULL) OR (sacoche_groupe.groupe_id IS NULL) ) '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $tab_bilan[] = compte_rendu( DB::rowCount(SACOCHE_STRUCTURE_BD_NAME) , 'Évaluations' ); // Messages associés à un utilisateur supprimé... $DB_SQL = 'DELETE sacoche_message, sacoche_jointure_message_destinataire '; $DB_SQL.= 'FROM sacoche_message '; $DB_SQL.= 'LEFT JOIN sacoche_jointure_message_destinataire USING (message_id) '; $DB_SQL.= 'LEFT JOIN sacoche_user USING (user_id) '; $DB_SQL.= 'WHERE sacoche_user.user_id IS NULL '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $tab_bilan[] = compte_rendu( DB::rowCount(SACOCHE_STRUCTURE_BD_NAME) , 'Messages d\'accueil' ); // Destinataires de messages associés à un utilisateur ou un regroupement supprimé... $DB_SQL = 'DELETE sacoche_jointure_message_destinataire '; $DB_SQL.= 'FROM sacoche_jointure_message_destinataire '; $DB_SQL.= 'LEFT JOIN sacoche_groupe ON sacoche_jointure_message_destinataire.destinataire_id=sacoche_groupe.groupe_id AND sacoche_jointure_message_destinataire.destinataire_type=sacoche_groupe.groupe_type '; $DB_SQL.= 'WHERE destinataire_type IN ("classe","groupe","besoin") AND (sacoche_groupe.groupe_id IS NULL) '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $nb_modifs = DB::rowCount(SACOCHE_STRUCTURE_BD_NAME); $DB_SQL = 'DELETE sacoche_jointure_message_destinataire '; $DB_SQL.= 'FROM sacoche_jointure_message_destinataire '; $DB_SQL.= 'LEFT JOIN sacoche_niveau ON sacoche_jointure_message_destinataire.destinataire_id=sacoche_niveau.niveau_id '; $DB_SQL.= 'WHERE destinataire_type="niveau" AND (sacoche_niveau.niveau_id IS NULL) '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $nb_modifs += DB::rowCount(SACOCHE_STRUCTURE_BD_NAME); $DB_SQL = 'DELETE sacoche_jointure_message_destinataire '; $DB_SQL.= 'FROM sacoche_jointure_message_destinataire '; $DB_SQL.= 'LEFT JOIN sacoche_user ON sacoche_jointure_message_destinataire.destinataire_id=sacoche_user.user_id '; $DB_SQL.= 'WHERE destinataire_type="user" AND (sacoche_user.user_id IS NULL) '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $nb_modifs += DB::rowCount(SACOCHE_STRUCTURE_BD_NAME); $tab_bilan[] = compte_rendu( $nb_modifs , 'Jointures message/destinataire' ); // Bascules vers un compte désactivé ou supprimé... $tab_bilan[] = compte_rendu( DB_STRUCTURE_SWITCH::DB_supprimer_liaisons_obsoletes() , 'Bascules entre comptes' ); // Sélections d'items associées à un professeur supprimé... $DB_SQL = 'DELETE sacoche_selection_item '; $DB_SQL.= 'FROM sacoche_selection_item '; $DB_SQL.= 'LEFT JOIN sacoche_user ON sacoche_selection_item.proprio_id=sacoche_user.user_id '; $DB_SQL.= 'WHERE sacoche_user.user_id IS NULL '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $tab_bilan[] = compte_rendu( DB::rowCount(SACOCHE_STRUCTURE_BD_NAME) , 'Sélections d\'items sans propriétaire' ); // Jointures sélection/item à un item supprimé... $tab_bilan[] = compte_rendu( DB_STRUCTURE_SELECTION_ITEM::DB_supprimer_jointures_items_obsoletes() , 'Jointures sélection/item' ); // Sélections d'items associées à aucun item... $tab_bilan[] = compte_rendu( DB_STRUCTURE_SELECTION_ITEM::DB_supprimer_selections_items_obsoletes() , 'Sélections d\'items sans item' ); // Jointures période/groupe associées à une période ou un groupe supprimé... $DB_SQL = 'DELETE sacoche_jointure_groupe_periode '; $DB_SQL.= 'FROM sacoche_jointure_groupe_periode '; $DB_SQL.= 'LEFT JOIN sacoche_periode USING (periode_id) '; $DB_SQL.= 'LEFT JOIN sacoche_groupe USING (groupe_id) '; $DB_SQL.= 'WHERE ( (sacoche_periode.periode_id IS NULL) OR (sacoche_groupe.groupe_id IS NULL) ) '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $tab_bilan[] = compte_rendu( DB::rowCount(SACOCHE_STRUCTURE_BD_NAME) , 'Jointures période/groupe' ); // Jointures période/saisie bilan officiel associées à une période supprimée... (on ne s'occupe volontairement pas de vérifier la jointure période/groupe) (on ne vérifie pas non plus les jointures élève / prof / rubrique ... de toutes façon cette table est vidée annuellement) $DB_SQL = 'DELETE sacoche_officiel_saisie '; $DB_SQL.= 'FROM sacoche_officiel_saisie '; $DB_SQL.= 'LEFT JOIN sacoche_periode USING (periode_id) '; $DB_SQL.= 'WHERE sacoche_periode.periode_id IS NULL '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $tab_bilan[] = compte_rendu( DB::rowCount(SACOCHE_STRUCTURE_BD_NAME) , 'Jointures période/saisie bilan officiel' ); // Jointures période/fichier bilan officiel associées à un user ou une période supprimé... $DB_SQL = 'DELETE sacoche_officiel_fichier '; $DB_SQL.= 'FROM sacoche_officiel_fichier '; $DB_SQL.= 'LEFT JOIN sacoche_periode USING (periode_id) '; $DB_SQL.= 'LEFT JOIN sacoche_user USING (user_id) '; $DB_SQL.= 'WHERE ( (sacoche_user.user_id IS NULL) OR (sacoche_periode.periode_id IS NULL) ) '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $tab_bilan[] = compte_rendu( DB::rowCount(SACOCHE_STRUCTURE_BD_NAME) , 'Jointures période/fichier bilan officiel' ); // Jointures période/assiduité bilan officiel associées à un user ou une période supprimée... $DB_SQL = 'DELETE sacoche_officiel_assiduite '; $DB_SQL.= 'FROM sacoche_officiel_assiduite '; $DB_SQL.= 'LEFT JOIN sacoche_periode USING (periode_id) '; $DB_SQL.= 'LEFT JOIN sacoche_user USING (user_id) '; $DB_SQL.= 'WHERE ( (sacoche_user.user_id IS NULL) OR (sacoche_periode.periode_id IS NULL) ) '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $tab_bilan[] = compte_rendu( DB::rowCount(SACOCHE_STRUCTURE_BD_NAME) , 'Jointures période/assiduité bilan officiel' ); // Fiche brevet associée à un user supprimé... $DB_SQL = 'DELETE sacoche_brevet_fichier '; $DB_SQL.= 'FROM sacoche_brevet_fichier '; $DB_SQL.= 'LEFT JOIN sacoche_user USING (user_id) '; $DB_SQL.= 'WHERE user_id IS NULL '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $tab_bilan[] = compte_rendu( DB::rowCount(SACOCHE_STRUCTURE_BD_NAME) , 'Jointures élève/fichier fiche brevet' ); // Jointures user/groupe associées à un user ou un groupe supprimé... $DB_SQL = 'DELETE sacoche_jointure_user_groupe '; $DB_SQL.= 'FROM sacoche_jointure_user_groupe '; $DB_SQL.= 'LEFT JOIN sacoche_user USING (user_id) '; $DB_SQL.= 'LEFT JOIN sacoche_groupe USING (groupe_id) '; $DB_SQL.= 'WHERE ( (sacoche_user.user_id IS NULL) OR (sacoche_groupe.groupe_id IS NULL) ) '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $tab_bilan[] = compte_rendu( DB::rowCount(SACOCHE_STRUCTURE_BD_NAME) , 'Jointures utilisateur/groupe' ); // Jointures user/matière associées à un user ou une matière supprimée... $DB_SQL = 'DELETE sacoche_jointure_user_matiere '; $DB_SQL.= 'FROM sacoche_jointure_user_matiere '; $DB_SQL.= 'LEFT JOIN sacoche_user USING (user_id) '; $DB_SQL.= 'LEFT JOIN sacoche_matiere USING (matiere_id) '; $DB_SQL.= 'WHERE ( (sacoche_user.user_id IS NULL) OR (sacoche_matiere.matiere_id IS NULL) ) '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $tab_bilan[] = compte_rendu( DB::rowCount(SACOCHE_STRUCTURE_BD_NAME) , 'Jointures utilisateur/matière' ); // Abonnement notifications associée à un user supprimé... $DB_SQL = 'DELETE sacoche_jointure_user_abonnement '; $DB_SQL.= 'FROM sacoche_jointure_user_abonnement '; $DB_SQL.= 'LEFT JOIN sacoche_user USING (user_id) '; $DB_SQL.= 'WHERE user_id IS NULL '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $tab_bilan[] = compte_rendu( DB::rowCount(SACOCHE_STRUCTURE_BD_NAME) , 'Jointures utilisateur/abonnement notifications' ); // Jointures devoir/item associées à un devoir ou un item supprimé... $DB_SQL = 'DELETE sacoche_jointure_devoir_item '; $DB_SQL.= 'FROM sacoche_jointure_devoir_item '; $DB_SQL.= 'LEFT JOIN sacoche_devoir USING (devoir_id) '; $DB_SQL.= 'LEFT JOIN sacoche_referentiel_item USING (item_id) '; $DB_SQL.= 'WHERE ( (sacoche_devoir.devoir_id IS NULL) OR (sacoche_referentiel_item.item_id IS NULL) ) '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $tab_bilan[] = compte_rendu( DB::rowCount(SACOCHE_STRUCTURE_BD_NAME) , 'Jointures évaluation/item' ); // Jointures devoir/droit associées à un devoir ou un user supprimé... $DB_SQL = 'DELETE sacoche_jointure_devoir_prof '; $DB_SQL.= 'FROM sacoche_jointure_devoir_prof '; $DB_SQL.= 'LEFT JOIN sacoche_devoir USING (devoir_id) '; $DB_SQL.= 'LEFT JOIN sacoche_user ON sacoche_jointure_devoir_prof.prof_id=sacoche_user.user_id '; $DB_SQL.= 'WHERE ( (sacoche_devoir.devoir_id IS NULL) OR (sacoche_user.user_id IS NULL) ) '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $tab_bilan[] = compte_rendu( DB::rowCount(SACOCHE_STRUCTURE_BD_NAME) , 'Jointures évaluation/prof' ); // Jointures devoir/audio associées à un devoir ou un user supprimé... $DB_SQL = 'DELETE sacoche_jointure_devoir_eleve '; $DB_SQL.= 'FROM sacoche_jointure_devoir_eleve '; $DB_SQL.= 'LEFT JOIN sacoche_devoir USING (devoir_id) '; $DB_SQL.= 'LEFT JOIN sacoche_user ON sacoche_jointure_devoir_eleve.eleve_id=sacoche_user.user_id '; $DB_SQL.= 'WHERE ( (sacoche_devoir.devoir_id IS NULL) OR (sacoche_user.user_id IS NULL) ) '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $tab_bilan[] = compte_rendu( DB::rowCount(SACOCHE_STRUCTURE_BD_NAME) , 'Jointures évaluation/audio' ); // Adresse associée à un parent supprimé... $DB_SQL = 'DELETE sacoche_parent_adresse '; $DB_SQL.= 'FROM sacoche_parent_adresse '; $DB_SQL.= 'LEFT JOIN sacoche_user ON sacoche_parent_adresse.parent_id=sacoche_user.user_id '; $DB_SQL.= 'WHERE user_id IS NULL '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $tab_bilan[] = compte_rendu( DB::rowCount(SACOCHE_STRUCTURE_BD_NAME) , 'Jointures parent/adresse' ); // Jointures parent/élève associées à un parent ou un élève supprimé... $DB_SQL = 'DELETE sacoche_jointure_parent_eleve '; $DB_SQL.= 'FROM sacoche_jointure_parent_eleve '; $DB_SQL.= 'LEFT JOIN sacoche_user AS parent ON sacoche_jointure_parent_eleve.parent_id=parent.user_id '; $DB_SQL.= 'LEFT JOIN sacoche_user AS eleve ON sacoche_jointure_parent_eleve.eleve_id=eleve.user_id '; $DB_SQL.= 'WHERE ( (parent.user_id IS NULL) OR (eleve.user_id IS NULL) ) '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $tab_bilan[] = compte_rendu( DB::rowCount(SACOCHE_STRUCTURE_BD_NAME) , 'Jointures parent/enfant' ); // Élèves associés à une classe supprimée... // Attention, l'id de classe à 0 est normal pour un élève non affecté ou un autre statut $DB_SQL = 'UPDATE sacoche_user '; $DB_SQL.= 'LEFT JOIN sacoche_groupe ON sacoche_user.eleve_classe_id=sacoche_groupe.groupe_id '; $DB_SQL.= 'SET sacoche_user.eleve_classe_id=0 '; $DB_SQL.= 'WHERE ( (sacoche_user.eleve_classe_id!=0) AND (sacoche_groupe.groupe_id IS NULL) ) '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $tab_bilan[] = compte_rendu( DB::rowCount(SACOCHE_STRUCTURE_BD_NAME) , 'Jointures élève/classe' ); // Signature associée à un user supprimé... // Attention, l'id de user à 0 est normal pour le tampon et le logo de l'établissement $DB_SQL = 'DELETE sacoche_image '; $DB_SQL.= 'FROM sacoche_image '; $DB_SQL.= 'LEFT JOIN sacoche_user USING (user_id) '; $DB_SQL.= 'WHERE sacoche_image.user_id!=0 AND sacoche_user.user_id IS NULL '; DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , NULL); $tab_bilan[] = compte_rendu( DB::rowCount(SACOCHE_STRUCTURE_BD_NAME) , 'Jointures utilisateur/signature' ); // Retour return $tab_bilan; }
$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(); // Retirer, dans les sélections d'items, les items supprimés DB_STRUCTURE_SELECTION_ITEM::DB_supprimer_jointures_items_obsoletes(); // Retirer les sélections d'items sans item DB_STRUCTURE_SELECTION_ITEM::DB_supprimer_selections_items_obsoletes(); // Supprimer les demandes d'évaluations, ainsi que les reliquats de notes 'REQ' DB_STRUCTURE_ADMINISTRATEUR::DB_supprimer_demandes_evaluation(); DB_STRUCTURE_ADMINISTRATEUR::DB_supprimer_saisies_REQ(); // En profiter pour optimiser les tables (une fois par an, ça ne peut pas faire de mal) DB_STRUCTURE_ADMINISTRATEUR::DB_optimiser_tables_structure(); // Débloquer l'application LockAcces::debloquer_application('automate',$_SESSION['BASE']); // Notifications (rendues visibles ultérieurement) $notification_contenu = date('d-m-Y H:i:s').' '.$_SESSION['USER_PRENOM'].' '.$_SESSION['USER_NOM'].' a exécuté la purge annuelle de la base (initialisation de début d\'année).'."\r\n"; DB_STRUCTURE_NOTIFICATION::enregistrer_action_admin( $notification_contenu , $_SESSION['USER_ID'] ); // Afficher le retour echo'<li><label class="valide">Évaluations et dépendances supprimées (saisies associées conservées).</label></li>'.NL; echo'<li><label class="valide">Groupes supprimés (avec leurs associations).</label></li>'.NL; echo'<li><label class="valide">Jointures classes / périodes / bilans officiels supprimées.</label></li>'.NL; echo'<li><label class="valide">Bilans officiels supprimés.</label></li>'.NL;
echo '<td>' . html($selection_nom) . '</td>'; echo '<td>' . $items_texte . '</td>'; echo '<td id="proprio_' . $proprio_id . '">' . $profs_nombre . $profs_bulle . '</td>'; echo '<td class="nu">'; echo $niveau_droit >= 3 ? '<q class="modifier" title="Modifier cette sélection d\'items."></q>' : '<q class="modifier_non" title="Action nécessitant le droit de modification (voir ' . html($proprietaire_identite) . ')."></q>'; echo '<q class="dupliquer" title="Dupliquer cette sélection d\'items."></q>'; echo $niveau_droit == 4 ? '<q class="supprimer" title="Supprimer cette sélection d\'items."></q>' : '<q class="supprimer_non" title="Suppression restreinte au propriétaire de la sélection (' . html($proprietaire_identite) . ')."></q>'; echo '</td>'; echo '<SCRIPT>'; echo 'tab_items["' . $selection_id . '"]="' . implode('_', $tab_items) . '";'; echo 'tab_profs["' . $selection_id . '"]="' . $profs_liste . '";'; exit; } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Supprimer une sélection d'items existante // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'supprimer' && $selection_id) { // Vérification des droits $proprio_id = DB_STRUCTURE_SELECTION_ITEM::DB_recuperer_prorietaire_id($selection_id); if ($proprio_id != $_SESSION['USER_ID']) { exit('Erreur : vous n\'êtes pas propriétaire de la sélection n°' . $selection_id . ' !'); } // Effacer l'enregistrement DB_STRUCTURE_SELECTION_ITEM::DB_supprimer($selection_id); // Afficher le retour exit('<td>ok</td>'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // On ne devrait pas en arriver là ! // //////////////////////////////////////////////////////////////////////////////////////////////////// exit('Erreur avec les données transmises !');
</ul> <hr /> <table id="table_action" class="form hsort"> <thead> <tr> <th>Nom</th> <th>Items</th> <th>Partage</th> <th class="nu"><q class="ajouter" title="Ajouter un regroupement d'items."></q></th> </tr> </thead> <tbody> <?php $DB_TAB = DB_STRUCTURE_SELECTION_ITEM::DB_lister($_SESSION['USER_ID']); if (!empty($DB_TAB)) { foreach ($DB_TAB as $DB_ROW) { // Profs avec qui on partage des droits if (!$DB_ROW['partage_listing']) { $profs_liste = ''; $profs_nombre = 'non'; $profs_bulle = ''; } else { $profs_liste = $DB_ROW['partage_listing']; $nb_profs = mb_substr_count($profs_liste, '_') + 1; $profs_nombre = $nb_profs + 1 . ' collègues'; $profs_bulle = $nb_profs < 10 ? ' <img alt="" src="./_img/bulle_aide.png" width="16" height="16" class="bulle_profs" />' : ''; } // Droit sur cette évaluation if ($DB_ROW['proprio_id'] == $_SESSION['USER_ID']) {