} // Outil de résolution de bug ; le test1 provoque parfois l'erreur "Array sizes are inconsistent". // Edit au 11/05/2012 : a priori c'est corrigé, mais je laisse quand même le test au cas où, ça ne coûte rien... if (!$test1) { ajouter_log_PHP('Import fichier ' . $import_origine . ' ' . $import_profil, serialize($tab_users_fichier), __FILE__, __LINE__, TRUE); } // On enregistre FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT . 'import_' . $import_origine . '_' . $import_profil . '_' . $_SESSION['BASE'] . '_' . session_id() . '_users.txt', serialize($tab_users_fichier)); FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT . 'import_' . $import_origine . '_' . $import_profil . '_' . $_SESSION['BASE'] . '_' . session_id() . '_classes.txt', serialize($tab_classes_fichier)); FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT . 'import_' . $import_origine . '_' . $import_profil . '_' . $_SESSION['BASE'] . '_' . session_id() . '_groupes.txt', serialize($tab_groupes_fichier)); FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT . 'import_' . $import_origine . '_' . $import_profil . '_' . $_SESSION['BASE'] . '_' . session_id() . '_liens_id_base.txt', serialize($tab_liens_id_base)); // On affiche le bilan des utilisateurs trouvés if (count($tab_users_fichier['profil_sigle'])) { // Nom des profils $tab_profils_libelles = array(); $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_profils_parametres('user_profil_nom_long_singulier,user_profil_nom_long_pluriel', FALSE); foreach ($DB_TAB as $DB_ROW) { $tab_profils_libelles[$DB_ROW['user_profil_sigle']] = array(1 => $DB_ROW['user_profil_nom_long_singulier'], 2 => $DB_ROW['user_profil_nom_long_pluriel']); } // Boucle pour l'affichage $tab_profil_nombre = array_count_values($tab_users_fichier['profil_sigle']); foreach ($tab_profil_nombre as $profil => $nombre) { $s = $nombre > 1 ? 's' : ''; echo '<p><label class="valide">' . $nombre . ' ' . $tab_profils_libelles[$profil][min(2, $nombre)] . ' trouvé' . $s . '.</label></p>' . NL; } } else { if ($import_profil == 'parent') { exit('<p><label class="alerte">Aucun parent trouvé ayant un enfant dans l\'établissement : importer d\'abord les élèves !</label></p>'); } else { exit('<p><label class="alerte">Aucun utilisateur trouvé !</label></p>'); }
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; // Récupérer l'amplitude complète sur l'ensemble des périodes $DB_ROW = DB_STRUCTURE_ADMINISTRATEUR::DB_recuperer_amplitude_periodes(); $tout_debut = $DB_ROW['tout_debut'] ? $DB_ROW['tout_debut'] : '2000-01-01'; $toute_fin = $DB_ROW['toute_fin'] ? $DB_ROW['toute_fin'] : '2000-01-01'; $nb_jours_total = $DB_ROW['nb_jours_total'] ? $DB_ROW['nb_jours_total'] : 0; // Récupérer la liste des jointures, et le nécessaire pour établir les graphiques $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_jointure_groupe_periode_avec_infos_graphiques($tout_debut); $memo_groupe_id = 0; foreach ($DB_TAB as $DB_ROW) { $groupe_id = $DB_ROW['groupe_id']; $date_affich_debut = convert_date_mysql_to_french($DB_ROW['jointure_date_debut']); $date_affich_fin = convert_date_mysql_to_french($DB_ROW['jointure_date_fin']); $tab_jointure[$groupe_id][$DB_ROW['periode_id']] = html($date_affich_debut) . ' ~ ' . html($date_affich_fin) . '<q class="date_ajouter" title="Importer ces dates dans les champs."></q>'; // graphique (début) if ($memo_groupe_id != $groupe_id) { $memo_position = 0; $memo_groupe_id = $groupe_id; } $margin_left = 100 * round($DB_ROW['position_jour_debut'] / $nb_jours_total, 4); $width = 100 * round(($DB_ROW['nb_jour'] + 1) / $nb_jours_total, 4); // On ajoute un jour pour dessiner les barres jusqu'au jour suivant. if ($memo_position + 0.02 < $margin_left) {
foreach ($DB_TAB as $DB_ROW) { $tab_classes[$DB_ROW['groupe_id']] = $DB_ROW['groupe_nom']; } // Récupération des profs ou directeurs par classe $tab_profs_par_classe = array(); if (!empty($tab_profils['directeur'])) { // Les directeurs sont rattachés à toutes les classes foreach ($tab_classes as $classe_id => $classe_nom) { $tab_profs_par_classe[$classe_id] = $tab_profils['directeur']; } } if (!empty($tab_profils['professeur'])) { // Les professeurs ne sont rattachés qu'à certaines classes $listing_profs_id = implode(',', $tab_profils['professeur']); $listing_groupes_id = implode(',', array_keys($tab_classes)); $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_jointure_professeurs_groupes($listing_profs_id, $listing_groupes_id); foreach ($DB_TAB as $DB_ROW) { $tab_profs_par_classe[$DB_ROW['groupe_id']][] = $DB_ROW['user_id']; } } } } // On passe au traitement des données reçues $auteur = afficher_identite_initiale($_SESSION['USER_NOM'], FALSE, $_SESSION['USER_PRENOM'], TRUE, $_SESSION['USER_GENRE']); foreach ($tab_ids as $classe_id) { $is_modif = DB_STRUCTURE_BREVET::DB_modifier_brevet_classe_etat($classe_id, $new_etat); if ($is_modif && $abonnes_nb && isset($tab_profs_par_classe[$classe_id])) { $texte = 'Statut [' . $tab_etats[$new_etat] . '] appliqué par ' . $auteur . ' à [Fiches brevet] [Session ' . $annee_session_brevet . '] [' . $tab_classes[$classe_id] . '].' . "\r\n"; foreach ($tab_profs_par_classe[$classe_id] as $user_id) { $tab_abonnes[$user_id]['contenu'] .= $texte; }
$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(); $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_adresses_parents(); foreach($DB_TAB as $DB_ROW) { $tab_base_adresse[$DB_ROW['parent_id']] = array( $DB_ROW['adresse_ligne1'] , $DB_ROW['adresse_ligne2'] , $DB_ROW['adresse_ligne3'] , $DB_ROW['adresse_ligne4'] , (int)$DB_ROW['adresse_postal_code'] , $DB_ROW['adresse_postal_libelle'] , $DB_ROW['adresse_pays_nom'] ); } // Pour préparer l'affichage $lignes_ajouter = ''; $lignes_modifier = ''; $lignes_conserver = ''; // Pour préparer l'enregistrement des données $tab_users_ajouter = array(); $tab_users_modifier = array(); // Parcourir chaque entrée du fichier foreach($tab_i_fichier_TO_id_base as $i_fichier => $id_base) { // Cas [1] : parent présent dans le fichier, adresse absente de la base : il vient d'être ajouté, on ajoute aussi son adresse, sauf si elle est vide (on ne teste pas le pays qui vaut FRANCE par défaut dans l'export Sconet).
break; case 'professeur': $DB_TAB = DB_STRUCTURE_PROFESSEUR::DB_lister_classes_groupes_professeur($_SESSION['USER_ID'], $_SESSION['USER_JOIN_GROUPES']); break; case 'parent': $DB_TAB = DB_STRUCTURE_ELEVE::DB_lister_classes_parent($_SESSION['USER_ID']); break; case 'eleve': $DB_TAB = array(0 => array('groupe_id' => $_SESSION['ELEVE_CLASSE_ID'], 'groupe_nom' => $_SESSION['ELEVE_CLASSE_NOM'])); } if (!empty($DB_TAB)) { foreach ($DB_TAB as $DB_ROW) { $tab_groupe[$DB_ROW['groupe_id']] = '<th>' . html($DB_ROW['groupe_nom']) . '</th>'; } // Récupérer la liste des périodes, dans l'ordre choisi par l'admin $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_periodes(); if (!empty($DB_TAB)) { foreach ($DB_TAB as $DB_ROW) { $tab_periode[$DB_ROW['periode_id']] = '<th>' . html($DB_ROW['periode_nom']) . '</th>'; } // Récupérer la liste des jointures $listing_groupes_id = implode(',', array_keys($tab_groupe)); $DB_TAB = DB_STRUCTURE_COMMUN::DB_lister_jointure_groupe_periode($listing_groupes_id); $memo_groupe_id = 0; if (!empty($DB_TAB)) { foreach ($DB_TAB as $DB_ROW) { $date_affich_debut = convert_date_mysql_to_french($DB_ROW['jointure_date_debut']); $date_affich_fin = convert_date_mysql_to_french($DB_ROW['jointure_date_fin']); $tab_jointure[$DB_ROW['groupe_id']][$DB_ROW['periode_id']] = html($date_affich_debut) . ' ~ ' . html($date_affich_fin); } }
.'<th>Num. Sconet</th>' .'<th>Référence</th>' .'<th>Login</th>' .'<th>Civilité</th>' .'<th>Nom</th>' .'<th>Prénom</th>' .'<th>Enfant Id.</th>' .'<th>Enfant Nom</th>' .'<th>Enfant Prénom</th>' .'<th>Enfant Classe Ref.</th>' .'<th>Enfant Classe Nom</th>' .'</tr>'.NL.'</thead><tbody>'.NL; // Récupérer la liste des classes $tab_groupe = array(); $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_classes(); foreach($DB_TAB as $DB_ROW) { $tab_groupe[$DB_ROW['groupe_id']] = array( 'ref'=>$DB_ROW['groupe_ref'] , 'nom'=>$DB_ROW['groupe_nom'] ); } // Récupérer les données des responsables $champs = 'parent.user_id AS parent_id, parent.user_id_ent AS parent_id_ent, parent.user_id_gepi AS parent_id_gepi, parent.user_sconet_id AS parent_sconet_id, parent.user_sconet_elenoet AS parent_sconet_elenoet, parent.user_reference AS parent_reference, parent.user_genre AS parent_genre, parent.user_nom AS parent_nom, parent.user_prenom AS parent_prenom, parent.user_login AS parent_login, enfant.user_id AS enfant_id,enfant.user_nom AS enfant_nom,enfant.user_prenom AS enfant_prenom,enfant.eleve_classe_id AS enfant_classe_id' ; $DB_TAB = DB_STRUCTURE_COMMUN::DB_lister_users_regroupement( 'parent' /*profil_type*/ , 1 /*statut*/ , $tab_types[$groupe_type] , $groupe_id , 'alpha' /*eleves_ordre*/ , $champs ); if(!empty($DB_TAB)) { foreach($DB_TAB as $DB_ROW) { $export_csv .= $DB_ROW['parent_id']
<div id="zone_perso"> <hr /> <h2>Niveaux spécifiques (établissement)</h2> <table class="form hsort"> <thead> <tr> <th>Référence</th> <th>Nom complet</th> <th class="nu"><q class="ajouter" title="Ajouter un niveau."></q></th> </tr> </thead> <tbody> <?php // Lister les niveaux spécifiques $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_niveaux(TRUE /*is_specifique*/); if(!empty($DB_TAB)) { foreach($DB_TAB as $DB_ROW) { // Afficher une ligne du tableau echo'<tr id="id_'.$DB_ROW['niveau_id'].'">'; echo '<td>'.html($DB_ROW['niveau_ref']).'</td>'; echo '<td>'.html($DB_ROW['niveau_nom']).'</td>'; echo '<td class="nu">'; echo '<q class="modifier" title="Modifier ce niveau."></q>'; echo '<q class="supprimer" title="Supprimer ce niveau."></q>'; echo '</td>'; echo'</tr>'.NL; } }
echo'<p class="danger">Aucun compte personnel trouvé !</p>'.NL; return; // Ne pas exécuter la suite de ce fichier inclus. } $compteur = 0 ; foreach($DB_TAB as $DB_ROW) { $tab_principal[0][$DB_ROW['user_id']] = '<th id="th_'.$DB_ROW['user_id'].'"><img alt="'.html($DB_ROW['user_nom'].' '.$DB_ROW['user_prenom']).'" src="./_img/php/etiquette.php?dossier='.$_SESSION['BASE'].'&nom='.urlencode($DB_ROW['user_nom']).'&prenom='.urlencode($DB_ROW['user_prenom']).'" /></th>'; $tab_profs[$DB_ROW['user_id']] = html($DB_ROW['user_nom'].' '.$DB_ROW['user_prenom']); $tab_matieres_par_prof[$DB_ROW['user_id']] = ''; $tab_lignes_profs[floor($compteur/8)][] = $DB_ROW['user_id']; $compteur++; } // Récupérer la liste des jointures $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_jointure_professeurs_matieres(); foreach($DB_TAB as $DB_ROW) { if( (isset($tab_profs[$DB_ROW['user_id']])) && (isset($tab_matieres[$DB_ROW['matiere_id']])) ) { $checked = ($DB_ROW['jointure_coord']) ? ' checked' : '' ; $classe = ($DB_ROW['jointure_coord']) ? 'on' : 'off' ; $js_val = ($DB_ROW['jointure_coord']) ? 2 : 1 ; $tab_js .= 'tab_join['.$DB_ROW['matiere_id'].']['.$DB_ROW['user_id'].']='.$js_val.';'; $tab_profs_par_matiere[$DB_ROW['matiere_id']] .= '<div id="mp_'.$DB_ROW['matiere_id'].'_'.$DB_ROW['user_id'].'" class="'.$classe.'"><input type="checkbox" id="'.$DB_ROW['matiere_id'].'mp'.$DB_ROW['user_id'].'" value=""'.$checked.' /> <label for="'.$DB_ROW['matiere_id'].'mp'.$DB_ROW['user_id'].'">'.$tab_profs[$DB_ROW['user_id']].'</label></div>'; $tab_matieres_par_prof[$DB_ROW['user_id']] .= '<div id="pm_'.$DB_ROW['user_id'].'_'.$DB_ROW['matiere_id'].'" class="'.$classe.'"><input type="checkbox" id="'.$DB_ROW['user_id'].'pm'.$DB_ROW['matiere_id'].'" value=""'.$checked.' /> <label for="'.$DB_ROW['user_id'].'pm'.$DB_ROW['matiere_id'].'">'.$tab_matieres[$DB_ROW['matiere_id']].'</label></div>'; } } // Assemblage du tableau des personnels par matière $TH = array();
<li><span class="manuel"><a class="pop_up" href="<?php echo SERVEUR_DOCUMENTAIRE ?>?fichier=referentiels_socle__calcul_scores_etats_acquisitions">DOC : Calcul des scores et des états d'acquisitions.</a></span></li> <li><span class="astuce">Profils autorisés par les administrateurs : <span class="u"><?php echo $texte ?></span>.</span></li> </ul> <form action="#" method="post"> <hr /> <?php // Séparé en plusieurs requêtes sinon on ne s'en sort pas (entre les matières sans coordonnateurs, sans référentiel, les deux à la fois...). // La recherche ne s'effectue que sur les matières et niveaux utilisés, sans débusquer des référentiels résiduels. $tab_matiere = array(); $tab_niveau = array(); $tab_colonne = array(); // On récupère la liste des matières utilisées par l'établissement $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_matieres_etablissement( TRUE /*order_by_name*/ ); $nb_matieres = !empty($DB_TAB) ? count($DB_TAB) : 0 ; if(!$nb_matieres) { echo'<p><span class="danger">Aucune matière associée à l\'établissement !</span></p>'; } else { foreach($DB_TAB as $DB_ROW) { $tab_matiere[$DB_ROW['matiere_id']] = array( 'nom' => html($DB_ROW['matiere_nom']) , 'nb_demandes' => $DB_ROW['matiere_nb_demandes'] ); } // On récupère la liste des niveaux utilisés par l'établissement
exit(']¤[' . $id); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Déplacer les référentiels d'une matière vers une autre // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'deplacer_referentiels' && $id_avant && $id_apres && $id_avant != $id_apres && $nom_avant && $nom_apres) { // Déplacement après vérification que c'est possible (matière de destination vierge de données) // $is_ok = DB_STRUCTURE_ADMINISTRATEUR::DB_deplacer_referentiel_matiere($id_avant, $id_apres); if (!$is_ok) { exit('Erreur : la nouvelle matière contient déjà des données !'); } // Retirer l'ancienne matière partagée || Supprimer l'ancienne matière spécifique existante if ($id_avant > ID_MATIERE_PARTAGEE_MAX) { DB_STRUCTURE_ADMINISTRATEUR::DB_supprimer_matiere_specifique($id_avant); $log_fin = 'avec suppression de la matière spécifique "' . $nom_avant . '"'; } else { DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_matiere_partagee($id_avant, 0); $log_fin = 'avec retrait de la matière partagée "' . $nom_avant . '"'; } // Log de l'action SACocheLog::ajouter('Déplacement des référentiels de "' . $nom_avant . '" (' . $id_avant . ') vers "' . $nom_apres . '" (' . $id_apres . '), ' . $log_fin . '.'); // Notifications (rendues visibles ultérieurement) $notification_contenu = date('d-m-Y H:i:s') . ' ' . $_SESSION['USER_PRENOM'] . ' ' . $_SESSION['USER_NOM'] . ' a déplacé des référentiels de "' . $nom_avant . '" (' . $id_avant . ') vers "' . $nom_apres . '" (' . $id_apres . '), ' . $log_fin . '.' . "\r\n"; DB_STRUCTURE_NOTIFICATION::enregistrer_action_admin($notification_contenu, $_SESSION['USER_ID']); exit('ok'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // On ne devrait pas en arriver là... // //////////////////////////////////////////////////////////////////////////////////////////////////// exit('Erreur avec les données transmises !');
$tab_retirer[$key] = true; } } // Il n'y a plus qu'à mettre à jour la base if( count($tab_ajouter) || count($tab_retirer) ) { foreach($tab_ajouter as $key => $true) { list($matiere_id,$professeur_id) = explode('x',$key); DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_liaison_professeur_coordonnateur($professeur_id,$matiere_id,true); } foreach($tab_retirer as $key => $true) { list($matiere_id,$professeur_id) = explode('x',$key); DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_liaison_professeur_coordonnateur($professeur_id,$matiere_id,false); } echo'ok'; } else { echo'Aucune modification détectée !'; } } else { echo'Erreur avec les données transmises !'; } ?>
echo'<hr /><p class="danger">Aucun référentiel enregistré !</p>'.NL; } else { $tab_choix = array( 'domaine'=>'synthèse par domaine' , 'theme'=>'synthèse par thème' , 'sans'=>'pas de synthèse' ); // Récupérer la liste des domaines de chaque référentiel $tab_domaines = array(); $DB_TAB_DOMAINES = DB_STRUCTURE_ADMINISTRATEUR::DB_recuperer_referentiels_domaines(); foreach($DB_TAB_DOMAINES as $DB_ROW) { $ids = $DB_ROW['matiere_id'].'_'.$DB_ROW['niveau_id']; $tab_domaines[$ids][] = '<li class="li_n1">'.html($DB_ROW['domaine_nom']).'</li>'; } // Récupérer la liste des thèmes de chaque référentiel $tab_themes = array(); $DB_TAB_THEMES = DB_STRUCTURE_ADMINISTRATEUR::DB_recuperer_referentiels_themes(); foreach($DB_TAB_THEMES as $DB_ROW) { $ids = $DB_ROW['matiere_id'].'_'.$DB_ROW['niveau_id']; $tab_themes[$ids][] = '<li class="li_n2">'.html($DB_ROW['theme_nom']).'</li>'; } // Passer en revue les référentiels $memo_matiere_id = 0; foreach($DB_TAB as $DB_ROW) { if($memo_matiere_id!=$DB_ROW['matiere_id']) { $memo_matiere_id = $DB_ROW['matiere_id']; echo'<hr />'.NL; echo'<h2>'.html($DB_ROW['matiere_nom']).'</h2>'.NL; echo'<hr />'.NL;
$tab_retirer[$key] = true; } } // Il n'y a plus qu'à mettre à jour la base if( count($tab_ajouter) || count($tab_retirer) ) { foreach($tab_ajouter as $key => $true) { list($groupe_id,$professeur_id) = explode('x',$key); DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_liaison_professeur_principal($professeur_id,$groupe_id,true); } foreach($tab_retirer as $key => $true) { list($groupe_id,$professeur_id) = explode('x',$key); DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_liaison_professeur_principal($professeur_id,$groupe_id,false); } echo'ok'; } else { echo'Aucune modification détectée !'; } } else { echo'Erreur avec les données transmises !'; } ?>
} } } // Affichage du bilan des affectations des élèves dans les classes ; en deux requêtes pour récupérer les élèves sans classes et les classes sans élèves $tab_niveau_groupe = array(); $tab_user = array(); $tab_niveau_groupe[0][0] = 'sans classe'; $tab_user[0] = ''; // Récupérer la liste des classes $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_classes_avec_niveaux(); foreach ($DB_TAB as $DB_ROW) { $tab_niveau_groupe[$DB_ROW['niveau_id']][$DB_ROW['groupe_id']] = html($DB_ROW['groupe_nom']); $tab_user[$DB_ROW['groupe_id']] = ''; } // Récupérer la liste des élèves / classes $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_users('eleve', 1, 'eleve_classe_id,user_nom,user_prenom', FALSE); foreach ($DB_TAB as $DB_ROW) { $tab_user[$DB_ROW['eleve_classe_id']] .= html($DB_ROW['user_nom'] . ' ' . $DB_ROW['user_prenom']) . '<br />'; } // Assemblage du tableau résultant $TH = array(); $TB = array(); $TF = array(); foreach ($tab_niveau_groupe as $niveau_id => $tab_groupe) { $TH[$niveau_id] = ''; $TB[$niveau_id] = ''; $TF[$niveau_id] = ''; foreach ($tab_groupe as $groupe_id => $groupe_nom) { $nb = mb_substr_count($tab_user[$groupe_id], '<br />', 'UTF-8'); $s = $nb > 1 ? 's' : ''; $TH[$niveau_id] .= '<th>' . $groupe_nom . '</th>';
// Récupération des données déjà extraites du fichier if (!is_file(CHEMIN_DOSSIER_IMPORT . $fichier_memo)) { exit('Erreur : le fichier ' . CHEMIN_DOSSIER_IMPORT . $fichier_memo . ' contenant les données à traiter est introuvable !'); } $contenu = file_get_contents(CHEMIN_DOSSIER_IMPORT . $fichier_memo); $tab_users_fichier = @unserialize($contenu); if ($tab_users_fichier === FALSE) { exit('Erreur : le fichier contenant les données à traiter est syntaxiquement incorrect !'); } // Récupération des données de la base $tab_users_base = array(); $tab_users_base['sconet_id'] = array(); $tab_users_base['sconet_elenoet'] = array(); $tab_users_base['nom'] = array(); $tab_users_base['prenom'] = array(); $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_users('eleve', 2, 'user_id,user_sconet_id,user_sconet_elenoet,user_nom,user_prenom', FALSE, FALSE); foreach ($DB_TAB as $DB_ROW) { $tab_users_base['sconet_id'][$DB_ROW['user_id']] = $DB_ROW['user_sconet_id']; $tab_users_base['sconet_elenoet'][$DB_ROW['user_id']] = $DB_ROW['user_sconet_elenoet']; $tab_users_base['nom'][$DB_ROW['user_id']] = $DB_ROW['user_nom']; $tab_users_base['prenom'][$DB_ROW['user_id']] = $DB_ROW['user_prenom']; } // Analyse et maj du contenu de la base $lignes_ok = ''; $lignes_ko = ''; foreach ($tab_users_fichier as $tab_donnees_eleve) { list($eleve_sconet_id, $eleve_sconet_elenoet, $eleve_nom, $eleve_prenom, $nb_absence, $nb_absence_nj, $nb_retard, $nb_retard_nj) = $tab_donnees_eleve; $user_id = FALSE; // Recherche sur sconet_id if (!$user_id && $eleve_sconet_id) { $user_id = array_search($eleve_sconet_id, $tab_users_base['sconet_id']);
if (!defined('SACoche')) { exit('Ce fichier ne peut être appelé directement !'); } if ($_SESSION['SESAMATH_ID'] == ID_DEMO) { exit('Action désactivée pour la démo...'); } $action = isset($_POST['f_action']) ? Clean::texte($_POST['f_action']) : ''; $tab_profils_actifs = isset($_POST['tab_id']) ? Clean::map_texte(explode(',', $_POST['tab_id'])) : array(); $tab_profils = array_keys($_SESSION['TAB_PROFILS_ADMIN']['TYPE']); $tab_profils_inactifs = array_diff($tab_profils, $tab_profils_actifs); $tab_profils_anormaux = array_diff($tab_profils_actifs, $tab_profils); if (count($tab_profils_anormaux)) { exit('Erreur avec les profils transmis !'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Choix des profils // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'choix_profils') { // Il n'y a que quelques profils : on ne s'embête pas à comparer pour voir ce qui a changé, on effectue un update pour chacun. foreach ($tab_profils_actifs as $profil_sigle) { DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_profil_parametre($profil_sigle, 'user_profil_actif', 1); } foreach ($tab_profils_inactifs as $profil_sigle) { DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_profil_parametre($profil_sigle, 'user_profil_actif', 0); } exit('ok'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // On ne devrait pas en arriver là... // //////////////////////////////////////////////////////////////////////////////////////////////////// exit('Erreur avec les données transmises !');
* 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 ($_SESSION['SESAMATH_ID'] == ID_DEMO && $_GET['action'] != 'initialiser') { exit('Action désactivée pour la démo...'); } $action = isset($_POST['f_action']) ? $_POST['f_action'] : ''; $tab_modifs = isset($_POST['tab_modifs']) ? explode(',', $_POST['tab_modifs']) : array(); // //////////////////////////////////////////////////////////////////////////////////////////////////// // Ajouter | Retirer un professeur à un groupe // //////////////////////////////////////////////////////////////////////////////////////////////////// if (in_array($action, array('ajouter', 'retirer')) && count($tab_modifs)) { $etat = $action == 'ajouter' ? TRUE : FALSE; foreach ($tab_modifs as $key => $id_modifs) { list($groupe_id, $prof_id) = explode('_', $id_modifs); $groupe_id = Clean::entier($groupe_id); $prof_id = Clean::entier($prof_id); if ($groupe_id && $prof_id) { DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_liaison_user_groupe_par_admin($prof_id, 'professeur', $groupe_id, 'groupe', $etat); } } exit('ok'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // On ne devrait pas en arriver là... // //////////////////////////////////////////////////////////////////////////////////////////////////// exit('Erreur avec les données transmises !');
$tab_check = (isset($_POST['f_check'])) ? explode(',',$_POST['f_check']) : array() ; $nb_add = 0; $nb_mod = 0; foreach($tab_check as $check_infos) { if(substr($check_infos,0,4)=='mod_') { $i_fichier = Clean::entier( substr($check_infos,4) ); if( isset($tab_i_fichier_TO_id_base[$i_fichier]) && isset($tab_users_fichier['adresse'][$i_fichier]) ) { DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_adresse_parent( $tab_i_fichier_TO_id_base[$i_fichier] , $tab_users_fichier['adresse'][$i_fichier] ); $nb_mod++; } } elseif(substr($check_infos,0,4)=='add_') { $i_fichier = Clean::entier( substr($check_infos,4) ); if( isset($tab_i_fichier_TO_id_base[$i_fichier]) && isset($tab_users_fichier['adresse'][$i_fichier]) ) { DB_STRUCTURE_ADMINISTRATEUR::DB_ajouter_adresse_parent( $tab_i_fichier_TO_id_base[$i_fichier] , $tab_users_fichier['adresse'][$i_fichier] ); $nb_add++; } } } // Afficher le résultat echo'<p><label class="valide">Nouvelles adresses ajoutées : '.$nb_add.'</label></p>'.NL; echo'<p><label class="valide">Anciennes adresses modifiées : '.$nb_mod.'</label></p>'.NL; echo'<ul class="puce p"><li><a href="#step81" id="passer_etape_suivante">Passer à l\'étape 5.</a><label id="ajax_msg"> </label></li></ul>'.NL; ?>
return; // Ne pas exécuter la suite de ce fichier inclus. } // // Affichage du bilan des affectations des series aux élèves avec indicateur de moyennes enregistrées // $tab_niveau_groupe = array(); $tab_user = array(); $tab_select = array(); $tab_niveau_groupe[0][0] = 'sans classe'; $tab_user[0] = ''; $tab_select[0] = ''; // Récupérer la liste des classes $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_classes_avec_niveaux($niveau_ordre='DESC'); foreach($DB_TAB as $DB_ROW) { $tab_niveau_groupe[$DB_ROW['niveau_id']][$DB_ROW['groupe_id']] = html($DB_ROW['groupe_nom']); $tab_user[ $DB_ROW['groupe_id']] = ''; $tab_select[$DB_ROW['groupe_id']] = ''; } // Récupérer la liste des élèves, avec classe, série de brevet, et récupération du total des points (si existant) $DB_TAB = DB_STRUCTURE_BREVET::DB_lister_brevet_eleves_avec_serie_et_total(); foreach($DB_TAB as $DB_ROW) { $class = ($DB_ROW['saisie_note']===NULL) ? 'non' : 'oui' ; $tab_user[ $DB_ROW['eleve_classe_id']] .= '<a class="'.$class.'" id="m_'.$DB_ROW['eleve_classe_id'].'_'.$DB_ROW['user_id'].'_'.$DB_ROW['eleve_brevet_serie'].'" href="#"><img src="./_img/brevet/'.$DB_ROW['eleve_brevet_serie'].'.png" alt="" title="'.$tab_brevet_series[$DB_ROW['eleve_brevet_serie']].'" /><span>'.html($DB_ROW['user_nom'].' '.$DB_ROW['user_prenom']).'</span></a><br />'; $tab_select[$DB_ROW['eleve_classe_id']] .= '<option value="'.$DB_ROW['eleve_classe_id'].'_'.$DB_ROW['user_id'].'_'.$DB_ROW['eleve_brevet_serie'].'">'.html($DB_ROW['user_nom'].' '.$DB_ROW['user_prenom']).'</option>'; } // Assemblage du tableau résultant
* 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 !');} $TITRE = html(Lang::_("Réglage des autorisations")); // Tableau avec les noms des profils activés dans l'établissement $tab_profils_libelles = array(); $tab_profil_join_groupes = array(); $tab_profil_join_matieres = array(); Layout::add( 'js_inline_before' , 'var tab_profil_join_groupes = new Array();' ); Layout::add( 'js_inline_before' , 'var tab_profil_join_matieres = new Array();' ); $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_profils_parametres( 'user_profil_type,user_profil_join_groupes,user_profil_join_matieres,user_profil_nom_court_pluriel' /*listing_champs*/ , TRUE /*only_actif*/ ); $DB_TAB[] = array( 'user_profil_sigle' => 'ONLY_COORD' , 'user_profil_type' => '' , 'user_profil_join_groupes' => 0 , 'user_profil_join_matieres' => 0 , 'user_profil_nom_court_pluriel' => 'restriction aux<br />coordonnateurs<br />matières' ); $DB_TAB[] = array( 'user_profil_sigle' => 'ONLY_PP' , 'user_profil_type' => '' , 'user_profil_join_groupes' => 0 , 'user_profil_join_matieres' => 0 , 'user_profil_nom_court_pluriel' => 'restriction aux<br />professeurs<br />principaux' ); $DB_TAB[] = array( 'user_profil_sigle' => 'ONLY_LV' , 'user_profil_type' => '' , 'user_profil_join_groupes' => 0 , 'user_profil_join_matieres' => 0 , 'user_profil_nom_court_pluriel' => 'restriction aux<br />professeurs<br />de LV' ); foreach($DB_TAB as $DB_ROW) { $tab_profils_libelles[$DB_ROW['user_profil_sigle']] = $DB_ROW['user_profil_nom_court_pluriel']; $is_profil_join_groupe = ( ($DB_ROW['user_profil_type']=='professeur') && ($DB_ROW['user_profil_join_groupes']=='config') ) ? TRUE : FALSE ; $tab_profil_join_groupes[$DB_ROW['user_profil_sigle']] = $is_profil_join_groupe; $is_profil_join_groupe = ($is_profil_join_groupe) ? 'true' : 'false' ; Layout::add( 'js_inline_before' , 'tab_profil_join_groupes["'.$DB_ROW['user_profil_sigle'].'" ] = '.$is_profil_join_groupe.';' ); $is_profil_join_matiere = ( ($DB_ROW['user_profil_type']=='professeur') && ($DB_ROW['user_profil_join_matieres']=='config') ) ? TRUE : FALSE ; $tab_profil_join_matieres[$DB_ROW['user_profil_sigle']] = $is_profil_join_matiere; $is_profil_join_matiere = ($is_profil_join_matiere) ? 'true' : 'false' ; Layout::add( 'js_inline_before' , 'tab_profil_join_matieres["'.$DB_ROW['user_profil_sigle'].'"] = '.$is_profil_join_matiere.';' ); }
echo'<td>{{NIVEAU_NOM}}</td>'; echo'<td>'.html($ref).'</td>'; echo'<td>'.html($nom).'</td>'; echo'<td class="nu">'; echo '<q class="modifier" title="Modifier cette classe."></q>'; echo '<q class="supprimer" title="Supprimer cette classe."></q>'; echo'</td>'; } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Supprimer une classe existante // //////////////////////////////////////////////////////////////////////////////////////////////////// else if( ($action=='supprimer') && $id && $nom ) { // Effacer l'enregistrement DB_STRUCTURE_ADMINISTRATEUR::DB_supprimer_groupe_par_admin( $id , 'classe' , TRUE /*with_devoir*/ ); // Log de l'action SACocheLog::ajouter('Suppression de la classe "'.$nom.'" (n°'.$id.'), et donc des devoirs associés.'); // Notifications (rendues visibles ultérieurement) $notification_contenu = date('d-m-Y H:i:s').' '.$_SESSION['USER_PRENOM'].' '.$_SESSION['USER_NOM'].' a supprimé la classe "'.$nom.'" (n°'.$id.'), et donc les devoirs associés.'."\r\n"; DB_STRUCTURE_NOTIFICATION::enregistrer_action_admin( $notification_contenu , $_SESSION['USER_ID'] ); // Afficher le retour echo'<td>ok</td>'; } else { echo'Erreur avec les données transmises !'; } ?>
$action = (isset($_GET['action'])) ? $_GET['action'] : ''; $profil = (isset($_POST['profil'])) ? $_POST['profil'] : ''; $tab_select_users = (isset($_POST['select_users'])) ? array_map('clean_entier',explode(',',$_POST['select_users'])) : array() ; $tab_select_users = array_filter($tab_select_users,'positif'); $nb = count($tab_select_users); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Désactiver des comptes élèves // Désactiver des comptes parents // Désactiver des comptes professeurs et/ou directeurs // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - if( ($action=='desactiver') && $nb ) { foreach($tab_select_users as $user_id) { // Mettre à jour l'enregistrement DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_user_statut( $user_id , 0 ); } $s = ($nb>1) ? 's' : ''; exit('OK'.$nb.' compte'.$s.' désactivé'.$s.'.'); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // On ne devrait pas en arriver là... // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - exit('Erreur avec les données transmises !'); ?>
} } // //////////////////////////////////////////////////////////////////////////////////////////////////// // associations profs/groupes ou élèves/groupes // //////////////////////////////////////////////////////////////////////////////////////////////////// // Garder trace des identités des utilisateurs de la base $tab_base_user_identite = array(); // On récupère le contenu de la base pour comparer : $tab_base_affectation[user_id_groupe_id]=TRUE et $tab_base_groupe[groupe_id]=groupe_nom // En deux requêtes sinon on ne récupère pas les groupes sans utilisateurs affectés. $tab_base_groupe = array(); $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_groupes(); foreach ($DB_TAB as $DB_ROW) { $tab_base_groupe[$DB_ROW['groupe_id']] = $DB_ROW['groupe_nom']; } $tab_base_affectation = array(); $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_users_avec_groupe($import_profil, TRUE); foreach ($DB_TAB as $DB_ROW) { $tab_base_affectation[$DB_ROW['user_id'] . '_' . $DB_ROW['groupe_id']] = TRUE; $tab_base_user_identite[$DB_ROW['user_id']] = $DB_ROW['user_nom'] . ' ' . $DB_ROW['user_prenom']; } // Parcourir chaque entrée du fichier à la recherche d'affectations utilisateurs/groupes foreach ($tab_users_fichier['groupe'] as $i_fichier => $tab_groupes) { if (count($tab_groupes)) { foreach ($tab_groupes as $i_groupe => $groupe_ref) { // On a trouvé une telle affectation ; comparer avec ce que contient la base if (isset($tab_i_fichier_TO_id_base[$i_fichier]) && isset($tab_i_groupe_TO_id_base[$i_groupe])) { $user_id = $tab_i_fichier_TO_id_base[$i_fichier]; $groupe_id = $tab_i_groupe_TO_id_base[$i_groupe]; if (isset($tab_base_affectation[$user_id . '_' . $groupe_id])) { if ($mode == 'complet') { $lignes_groupes_ras .= '<tr><th>Conserver</th><td>' . html($tab_users_fichier['nom'][$i_fichier] . ' ' . $tab_users_fichier['prenom'][$i_fichier]) . '</td><td>' . html($tab_base_groupe[$groupe_id]) . '</td></tr>' . NL;
// //////////////////////////////////////////////////////////////////////////////////////////////////// // É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($id_base!==FALSE) { if($mode=='complet') { $lignes_ras .= '<tr><th>'.html($tab_groupes_base['ref'][$id_base]).'</th><td>'.html($tab_groupes_base['nom'][$id_base]).'</td></tr>'.NL;
* soit la version 3 de cette licence, soit (à votre gré) toute version ultérieure. * * SACoche est distribué dans l’espoir qu’il vous sera utile, mais SANS AUCUNE GARANTIE : * sans même la garantie implicite de COMMERCIALISABILITÉ ni d’ADÉQUATION À UN OBJECTIF PARTICULIER. * 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 !'); } $TITRE = html(Lang::_("Nettoyer / Initialiser la base")); $label = version_compare($_SESSION['VERSION_BASE'], VERSION_BASE_STRUCTURE, '=') ? 'valide' : 'alerte'; Layout::add('js_inline_before', 'var nb_devoirs_annee_scolaire_precedente = ' . DB_STRUCTURE_ADMINISTRATEUR::DB_compter_devoirs_annees_scolaires_precedentes() . ';'); ?> <p><span class="manuel"><a class="pop_up" href="<?php echo SERVEUR_DOCUMENTAIRE; ?> ?fichier=support_administrateur__gestion_nettoyage">DOC : Nettoyage et initialisation annuelle de la base</a></span></p> <hr /> <h2>Version de la base</h2> <div class="astuce">La base de données est mise à jour automatiquement.</div> <div>Version attendue : <?php echo VERSION_BASE_STRUCTURE; ?>
/** * Supprimer un niveau spécifique * * @param int $niveau_id * @return void */ public static function DB_supprimer_niveau_specifique($niveau_id) { $DB_SQL = 'DELETE sacoche_niveau, sacoche_jointure_message_destinataire '; $DB_SQL.= 'FROM sacoche_niveau '; $DB_SQL.= 'LEFT JOIN sacoche_jointure_message_destinataire ON sacoche_niveau.niveau_id=sacoche_jointure_message_destinataire.destinataire_id AND destinataire_type="niveau" '; $DB_SQL.= 'WHERE niveau_id=:niveau_id '; $DB_VAR = array(':niveau_id'=>$niveau_id); DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , $DB_VAR); // Il faut aussi supprimer les référentiels associés, et donc tous les scores associés (orphelins du niveau) DB_STRUCTURE_ADMINISTRATEUR::DB_supprimer_referentiels('niveau_id',$niveau_id); }
$tab_donnees[':email_origine'] = ''; } // Cas du mot de passe if (!$box_password) { $tab_donnees[':password'] = crypter_mdp($password); } // Cas de la date de sortie if ($box_date) { $sortie_date = '-'; $sortie_date_mysql = SORTIE_DEFAUT_MYSQL; } else { $sortie_date_mysql = convert_date_french_to_mysql($sortie_date); } // Mettre à jour l'enregistrement $tab_donnees += array(':sconet_id' => $sconet_id, ':reference' => $reference, ':profil_sigle' => $profil, ':genre' => $genre, ':nom' => $nom, ':prenom' => $prenom, ':courriel' => $courriel, ':id_ent' => $id_ent, ':id_gepi' => $id_gepi, ':sortie_date' => $sortie_date_mysql); DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_user($id, $tab_donnees); // Afficher le retour $checked = $check ? ' checked' : ''; echo '<td class="nu"><input type="checkbox" name="f_ids" value="' . $id . '"' . $checked . ' /></td>'; echo '<td class="label">' . html($id_ent) . '</td>'; echo '<td class="label">' . html($id_gepi) . '</td>'; echo '<td class="label">' . html($sconet_id) . '</td>'; echo '<td class="label">' . html($reference) . '</td>'; echo '<td class="label">' . html($profil) . ' <img alt="" src="./_img/bulle_aide.png" width="16" height="16" title="' . html(html($_SESSION['tmp'][$profil])) . '" /></td>'; echo '<td class="label">' . Html::$tab_genre['adulte'][$genre] . '</td>'; echo '<td class="label">' . html($nom) . '</td>'; echo '<td class="label">' . html($prenom) . '</td>'; echo '<td class="label">' . html($login) . '</td>'; echo $box_password ? '<td class="label i">champ crypté</td>' : '<td class="label new">' . $password . ' <img alt="" src="./_img/bulle_aide.png" width="16" height="16" title="Pensez à noter le mot de passe !" /></td>'; echo '<td class="label">' . html($courriel) . '</td>'; echo '<td class="label">' . $sortie_date . '</td>';
<tr> <th>Id. ENT</th> <th>Id. GEPI</th> <th>Civ.</th> <th>Nom</th> <th>Prénom</th> <th>Login</th> <th>Mot de passe</th> <th>Courriel</th> <th class="nu"><q class="ajouter" title="Ajouter un administrateur."></q></th> </tr> </thead> <tbody> <?php // Lister les administrateurs $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_users('administrateur', 1, 'user_id,user_id_ent,user_id_gepi,user_genre,user_nom,user_prenom,user_login,user_email', FALSE); if (!empty($DB_TAB)) { foreach ($DB_TAB as $DB_ROW) { // Afficher une ligne du tableau echo '<tr id="id_' . $DB_ROW['user_id'] . '">'; echo '<td>' . html($DB_ROW['user_id_ent']) . '</td>'; echo '<td>' . html($DB_ROW['user_id_gepi']) . '</td>'; echo '<td>' . Html::$tab_genre['adulte'][$DB_ROW['user_genre']] . '</td>'; echo '<td>' . html($DB_ROW['user_nom']) . '</td>'; echo '<td>' . html($DB_ROW['user_prenom']) . '</td>'; echo '<td>' . html($DB_ROW['user_login']) . '</td>'; echo '<td class="i">champ crypté</td>'; echo '<td>' . html($DB_ROW['user_email']) . '</td>'; echo '<td class="nu">'; echo '<q class="modifier" title="Modifier cet administrateur."></q>'; echo $DB_ROW['user_id'] != $_SESSION['USER_ID'] ? '<q class="supprimer" title="Retirer cet administrateur."></q>' : '<q class="supprimer_non" title="Un administrateur ne peut pas supprimer son propre compte."></q>';
// Lister les parents, par nom / prénom ou recherche d'homonymies if(!$find_doublon) { $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_parents_avec_infos_enfants( FALSE /*with_adresse*/ , $statut , $debut_nom , $debut_prenom ); } elseif($find_doublon) // (forcément) { $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::lister_parents_homonymes(); if(!empty($DB_TAB)) { $tab_parents_id = array(); foreach($DB_TAB as $DB_ROW) { $tab_parents_id = array_merge( $tab_parents_id , explode(',',$DB_ROW['identifiants']) ); } $DB_TAB = count($tab_parents_id) ? DB_STRUCTURE_ADMINISTRATEUR::DB_lister_parents_avec_infos_enfants( FALSE /*with_adresse*/ , TRUE /*statut*/ , '' /*debut_nom*/ , '' /*debut_prenom*/ , implode(',',$tab_parents_id) ) : array() ; // Préparation de l'export CSV $separateur = ';'; // ajout du préfixe 'ENT_' pour éviter un bug avec M$ Excel « SYLK : Format de fichier non valide » (http://support.microsoft.com/kb/323626/fr). $export_csv = 'ENT_ID'.$separateur.'SCONET_ID'.$separateur.'NOM'.$separateur.'PRENOM'.$separateur.'RESPONSABILITES'."\r\n\r\n"; } } ?> <table id="table_action" class="form t9 hsort"> <thead> <tr> <th class="nu"><q class="cocher_tout" title="Tout cocher."></q><br /><q class="cocher_rien" title="Tout décocher."></q></th> <th>Resp</th> <th>Id. ENT</th> <th>Id. GEPI</th>
foreach($tab_modifs as $key => $id_modifs) { list($classe_id,$prof_id) = explode('_',$id_modifs); $classe_id = Clean::entier($classe_id); $prof_id = Clean::entier($prof_id); if($classe_id && $prof_id) { DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_liaison_user_groupe_par_admin( $prof_id , 'professeur' , $classe_id , 'classe' , $etat ); } } exit('ok'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Ajouter | Retirer une affectation en tant que professeur principal // //////////////////////////////////////////////////////////////////////////////////////////////////// if( in_array($action,array('ajouter_pp','retirer_pp')) && ($classe_id) && ($prof_id) ) { $etat = ($action=='ajouter_pp') ? TRUE : FALSE ; DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_liaison_professeur_principal( $prof_id , $classe_id , $etat ); exit('ok'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // On ne devrait pas en arriver là... // //////////////////////////////////////////////////////////////////////////////////////////////////// exit('Erreur avec les données transmises !'); ?>