'; } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Formulaire de choix des épreuves pour une recherche de saisies manquantes. -> zone_chx_rubriques // Paramètres supplémentaires envoyés pour éviter d'avoir à les retrouver à chaque fois. -> form_hidden // //////////////////////////////////////////////////////////////////////////////////////////////////// $form_hidden = ''; $tab_checkbox_rubriques = array(); // Lister les matières rattachées au prof $listing_matieres_id = $_SESSION['USER_PROFIL_TYPE'] == 'professeur' ? DB_STRUCTURE_COMMUN::DB_recuperer_matieres_professeur($_SESSION['USER_ID']) : ''; $form_hidden .= '<input type="hidden" id="f_listing_matieres" name="f_listing_matieres" value="' . $listing_matieres_id . '" />'; $tab_matieres_id = explode(',', $listing_matieres_id); // Lister les épreuves par série de Brevet en place dans l'établissement foreach ($tab_brevet_series as $brevet_serie_ref => $brevet_serie_nom) { $tab_checkbox_rubriques[$brevet_serie_ref] = '<h3>' . $brevet_serie_nom . '</h3>'; $DB_TAB = DB_STRUCTURE_BREVET::DB_lister_brevet_epreuves($brevet_serie_ref); foreach ($DB_TAB as $DB_ROW) { $checked = $_SESSION['USER_PROFIL_TYPE'] != 'professeur' || count(array_intersect(explode(',', $DB_ROW['brevet_epreuve_choix_matieres']), $tab_matieres_id)) ? ' checked' : ''; $tab_checkbox_rubriques[$brevet_serie_ref] .= '<label for="rubrique_' . $brevet_serie_ref . '_' . $DB_ROW['brevet_epreuve_code'] . '"><input type="checkbox" name="f_rubrique[]" id="rubrique_' . $brevet_serie_ref . '_' . $DB_ROW['brevet_epreuve_code'] . '" value="' . $brevet_serie_ref . '_' . $DB_ROW['brevet_epreuve_code'] . '"' . $checked . ' /> ' . html($DB_ROW['brevet_epreuve_nom']) . '</label><br />'; } $tab_checkbox_rubriques[$brevet_serie_ref] .= '<label for="rubrique_' . $brevet_serie_ref . '_' . CODE_BREVET_EPREUVE_TOTAL . '"><input type="checkbox" name="f_rubrique[]" id="rubrique_' . $brevet_serie_ref . '_' . CODE_BREVET_EPREUVE_TOTAL . '" value="' . $brevet_serie_ref . '_' . CODE_BREVET_EPREUVE_TOTAL . '" /> <i>Avis de synthèse</i></label><br />'; } ?> <form action="#" method="post" id="zone_chx_rubriques" class="hide"> <h2>Rechercher des saisies manquantes</h2> <div class="astuce">La recherche sera dans tous les cas aussi restreinte aux épreuves où les élèves ont des notes reportées.</div> <p><a href="#zone_chx_rubriques" id="rubrique_check_all" class="cocher_tout">Toutes</a> <a href="#zone_chx_rubriques" id="rubrique_uncheck_all" class="cocher_rien">Aucune</a></p> <div class="col_liste"><?php echo implode('</div><div class="col_liste">', $tab_checkbox_rubriques); ?>
if ($ACTION == 'corriger_faute') { if (!$appreciation || !$prof_id || $avis_conseil != 'F' && $avis_conseil != 'D' && $epreuve_id == CODE_BREVET_EPREUVE_TOTAL) { exit('Erreur avec les données transmises !'); } $avis_et_appreciation = $epreuve_id != CODE_BREVET_EPREUVE_TOTAL ? $appreciation : $avis_conseil . '|' . $appreciation; DB_STRUCTURE_BREVET::DB_modifier_brevet_appreciation($serie_ref, $epreuve_id, $eleve_id, $prof_id, $avis_et_appreciation); exit('<ok>' . html($appreciation)); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Cas 2 : suppression d'une appréciation // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($ACTION == 'supprimer_appr') { if ($BILAN_ETAT == '2rubrique' && $epreuve_id == CODE_BREVET_EPREUVE_TOTAL) { exit('Erreur avec les données transmises !'); } DB_STRUCTURE_BREVET::DB_modifier_brevet_appreciation($serie_ref, $epreuve_id, $eleve_id, 0, ''); $ACTION = $epreuve_id != CODE_BREVET_EPREUVE_TOTAL ? '<button type="button" class="ajouter">Ajouter l\'appréciation.</button>' : '<button type="button" class="ajouter">Ajouter l\'avis de synthèse.</button>'; exit('<div class="hc">' . $ACTION . '</div>'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Cas 3 & 4 : affichage des données d'un élève (le premier si initialisation ; l'élève indiqué sinon) // //////////////////////////////////////////////////////////////////////////////////////////////////// // Si besoin, fabriquer le formulaire avec la liste des élèves concernés : soit d'une classe (en général) soit d'une classe ET d'un sous-groupe pour un prof affecté à un groupe d'élèves $groupe_nom = !$is_sous_groupe ? $classe_nom : $classe_nom . ' - ' . DB_STRUCTURE_COMMUN::DB_recuperer_groupe_nom($groupe_id); if ($ACTION == 'initialiser') { $DB_TAB = !$is_sous_groupe ? DB_STRUCTURE_COMMUN::DB_lister_users_regroupement('eleve', 1, 'classe', $classe_id, 'alpha') : DB_STRUCTURE_COMMUN::DB_lister_eleves_classe_et_groupe($classe_id, $groupe_id); if (empty($DB_TAB)) { exit('Aucun élève trouvé dans ce regroupement !'); } $tab_eleve_id = array(); $form_choix_eleve = '<form action="#" method="post" id="form_choix_eleve"><div><b>' . html($classe_nom) . ' :</b> <button id="go_premier_eleve" type="button" class="go_premier">Premier</button> <button id="go_precedent_eleve" type="button" class="go_precedent">Précédent</button> <select id="go_selection_eleve" name="go_selection" class="b">';
exit('Erreur avec les données transmises !'); } $listing_eleve_id = implode(',', $tab_eleve); // Récupérer les données élèves $tab_eleves = array(); // [user_id] => array(nom,prenom,sconet_id) Ordonné par INE. $DB_TAB = DB_STRUCTURE_BREVET::DB_lister_eleves_cibles_actuels_avec_INE($listing_eleve_id); if (empty($DB_TAB)) { exit('Erreur : les élèves trouvés n\'ont pas d\'Identifiant National Élève (INE) ou sont anciens !'); } foreach ($DB_TAB as $DB_ROW) { $tab_eleves[$DB_ROW['user_id']] = $DB_ROW['user_reference']; } // Récupérer les notes enregistrées ; convertir si besoin en nombre de points correspondants $tab_points = array(); $DB_TAB = DB_STRUCTURE_BREVET::DB_lister_brevet_notes_eleves($listing_eleve_id); if (count($DB_TAB)) { foreach ($DB_TAB as $DB_ROW) { if ($DB_ROW['brevet_epreuve_code'] == CODE_BREVET_EPREUVE_TOTAL) { $tab_points[$DB_ROW['eleve_id']][$DB_ROW['brevet_epreuve_code']] = $DB_ROW['saisie_note']; } elseif ($DB_ROW['brevet_epreuve_point_sup_10']) { $tab_points[$DB_ROW['eleve_id']][$DB_ROW['brevet_epreuve_code']] = max(0, $DB_ROW['saisie_note'] - 10); } else { $tab_points[$DB_ROW['eleve_id']][$DB_ROW['brevet_epreuve_code']] = is_numeric($DB_ROW['saisie_note']) ? $DB_ROW['saisie_note'] * $DB_ROW['brevet_epreuve_coefficient'] : $DB_ROW['saisie_note']; } } } // Fabriquer le fichier csv $csv_contenu = ''; $csv_separateur = '|'; foreach ($tab_eleves as $eleve_id => $user_reference) {
} $tab_brevet_epreuve[$serie_ref][CODE_BREVET_EPREUVE_TOTAL] = 'Avis de synthèse'; } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Récupération des saisies déjà effectuées pour le bilan officiel concerné // //////////////////////////////////////////////////////////////////////////////////////////////////// // Pour la recherche de saisies manquantes, on peut simplement récupérer ce qui est présent dans la table sacoche_brevet_saisie ; en effet : // - on ne regarde que les élèves dont les notes sont enregistrées // - les notes sont toutes enregistrées à la fois, il ne peut pas y avoir de notes manquantes // - seules les appréciations sont donc à étudier, et elles sont retournées avec les notes, il est donc facile de lister les manques $tab_resultat_examen = array(); $tab_matiere_epreuve = array(); $DB_TAB = DB_STRUCTURE_BREVET::DB_recuperer_brevet_saisies_eleves( $liste_eleve_id , 0 /*prof_id*/ , FALSE /*with_epreuve_nom*/ , FALSE /*only_total*/ ); foreach($DB_TAB as $DB_ROW) { if( (in_array($DB_ROW['brevet_serie_ref'].'_'.$DB_ROW['brevet_epreuve_code'],$tab_rubrique)) && (!$DB_ROW['saisie_appreciation']) && ($tab_eleve_infos[$DB_ROW['eleve_id']]['eleve_brevet_serie']==$DB_ROW['brevet_serie_ref']) ) { $rubrique_nom = $tab_brevet_serie[$DB_ROW['brevet_serie_ref']].' - '.$tab_brevet_epreuve[$DB_ROW['brevet_serie_ref']][$DB_ROW['brevet_epreuve_code']]; $tab_resultat_examen[$rubrique_nom][] = 'Absence d\'appréciation pour '.html($tab_eleve_infos[$DB_ROW['eleve_id']]['eleve_nom'].' '.$tab_eleve_infos[$DB_ROW['eleve_id']]['eleve_prenom']); $tab_matiere = explode(',',$DB_ROW['matieres_id']); foreach($tab_matiere as $matieres_id) { if($matieres_id) // Pour éviter "Avis de synthèse" qui n'a pas d'identifiant matière { $tab_matiere_epreuve[$matieres_id][$rubrique_nom] = TRUE; } } }
$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 $TH = array(); $TB = array(); $TF = array(); $select_eleve = ''; foreach($tab_niveau_groupe as $niveau_id => $tab_groupe) { $TH[$niveau_id] = ''; $TB[$niveau_id] = '';
} // // Modifier des associations // if ($action == 'associer') { // liste des élèves $listing_user_id = implode(',', $tab_eleve); if (!$listing_user_id) { exit('Erreur : élève(s) non récupéré(s) !'); } // serie if (!$serie || !isset($tab_brevet_series[$serie])) { exit('Erreur : serie non transmise ou incorrecte !'); } // go DB_STRUCTURE_BREVET::DB_modifier_user_brevet_serie($listing_user_id, $serie); } // // Affichage du bilan des affectations des series aux é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($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']] = ''; } // Récupérer la liste des élèves / classes
// //////////////////////////////////////////////////////////////////////////////////////////////////// // Cas 3/3 imprimer_donnees_eleves_moyennes : Tableau des notes pour chaque élève // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'imprimer_donnees_eleves_moyennes') { // Récupérer les notes enregistrées pour tous les collègues, pour toutes les épreuves $tab_saisie = array(); // [eleve_id][epreuve_code] => note; $DB_TAB = DB_STRUCTURE_BREVET::DB_recuperer_brevet_saisies_eleves($liste_eleve_id, 0, FALSE, FALSE); foreach ($DB_TAB as $DB_ROW) { if ($tab_eleve_infos[$DB_ROW['eleve_id']]['eleve_brevet_serie'] == $DB_ROW['brevet_serie_ref']) { $note = is_numeric($DB_ROW['saisie_note']) ? number_format($DB_ROW['saisie_note'], 1, ',', '') : $DB_ROW['saisie_note']; $tab_saisie[$DB_ROW['eleve_id']][$DB_ROW['brevet_serie_ref'] . $DB_ROW['brevet_epreuve_code']] = $note; } } // Récupérer les notes enregistrées pour la classe $DB_TAB = DB_STRUCTURE_BREVET::DB_recuperer_brevet_saisies_classe($classe_id, 0, FALSE, FALSE); foreach ($DB_TAB as $DB_ROW) { $note = is_numeric($DB_ROW['saisie_note']) ? number_format($DB_ROW['saisie_note'], 1, ',', '') : $DB_ROW['saisie_note']; $tab_saisie[0][$DB_ROW['brevet_serie_ref'] . $DB_ROW['brevet_epreuve_code']] = $note; } // Pour insérer le groupe classe en dernier $tab_eleve_id[] = 0; $tab_eleve_infos[0] = array('eleve_nom' => $classe_nom, 'eleve_prenom' => ''); // Fabrication du PDF ; on a besoin de tourner du texte à 90° // Fabrication d'un CSV en parallèle $tab_brevet_epreuve[$serie_ref][CODE_BREVET_EPREUVE_TOTAL] = 'Total des points'; $nb_epreuves = count($tab_brevet_epreuve, COUNT_RECURSIVE) - count($tab_brevet_epreuve); $archivage_tableau_PDF = new PDF_archivage_tableau(FALSE, 'portrait', 10, 10, 5, 12, 'non'); $archivage_tableau_PDF->moyennes_initialiser($nb_eleves + 1, $nb_epreuves); $archivage_tableau_CSV = ''; $separateur = ';';
// (re)calculer les moyennes de classe concernées if (count($tab_epreuves_maj)) { $listing_epreuves_maj = implode(',', $tab_epreuves_maj); $DB_TAB = DB_STRUCTURE_BREVET::DB_lister_brevet_notes_epreuves_classe($serie_ref, $listing_epreuves_maj, $classe_id); if (count($DB_TAB)) { $tab_notes_considerees = array(); foreach ($DB_TAB as $DB_ROW) { if (is_numeric($DB_ROW['saisie_note'])) { $tab_notes_considerees[$DB_ROW['brevet_epreuve_code']][$DB_ROW['saisie_type']][] = (double) $DB_ROW['saisie_note']; } } foreach ($tab_notes_considerees as $epreuve_code => $tab_saisie_type) { if (isset($tab_saisie_type['eleve'])) { $moyenne_classe_epreuve = round(array_sum($tab_saisie_type['eleve']) / count($tab_saisie_type['eleve']), 1); if (!isset($tab_saisie_type['classe'])) { // Ajouter la moyenne de classe DB_STRUCTURE_BREVET::DB_ajouter_brevet_note($serie_ref, $epreuve_code, 'classe', $classe_id, $tab_notes_transmises[$epreuve_code]['matieres_id'], $moyenne_classe_epreuve); } elseif ($tab_saisie_type['classe'][0] != $moyenne_classe_epreuve) { // Mettre à jour la moyenne de classe DB_STRUCTURE_BREVET::DB_modifier_brevet_note($serie_ref, $epreuve_code, 'classe', $classe_id, $tab_notes_transmises[$epreuve_code]['matieres_id'], $moyenne_classe_epreuve); } } elseif (isset($tab_saisie_type['classe'])) { // Retirer la moyenne de classe DB_STRUCTURE_BREVET::DB_supprimer_brevet_saisie($serie_ref, $epreuve_code, 'classe', $classe_id); } } } } // game over exit(implode('¤', $tab_td)); }
{ if(test_user_droit_specifique($_SESSION['DROIT_'.$tab_types[$DB_ROW['officiel_type']]['droit'].'_VOIR_ARCHIVE'])) { if(is_file(CHEMIN_DOSSIER_OFFICIEL.$_SESSION['BASE'].DS.fabriquer_nom_fichier_bilan_officiel( $DB_ROW['user_id'] , $DB_ROW['officiel_type'] , $DB_ROW['periode_id'] ))) { $_SESSION['tmp_droit_voir_archive'][$DB_ROW['user_id'].$DB_ROW['officiel_type']] = TRUE; // marqueur mis en session pour vérifier que c'est bien cet utilisateur qui veut voir (et à donc le droit de voir) le fichier, car il n'y a pas d'autre vérification de droit ensuite $tab_tbody[$DB_ROW['user_id']][$DB_ROW['periode_id']][] = '<a href="releve_pdf.php?fichier='.$DB_ROW['user_id'].'_'.$DB_ROW['officiel_type'].'_'.$DB_ROW['periode_id'].'" target="_blank">'.$tab_types[$DB_ROW['officiel_type']]['titre'].'</a>' ; } } } // autre boucle pour les fiches brevet (ce n'est pas la même table) if(test_user_droit_specifique($_SESSION['DROIT_'.$tab_types['brevet']['droit'].'_VOIR_ARCHIVE'])) { $bilan_type = 'brevet'; $DB_TAB = DB_STRUCTURE_BREVET::DB_lister_brevet_fichiers( implode(',',$tab_eleve_id) ); foreach($DB_TAB as $user_id => $tab) { if(is_file(CHEMIN_DOSSIER_OFFICIEL.$_SESSION['BASE'].DS.fabriquer_nom_fichier_bilan_officiel( $user_id , $bilan_type , $annee_session_brevet ))) { $_SESSION['tmp_droit_voir_archive'][$user_id.$bilan_type] = TRUE; // marqueur mis en session pour vérifier que c'est bien cet utilisateur qui veut voir (et à donc le droit de voir) le fichier, car il n'y a pas d'autre vérification de droit ensuite $tab_tbody[$user_id]['+'.$annee_session_brevet][] = '<a href="releve_pdf.php?fichier='.$user_id.'_'.$bilan_type.'_'.$annee_session_brevet.'" target="_blank">'.$tab_types['brevet']['titre'].'</a>' ; $tab_thead['+'.$annee_session_brevet] = '<th class="hc">Année</th>'; } } } // Assemblage et affichage du tableau. echo'<p>Ces bilans sont des copies numériques, laissées à disposition <span class="danger">seulement jusqu\'à la fin de l\'année scolaire.</span></p>'.NL; echo'<p class="astuce">Cliquer sur un lien atteste que vous avez pris connaissance du document correspondant.</p>'.NL;
* * 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::_("Étape n°1 - Indiquer la série des élèves concernés")); // Fabrication des éléments select du formulaire $tab_groupes = DB_STRUCTURE_COMMUN::DB_OPT_regroupements_etabl(); $tab_series = DB_STRUCTURE_BREVET::DB_OPT_brevet_series(); $select_eleve = HtmlForm::afficher_select($tab_groupes , 'select_groupe' /*select_nom*/ , '' /*option_first*/ , FALSE /*selection*/ , 'regroupements' /*optgroup*/ ); $select_serie = HtmlForm::afficher_select($tab_series , 'f_serie' /*select_nom*/ , '' /*option_first*/ , FALSE /*selection*/ , '' /*optgroup*/ ); ?> <p> <span class="manuel"><a class="pop_up" href="<?php echo SERVEUR_DOCUMENTAIRE ?>?fichier=releves_bilans__notanet_fiches_brevet#toggle_etape1_series">DOC : Notanet & Fiches brevet → Choix des séries</a></span><br /> <span class="danger">Modifier la série d'un élève supprime les notes ou appréciations éventuellement enregistrées aux étapes suivantes.</span> </p> <hr /> <form action="#" method="post" id="form_select"> <table><tr> <td class="nu" style="width:25em"> <b>Élèves :</b><span class="check_multiple"><q class="cocher_tout" title="Tout cocher."></q><q class="cocher_rien" title="Tout décocher."></q><q class="cocher_inverse" title="Tout échanger."></q></span><br /> <?php echo $select_eleve ?><br />
$tab_etabl_coords['adresse3'] = $_SESSION['ETABLISSEMENT']['ADRESSE3']; } if ($_SESSION['ETABLISSEMENT']['TELEPHONE']) { $tab_etabl_coords['telephone'] = 'Tel : ' . $_SESSION['ETABLISSEMENT']['TELEPHONE']; } if ($_SESSION['ETABLISSEMENT']['FAX']) { $tab_etabl_coords['fax'] = 'Fax : ' . $_SESSION['ETABLISSEMENT']['FAX']; } if ($_SESSION['ETABLISSEMENT']['COURRIEL']) { $tab_etabl_coords['courriel'] = 'Mel : ' . $_SESSION['ETABLISSEMENT']['COURRIEL']; } if ($_SESSION['ETABLISSEMENT']['URL']) { $tab_etabl_coords['url'] = 'Web : ' . $_SESSION['ETABLISSEMENT']['URL']; } // académie, département, année $DB_ROW = DB_STRUCTURE_BREVET::DB_recuperer_departement_academie($_SESSION['WEBMESTRE_UAI']); if (empty($DB_ROW)) { $geo_departement_nom = $geo_academie_nom = ''; } else { extract($DB_ROW); // $geo_departement_nom $geo_academie_nom } $annee_session_brevet = annee_session_brevet(); // Tag date heure initiales $tag_date_heure_initiales = date('d/m/Y H:i') . ' ' . afficher_identite_initiale($_SESSION['USER_PRENOM'], TRUE, $_SESSION['USER_NOM'], TRUE); // //////////////////////////////////////////////////////////////////////////////////////////////////// // Initialisation de variables supplémentaires // INCLUSION DU CODE COMMUN À PLUSIEURS PAGES // //////////////////////////////////////////////////////////////////////////////////////////////////// $tab_pages_decoupe_pdf = array(); $make_action = 'imprimer';
// Autres chaines spécifiques... $is_sous_groupe = ($groupe_id) ? TRUE : FALSE ; $tab_action = array('initialiser','charger'); // On vérifie les paramètres principaux if( (!in_array($ACTION,$tab_action)) || !$classe_id || ( (!$eleve_id)&&($ACTION!='initialiser') ) ) { exit('Erreur avec les données transmises !'); } // On vérifie que la fiche brevet est bien accessible en modification et on récupère les infos associées (nom de la classe, id des élèves concernés avec lesquels l'intersection est faite ultérieurement). $DB_ROW = DB_STRUCTURE_BREVET::DB_recuperer_brevet_classe_infos($classe_id); if(empty($DB_ROW)) { exit('Classe sans élèves concernés !'); } $BILAN_ETAT = $DB_ROW['fiche_brevet']; $classe_nom = $DB_ROW['groupe_nom']; $tab_id_eleves_avec_notes = explode(',',$DB_ROW['listing_user_id']); if(!$BILAN_ETAT) { exit('Fiche brevet introuvable !'); } if(in_array($BILAN_ETAT,array('0absence','1vide'))) { exit('Fiche brevet interdite d\'accès pour cette action !');
if(empty($DB_TAB_epreuves)) { exit('Erreur : série inconnue !'); } // Test des paramètres des épreuves $tab_choix_epreuve = array(); foreach($DB_TAB_epreuves as $DB_ROW) { $epreuve = $DB_ROW['brevet_epreuve_code']; $recherche = (isset($_POST['f_'.$serie.'_'.$epreuve.'_recherche'])) ? Clean::entier($_POST['f_'.$serie.'_'.$epreuve.'_recherche']) : NULL ; $moyenne = (isset($_POST['f_'.$serie.'_'.$epreuve.'_moyenne'])) ? Clean::entier($_POST['f_'.$serie.'_'.$epreuve.'_moyenne']) : NULL ; $tab_matieres = (isset($_POST['f_'.$serie.'_'.$epreuve.'_matieres'])) ? explode(',',$_POST['f_'.$serie.'_'.$epreuve.'_matieres']) : array() ; $matieres = implode( ',' , array_filter( Clean::map_entier($tab_matieres) , 'positif' ) ); if( ($recherche===NULL) || ($moyenne===NULL) || ( empty($matieres) && $DB_ROW['brevet_epreuve_obligatoire'] ) ) { exit('Erreur : données manquante pour l\'épreuve "'.html($DB_ROW['brevet_epreuve_nom']).'" !'); } $tab_choix_epreuve[$epreuve] = array( 'recherche'=>$recherche , 'moyenne'=>$moyenne , 'matieres'=>$matieres ); } // Enregistrement foreach($tab_choix_epreuve as $epreuve=>$tab_choix) { DB_STRUCTURE_BREVET::DB_modifier_epreuve_choix( $serie , $epreuve , $tab_choix['recherche'] , $tab_choix['moyenne'] , $tab_choix['matieres'] ); } exit('ok'); ?>
// Ne pas exécuter la suite de ce fichier inclus. } // Formulaires communs $tab_choix_recherche = array(); $tab_choix_recherche[] = array('valeur' => 1, 'texte' => 'utiliser en priorité les moyennes des bulletins (si existantes)'); $tab_choix_recherche[] = array('valeur' => 0, 'texte' => 'utiliser la moyenne annuelle des acquisitions (jusqu\'à ce jour)'); $tab_choix_moyenne = array(); $tab_choix_moyenne[] = array('valeur' => 1, 'texte' => 'utiliser la moyenne du premier référentiel trouvé'); $tab_choix_moyenne[] = array('valeur' => 0, 'texte' => 'utiliser la moyenne de tous les référentiels trouvés'); // Passer les séries de Brevet en revue foreach ($DB_TAB_series as $DB_ROW) { $s = $DB_ROW['nombre'] > 1 ? 's' : ''; echo '<h2 id="h2_' . $DB_ROW['brevet_serie_ref'] . '">' . html($DB_ROW['brevet_serie_nom']) . ' (' . $DB_ROW['nombre'] . ' élève' . $s . ')</h2>' . NL; echo '<form action="#" method="post" id="form_' . $DB_ROW['brevet_serie_ref'] . '">' . NL; // Récupérer les paramètres et lister les réglages éventuellement déjà enregistrés $DB_TAB_epreuves = DB_STRUCTURE_BREVET::DB_lister_brevet_epreuves($DB_ROW['brevet_serie_ref']); foreach ($DB_TAB_epreuves as $DB_ROW) { // Id & Nom épreuve & Infos $id_start = '' . $DB_ROW['brevet_serie_ref'] . '_' . $DB_ROW['brevet_epreuve_code']; echo '<h3 id="h3_' . $id_start . '">' . html($DB_ROW['brevet_epreuve_nom']) . '</h3>' . NL; if (!$DB_ROW['brevet_epreuve_note_comptee']) { echo '<p class="astuce">Présence d\'une note obligatoire, mais seulement à titre informatif, celle-ci n\'étant pas comptabilisée dans le total des points.</p>' . NL; } if (!$DB_ROW['brevet_epreuve_note_chiffree']) { echo '<p class="astuce">Pas de note chiffrée à saisir pour cette épreuve : uniquement un état de validation.</p>' . NL; } echo '<p>' . NL; // Mode de recherche $f_nom_recherche = 'f_' . $id_start . '_recherche'; $selection_recherche = $DB_ROW['brevet_epreuve_choix_recherche'] === NULL ? FALSE : $DB_ROW['brevet_epreuve_choix_recherche']; echo '<label class="tab" for="' . $f_nom_recherche . '">Mode de recherche :</label>' . HtmlForm::afficher_select($tab_choix_recherche, $f_nom_recherche, FALSE, $selection_recherche, '') . '<br />' . NL;
$avis_et_appreciation = ($epreuve_id!=CODE_BREVET_EPREUVE_TOTAL) ? $appreciation : $avis_conseil.'|'.$appreciation ; DB_STRUCTURE_BREVET::DB_modifier_brevet_appreciation($serie_ref , $epreuve_id , $eleve_id , $prof_id , $avis_et_appreciation); exit('<ok>'.html($appreciation)); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Cas 2 : suppression d'une appréciation // //////////////////////////////////////////////////////////////////////////////////////////////////// if($ACTION=='supprimer_appr') { if( ($BILAN_ETAT=='2rubrique') && ($epreuve_id==CODE_BREVET_EPREUVE_TOTAL) ) { exit('Erreur avec les données transmises !'); } DB_STRUCTURE_BREVET::DB_modifier_brevet_appreciation($serie_ref , $epreuve_id , $eleve_id , 0 /*prof_id*/ , '' /*appreciation*/ ); $ACTION = ($epreuve_id!=CODE_BREVET_EPREUVE_TOTAL) ? '<button type="button" class="ajouter">Ajouter l\'appréciation.</button>' : '<button type="button" class="ajouter">Ajouter l\'avis de synthèse.</button>' ; exit('<div class="hc">'.$ACTION.'</div>'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Cas 3 & 4 : affichage des données d'un élève (le premier si initialisation ; l'élève indiqué sinon) // //////////////////////////////////////////////////////////////////////////////////////////////////// // Si besoin, fabriquer le formulaire avec la liste des élèves concernés : soit d'une classe (en général) soit d'une classe ET d'un sous-groupe pour un prof affecté à un groupe d'élèves $groupe_nom = (!$is_sous_groupe) ? $classe_nom : $classe_nom.' - '.DB_STRUCTURE_COMMUN::DB_recuperer_groupe_nom($groupe_id) ; if($ACTION=='initialiser') { $DB_TAB = (!$is_sous_groupe) ? DB_STRUCTURE_COMMUN::DB_lister_users_regroupement( 'eleve' /*profil_type*/ , 1 /*statut*/ , 'classe' , $classe_id , 'alpha' /*eleves_ordre*/ ) : DB_STRUCTURE_COMMUN::DB_lister_eleves_classe_et_groupe($classe_id,$groupe_id) ; if(empty($DB_TAB))
foreach ($DB_TAB as $DB_ROW) { $tab_brevet_serie[$serie_ref] = $DB_ROW['brevet_serie_nom']; $tab_brevet_epreuve[$serie_ref][$DB_ROW['brevet_epreuve_code']] = $DB_ROW['brevet_epreuve_nom']; } $tab_brevet_epreuve[$serie_ref][CODE_BREVET_EPREUVE_TOTAL] = 'Avis de synthèse'; } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Récupération des saisies déjà effectuées pour le bilan officiel concerné // //////////////////////////////////////////////////////////////////////////////////////////////////// // Pour la recherche de saisies manquantes, on peut simplement récupérer ce qui est présent dans la table sacoche_brevet_saisie ; en effet : // - on ne regarde que les élèves dont les notes sont enregistrées // - les notes sont toutes enregistrées à la fois, il ne peut pas y avoir de notes manquantes // - seules les appréciations sont donc à étudier, et elles sont retournées avec les notes, il est donc facile de lister les manques $tab_resultat_examen = array(); $tab_matiere_epreuve = array(); $DB_TAB = DB_STRUCTURE_BREVET::DB_recuperer_brevet_saisies_eleves($liste_eleve_id, 0, FALSE, FALSE); foreach ($DB_TAB as $DB_ROW) { if (in_array($DB_ROW['brevet_serie_ref'] . '_' . $DB_ROW['brevet_epreuve_code'], $tab_rubrique) && !$DB_ROW['saisie_appreciation'] && $tab_eleve_infos[$DB_ROW['eleve_id']]['eleve_brevet_serie'] == $DB_ROW['brevet_serie_ref']) { $rubrique_nom = $tab_brevet_serie[$DB_ROW['brevet_serie_ref']] . ' - ' . $tab_brevet_epreuve[$DB_ROW['brevet_serie_ref']][$DB_ROW['brevet_epreuve_code']]; $tab_resultat_examen[$rubrique_nom][] = 'Absence d\'appréciation pour ' . html($tab_eleve_infos[$DB_ROW['eleve_id']]['eleve_nom'] . ' ' . $tab_eleve_infos[$DB_ROW['eleve_id']]['eleve_prenom']); $tab_matiere = explode(',', $DB_ROW['matieres_id']); foreach ($tab_matiere as $matieres_id) { if ($matieres_id) { $tab_matiere_epreuve[$matieres_id][$rubrique_nom] = TRUE; } } } } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Affichage du résultat de l'analyse // ////////////////////////////////////////////////////////////////////////////////////////////////////