$lignes .= '<tr id="tr_' . $user_id . '"><td>' . html($user_nom_prenom) . '</td><td><input type="text" size="3" maxlength="3" id="td1_' . $user_id . '" value="' . $nb_absence . '" /></td><td><input type="text" size="3" maxlength="3" id="td2_' . $user_id . '" value="' . $nb_absence_nj . '" /></td><td><input type="text" size="3" maxlength="3" id="td3_' . $user_id . '" value="' . $nb_retard . '" /></td><td><input type="text" size="3" maxlength="3" id="td4_' . $user_id . '" value="' . $nb_retard_nj . '" /></td></tr>'; } exit($lignes); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Traitement de saisies manuelles // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'enregistrer_saisies' && $periode_id && $datas) { // Récupération des données saisies $tab_eleves = explode('_', $datas); foreach ($tab_eleves as $eleves_infos) { list($user_id, $nb_absence, $nb_absence_nj, $nb_retard, $nb_retard_nj) = explode('.', $eleves_infos); $user_id = (int) $user_id; $nb_absence = $nb_absence === '' ? NULL : (int) $nb_absence; $nb_absence_nj = $nb_absence_nj === '' ? NULL : (int) $nb_absence_nj; $nb_retard = $nb_retard === '' ? NULL : (int) $nb_retard; $nb_retard_nj = $nb_retard_nj === '' ? NULL : (int) $nb_retard_nj; DB_STRUCTURE_OFFICIEL::DB_modifier_officiel_assiduite('manuel', $periode_id, $user_id, $nb_absence, $nb_absence_nj, $nb_retard, $nb_retard_nj); } exit('ok'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Il se peut que rien n'ait été récupéré à cause de l'upload d'un fichier trop lourd // //////////////////////////////////////////////////////////////////////////////////////////////////// if (empty($_POST)) { exit('Erreur : aucune donnée reçue ! Fichier trop lourd ? ' . InfoServeur::minimum_limitations_upload()); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // On ne devrait pas en arriver là... // //////////////////////////////////////////////////////////////////////////////////////////////////// exit('Erreur avec les données transmises !');
// Pas $tab_rubrique_id car il ne faut pas juste restreindre à la liste des rubriques dont on souhaite vérifier l'appréciation afin de récupérer les bilans de tous les élèves concernés. $tab_eleve_id = $tab_eleve_id; $tab_matiere_id = array(); require CHEMIN_DOSSIER_INCLUDE . 'noyau_socle_releve.php'; } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Affichage du résultat de l'analyse // //////////////////////////////////////////////////////////////////////////////////////////////////// $nb_pb_rubriques = count($tab_resultat_examen); if (!$nb_pb_rubriques) { exit('<p class="ti"><label class="valide">Aucune saisie manquante trouvée.</label></p>'); } else { // Tentative d'indication des collègues potentiellement concernés $tab_rubrique_profs = array(); if (in_array($BILAN_TYPE, array('releve', 'bulletin'))) { $DB_TAB = DB_STRUCTURE_OFFICIEL::DB_recuperer_professeurs_eleves_matieres($classe_id, $liste_eleve_id, $liste_rubrique_id); if (!empty($DB_TAB)) { $tab_tmp = array(); foreach ($DB_TAB as $DB_ROW) { $tab_tmp[$DB_ROW['matiere_id']][$DB_ROW['user_id']] = $DB_ROW['user_nom'] . ' ' . $DB_ROW['user_prenom']; } foreach ($tab_tmp as $matiere_id => $tab_profs) { // On peut avoir des matières qui n'apparaissent pas sur le bilan officiel if (isset($tab_matiere[$matiere_id])) { $rubrique_nom = $tab_matiere[$matiere_id]['matiere_nom']; $nb_profs = count($tab_profs); if ($nb_profs == 1) { $tab_rubrique_profs[$rubrique_nom] = '[' . current($tab_profs) . ']'; } else { if ($nb_profs <= 3) { $tab_rubrique_profs[$rubrique_nom] = '[' . implode(' ; ', $tab_profs) . ']';
exit('Erreur : aucune saisie trouvée dans le fichier transmis !'); } // On compare avec ce qui est enregistré dans la base pour distinguer s'il s'agit d'UPDATE, d'INSERT, ou si cela n'a pas changé. // Cette partie de code est inspirée de [code_officiel_archiver.php] $liste_eleve_id = implode(',',array_keys($tab_eleve_id)); if($BILAN_TYPE=='bulletin') { $DB_TAB = array_merge ( DB_STRUCTURE_OFFICIEL::DB_recuperer_bilan_officiel_saisies_classe( $BILAN_TYPE , $periode_id , $classe_id , $_SESSION['USER_ID'] , FALSE /*with_periodes_avant*/ , FALSE /*only_synthese_generale*/ ), DB_STRUCTURE_OFFICIEL::DB_recuperer_bilan_officiel_saisies_eleves( $BILAN_TYPE , $periode_id , $liste_eleve_id , $_SESSION['USER_ID'] , TRUE /*with_rubrique_nom*/ , FALSE /*with_periodes_avant*/ , FALSE /*only_synthese_generale*/ ) ); } else { $DB_TAB = DB_STRUCTURE_OFFICIEL::DB_recuperer_bilan_officiel_saisies_eleves( $BILAN_TYPE , $periode_id , $liste_eleve_id , $_SESSION['USER_ID'] , TRUE /*with_rubrique_nom*/ , FALSE /*with_periodes_avant*/ , FALSE /*only_synthese_generale*/ ); } // Les appréciations foreach($DB_TAB as $key => $DB_ROW) { if($DB_ROW['prof_id']) { if(isset($tab_donnees_csv[$DB_ROW['rubrique_id']][$DB_ROW['eleve_id']]['appreciation'])) { $appreciation = $tab_donnees_csv[$DB_ROW['rubrique_id']][$DB_ROW['eleve_id']]['appreciation']['val']; $tab_donnees_csv[$DB_ROW['rubrique_id']][$DB_ROW['eleve_id']]['appreciation']['mode'] = ( $appreciation == $DB_ROW['saisie_appreciation'] ) ? 'idem' : 'update' ; } unset($DB_TAB[$key]); } } // Les notes
if($_SESSION['USER_PROFIL']=='eleve') { $tab_eleve_id[] = $_SESSION['USER_ID']; $tab_tbody[$_SESSION['USER_ID']][0] = ''; } else { foreach($_SESSION['OPT_PARENT_ENFANTS'] as $tab) { $tab_eleve_id[] = $tab['valeur']; $tab_tbody[$tab['valeur']][0] = '<th>'.html($tab['texte']).'</th>'; } } // lister les bilans officiels archivés de l'année courante $DB_TAB = DB_STRUCTURE_OFFICIEL::DB_lister_bilan_officiel_fichiers( '' /*BILAN_TYPE*/ , 0 /*periode_id*/ , $tab_eleve_id ); $_SESSION['tmp_droit_voir_archive'] = array(); // 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 foreach($DB_TAB as $DB_ROW) { if(strpos($_SESSION['DROIT_OFFICIEL_'.$tab_types[$DB_ROW['officiel_type']]['droit'].'_VOIR_ARCHIVE'],$_SESSION['USER_PROFIL'])!==FALSE) { 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'].'" class="lien_ext">'.$tab_types[$DB_ROW['officiel_type']]['titre'].'</a>' ; } } } // Assemblage et affichage du tableau.
// car droit commun pour tous les paliers } if ($droit_voir_archives_pdf) { // identifiants élèves concernés $tab_eleve_id = array(); if ($_SESSION['USER_PROFIL_TYPE'] == 'eleve') { $tab_eleve_id[] = $_SESSION['USER_ID']; } else { foreach ($_SESSION['OPT_PARENT_ENFANTS'] as $tab) { $tab_eleve_id[] = $tab['valeur']; } } $tab_eleves = $_SESSION['USER_PROFIL_TYPE'] == 'eleve' ? array(0 => array('valeur' => $_SESSION['USER_ID'])) : $_SESSION['OPT_PARENT_ENFANTS']; $nb_eleves = count($tab_eleve_id); // lister les bilans officiels archivés de l'année courante $DB_TAB = DB_STRUCTURE_OFFICIEL::DB_lister_bilan_officiel_fichiers('', 0, $tab_eleve_id, TRUE, $_SESSION['USER_PROFIL_TYPE']); foreach ($DB_TAB as $DB_ROW) { 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']))) { $text_eleve_nom = $nb_eleves > 1 ? html($_SESSION['OPT_PARENT_ENFANTS'][array_search($DB_ROW['user_id'], $tab_eleve_id)]['texte']) . ' || ' : ''; $tab_accueil['officiel']['nombre'] += 1; $tab_accueil['officiel']['contenu'] .= '<li>' . $text_eleve_nom . '<a href="./index.php?page=officiel_voir_archive">' . $tab_types[$DB_ROW['officiel_type']]['titre'] . ' || ' . html($DB_ROW['periode_nom']) . '</a></li>'; } } } if ($tab_accueil['officiel']['nombre']) { $tab_accueil['officiel']['contenu'] = '<div class="b"><TG> ' . $tab_accueil['officiel']['masque'] . '</div>' . '<ul class="puce p">' . $tab_accueil['officiel']['contenu'] . '</ul>'; } } } // ////////////////////////////////////////////////////////////////////////////////////////////////////
// //////////////////////////////////////////////////////////////////////////////////////////////////// $tab_periode_eleves = isset($_POST['f_periode_eleves']) ? explode('_', $_POST['f_periode_eleves']) : ''; $tab_eleves_moyennes = isset($_POST['f_eleves_moyennes']) ? explode('x', $_POST['f_eleves_moyennes']) : ''; $rubrique_id = isset($_POST['f_rubrique']) ? Clean::entier($_POST['f_rubrique']) : 0; $periode_id = count($tab_periode_eleves) ? $tab_periode_eleves[0] : 0; // On vérifie les paramètres principaux if (!$periode_id || !$rubrique_id || count($tab_periode_eleves) < 2 || !count($tab_eleves_moyennes) || $_SESSION['USER_PROFIL_TYPE'] != 'professeur' || !$_SESSION['OFFICIEL']['BULLETIN_MOYENNE_SCORES']) { exit('Erreur avec les données transmises !'); } // On passe en revue les données unset($tab_periode_eleves[0]); $tab_eleve_id = array_filter(Clean::map_entier($tab_periode_eleves), 'positif'); $appreciation = 'Moyenne figée reportée par ' . afficher_identite_initiale($_SESSION['USER_NOM'], FALSE, $_SESSION['USER_PRENOM'], TRUE, $_SESSION['USER_GENRE']); $nb_reports = 0; foreach ($tab_eleves_moyennes as $eleve_moyenne) { list($eleve_id, $moyenne) = explode('_', $eleve_moyenne); $eleve_id = (int) $eleve_id; $note = round($moyenne, 1); // $tab_eleve_id contient la liste des élèves dont il faut changer les notes ; ce peut n'être qu'une intersection groupe x classe // $tab_eleves_moyennes contient les moyennes de tous les élèves du groupe ou de la classe if (in_array($eleve_id, $tab_eleve_id)) { DB_STRUCTURE_OFFICIEL::DB_modifier_bilan_officiel_saisie('bulletin', $periode_id, $eleve_id, $rubrique_id, 0, 'eleve', $note, $appreciation); $nb_reports++; } } // On affiche le résultat if (!$nb_reports) { exit('Erreur avec les données transmises !'); } $s = $nb_reports > 1 ? 's' : ''; exit('Note' . $s . ' reportée' . $s . ' pour ' . $nb_reports . ' élève' . $s . '.');
function options_note($epreuve_obligatoire, $epreuve_note_chiffree, $epreuve_code_speciaux) { global $optgroup_notes_chiffrees, $tab_codes; $option_sans_objet = $epreuve_obligatoire ? '' : '<option value="">sans objet</option>'; // Codes spéciaux $optgroup_codes_speciaux = '<optgroup label="Codes spéciaux">'; $tab_code_speciaux = explode(',', $epreuve_code_speciaux); foreach ($tab_code_speciaux as $code_special) { $optgroup_codes_speciaux .= '<option value="' . $code_special . '">' . $tab_codes[$code_special] . '</option>'; } $optgroup_codes_speciaux .= '</optgroup>'; return !$epreuve_note_chiffree ? $option_sans_objet . $optgroup_codes_speciaux : $option_sans_objet . $optgroup_codes_speciaux . $optgroup_notes_chiffrees; } // Récupérer les moyennes de bulletins (on ne sait pas encore pour quelle matière c'est demandé, mais c'est le mode par défaut, et ce n'est pas dur à récupérer) $tab_moyennes_bulletin = array(); $DB_TAB = DB_STRUCTURE_OFFICIEL::DB_recuperer_bilan_officiel_notes_eleve_periodes($eleve_id); foreach ($DB_TAB as $DB_ROW) { $note_affichee = $_SESSION['OFFICIEL']['BULLETIN_CONVERSION_SUR_20'] ? $DB_ROW['saisie_note'] : round($DB_ROW['saisie_note'] * 5) . '%'; $tab_moyennes_bulletin[$DB_ROW['matiere_id']]['note'][$DB_ROW['periode_id']] = $DB_ROW['saisie_note']; $tab_moyennes_bulletin[$DB_ROW['matiere_id']]['txt'][$DB_ROW['periode_id']] = $note_affichee . ' <img alt="" src="./_img/bulle_aide.png" width="16" height="16" title="' . html($DB_ROW['periode_nom']) . '" />'; } // Récupérer les noms des matières $DB_TAB = DB_STRUCTURE_COMMUN::DB_OPT_matieres_etabl(); $tab_matieres_etabl = array(); foreach ($DB_TAB as $DB_ROW) { $tab_matieres_etabl[$DB_ROW['valeur']] = html($DB_ROW['texte']); } // Paramètres requis par [noyau_items_releve.php] pour calculer une moyenne annuelle $releve_modele = 'matiere'; $releve_individuel_format = 'eleve'; $aff_etat_acquisition = 0;
unset($tab_periode_eleves[0]); $tab_eleve_id = array_filter( Clean::map_entier($tab_periode_eleves) , 'positif' ); $appreciation = 'Moyenne figée reportée par '.afficher_identite_initiale($_SESSION['USER_NOM'],FALSE,$_SESSION['USER_PRENOM'],TRUE,$_SESSION['USER_GENRE']); $nb_reports = 0; foreach($tab_eleves_moyennes as $eleve_moyenne) { list($eleve_id,$moyenne) = explode('_',$eleve_moyenne); $eleve_id = (int)$eleve_id; $note = round($moyenne,1); // $tab_eleve_id contient la liste des élèves dont il faut changer les notes ; ce peut n'être qu'une intersection groupe x classe // $tab_eleves_moyennes contient les moyennes de tous les élèves du groupe ou de la classe if(in_array($eleve_id,$tab_eleve_id)) { DB_STRUCTURE_OFFICIEL::DB_modifier_bilan_officiel_saisie( 'bulletin' /*BILAN_TYPE*/ , $periode_id , $eleve_id , $rubrique_id , 0 /*prof_id*/ , 'eleve' , $note , $appreciation ); $nb_reports++; } } // On affiche le résultat if(!$nb_reports) { exit('Erreur avec les données transmises !'); } $s = ($nb_reports>1) ? 's' : '' ; exit('Note'.$s.' reportée'.$s.' pour '.$nb_reports.' élève'.$s.'.'); ?>
function enregistrer_note($BILAN_TYPE, $periode_id, $eleve_id, $rubrique_id, $moyenne) { $note = $_SESSION['OFFICIEL']['BULLETIN_CONVERSION_SUR_20'] ? round($moyenne, 1) : round($moyenne / 5, 1); $appreciation = 'Moyenne figée reportée par ' . afficher_identite_initiale($_SESSION['USER_NOM'], FALSE, $_SESSION['USER_PRENOM'], TRUE, $_SESSION['USER_GENRE']); DB_STRUCTURE_OFFICIEL::DB_modifier_bilan_officiel_saisie($BILAN_TYPE, $periode_id, $eleve_id, $rubrique_id, 0, 'eleve', $note, $appreciation); return array($note, $appreciation); }
$fichier_copie_nom = 'officiel_'.$bilan_type.'_archive_'.$eleve_id.'_'.$periode_id.'_'.fabriquer_fin_nom_fichier__date_et_alea().'.pdf' ; copy($fichier_archive,CHEMIN_DOSSIER_EXPORT.$fichier_copie_nom); // Enregistrement de l'accès if( in_array( $_SESSION['USER_PROFIL_TYPE'] , array('eleve','parent') ) ) { // Connexion à la base de données adaptée (à ce stade, plus besoin de vérif, il s'agit d'une install bien en place...). if(HEBERGEUR_INSTALLATION=='multi-structures') { $fichier_mysql_config = 'serveur_sacoche_structure_'.$_SESSION['BASE']; $fichier_class_config = 'class.DB.config.sacoche_structure'; } elseif(HEBERGEUR_INSTALLATION=='mono-structure') { $fichier_mysql_config = 'serveur_sacoche_structure'; $fichier_class_config = 'class.DB.config.sacoche_structure'; } // Chargement du fichier de connexion à la BDD require(CHEMIN_DOSSIER_MYSQL.$fichier_mysql_config.'.php'); require(CHEMIN_DOSSIER_INCLUDE.$fichier_class_config.'.php'); // Et enfin la requête DB_STRUCTURE_OFFICIEL::DB_modifier_bilan_officiel_fichier_date( $eleve_id , $bilan_type , $periode_id , 'consultation_'.$_SESSION['USER_PROFIL_TYPE'] ); } // Redirection du navigateur header('Status: 302 Found', TRUE, 302); header('Location: '.URL_DIR_EXPORT.$fichier_copie_nom); exit(); ?>
$tab_donnees_csv[$rubrique_id][$eleve_id]['appreciation'] = array('val' => mb_substr($appreciation, 0, $longueur_maxi), 'mode' => 'insert'); } } } } } if (!count($tab_donnees_csv)) { exit('Erreur : aucune saisie trouvée dans le fichier transmis !'); } // On compare avec ce qui est enregistré dans la base pour distinguer s'il s'agit d'UPDATE, d'INSERT, ou si cela n'a pas changé. // Cette partie de code est inspirée de [code_officiel_archiver.php] $liste_eleve_id = implode(',', array_keys($tab_eleve_id)); if ($BILAN_TYPE == 'bulletin') { $DB_TAB = array_merge(DB_STRUCTURE_OFFICIEL::DB_recuperer_bilan_officiel_saisies_classe($periode_id, $classe_id, $_SESSION['USER_ID'], FALSE, FALSE), DB_STRUCTURE_OFFICIEL::DB_recuperer_bilan_officiel_saisies_eleves($BILAN_TYPE, $periode_id, $liste_eleve_id, $_SESSION['USER_ID'], TRUE, FALSE, FALSE)); } else { $DB_TAB = DB_STRUCTURE_OFFICIEL::DB_recuperer_bilan_officiel_saisies_eleves($BILAN_TYPE, $periode_id, $liste_eleve_id, $_SESSION['USER_ID'], TRUE, FALSE, FALSE); } // Les appréciations foreach ($DB_TAB as $key => $DB_ROW) { if ($DB_ROW['prof_id']) { if (isset($tab_donnees_csv[$DB_ROW['rubrique_id']][$DB_ROW['eleve_id']]['appreciation'])) { $appreciation = $tab_donnees_csv[$DB_ROW['rubrique_id']][$DB_ROW['eleve_id']]['appreciation']['val']; $tab_donnees_csv[$DB_ROW['rubrique_id']][$DB_ROW['eleve_id']]['appreciation']['mode'] = $appreciation == $DB_ROW['saisie_appreciation'] ? 'idem' : 'update'; } unset($DB_TAB[$key]); } } // Les notes if ($with_note) { foreach ($DB_TAB as $key => $DB_ROW) { if (isset($tab_donnees_csv[$DB_ROW['rubrique_id']][$DB_ROW['eleve_id']]['moyenne'])) {
// Remplacer le point décimal par une virgule pour le tableur. } $archivage_tableau_PDF->SetXY($archivage_tableau_PDF->marge_gauche, $archivage_tableau_PDF->GetY() + $archivage_tableau_PDF->cases_hauteur); $archivage_tableau_CSV .= "\r\n"; } } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Cas 6/6 imprimer_donnees_eleves_recapitulatif : Récapitulatif annuel des moyennes et appréciations par élève // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'imprimer_donnees_eleves_recapitulatif') { // Rechercher et mémoriser les données enregistrées $tab_saisies = array(); // [eleve_id][rubrique_id] => array(note[periode],appreciation[periode],professeur[id]) $tab_periodes = array(); $tab_rubriques = array(); $DB_TAB = DB_STRUCTURE_OFFICIEL::DB_recuperer_bilan_officiel_saisies_eleves($BILAN_TYPE, 0, $liste_eleve_id, 0, TRUE, TRUE, FALSE); foreach ($DB_TAB as $DB_ROW) { if ($DB_ROW['rubrique_id']) { if ($DB_ROW['prof_id']) { $tab_saisies[$DB_ROW['eleve_id']][$DB_ROW['rubrique_id']]['appreciation'][$DB_ROW['periode_ordre']] = suppression_sauts_de_ligne($DB_ROW['saisie_appreciation']); $tab_saisies[$DB_ROW['eleve_id']][$DB_ROW['rubrique_id']]['professeur'][$DB_ROW['prof_id']] = afficher_identite_initiale($DB_ROW['user_nom'], FALSE, $DB_ROW['user_prenom'], TRUE, $DB_ROW['user_genre']); } else { if ($DB_ROW['saisie_note'] !== NULL && !in_array($DB_ROW['rubrique_id'], $tab_moyenne_exception_matieres)) { $tab_saisies[$DB_ROW['eleve_id']][$DB_ROW['rubrique_id']]['note'][$DB_ROW['periode_ordre']] = (double) $DB_ROW['saisie_note']; } } $tab_periodes[$DB_ROW['periode_ordre']] = $DB_ROW['periode_nom']; $tab_rubriques[$DB_ROW['rubrique_id']] = $DB_ROW['rubrique_nom']; } } // Calcul des moyennes annuelles et de classe
$tab_eleve_id = array(); if($_SESSION['USER_PROFIL_TYPE']=='eleve') { $tab_eleve_id[] = $_SESSION['USER_ID']; } else { foreach($_SESSION['OPT_PARENT_ENFANTS'] as $tab) { $tab_eleve_id[] = $tab['valeur']; } } $tab_eleves = ($_SESSION['USER_PROFIL_TYPE']=='eleve') ? array(0=>array('valeur'=>$_SESSION['USER_ID'])) : $_SESSION['OPT_PARENT_ENFANTS'] ; $nb_eleves = count($tab_eleve_id); // lister les bilans officiels archivés de l'année courante $DB_TAB = DB_STRUCTURE_OFFICIEL::DB_lister_bilan_officiel_fichiers( '' /*BILAN_TYPE*/ , 0 /*periode_id*/ , $tab_eleve_id , TRUE /*with_periode_nom*/ , $_SESSION['USER_PROFIL_TYPE'] /*only_profil_non_vu*/ ); foreach($DB_TAB as $DB_ROW) { 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'] ))) { $text_eleve_nom = ($nb_eleves>1) ? html($_SESSION['OPT_PARENT_ENFANTS'][array_search($DB_ROW['user_id'],$tab_eleve_id)]['texte']).' || ' : '' ; $tab_accueil['officiel']['nombre'] += 1; $tab_accueil['officiel']['contenu'].= '<li>'.$text_eleve_nom.'<a href="./index.php?page=officiel_voir_archive">'.$tab_types[$DB_ROW['officiel_type']]['titre'].' || '.html($DB_ROW['periode_nom']).'</a></li>'; } } } if($tab_accueil['officiel']['nombre']) { $tab_accueil['officiel']['contenu'] = '<div class="b"><TG> '.$tab_accueil['officiel']['masque'].'</div>'.'<ul class="puce p">'.$tab_accueil['officiel']['contenu'].'</ul>';
$affichage_assiduite = ($_SESSION['OFFICIEL'][$tab_types[$BILAN_TYPE]['droit'].'_ASSIDUITE']) ? TRUE : FALSE ; if( $affichage_assiduite && $eleve_id ) { $DB_ROW = DB_STRUCTURE_OFFICIEL::DB_recuperer_officiel_assiduite( $periode_id , $eleve_id ); $tab_assiduite[$eleve_id] = (empty($DB_ROW)) ? array( 'absence' => NULL , 'absence_nj' => NULL , 'retard' => NULL , 'retard_nj' => NULL ) : array( 'absence' => $DB_ROW['assiduite_absence'] , 'absence_nj' => $DB_ROW['assiduite_absence_nj'] , 'retard' => $DB_ROW['assiduite_retard'] , 'retard_nj' => $DB_ROW['assiduite_retard_nj'] ) ; } // Récupérer les professeurs principaux $affichage_prof_principal = ($_SESSION['OFFICIEL'][$tab_types[$BILAN_TYPE]['droit'].'_PROF_PRINCIPAL']) ? TRUE : FALSE ; if( $affichage_prof_principal ) { $DB_TAB = DB_STRUCTURE_OFFICIEL::DB_lister_profs_principaux($classe_id); if(empty($DB_TAB)) { $texte_prof_principal = 'Professeur principal : sans objet.'; } else if(count($DB_TAB)==1) { $texte_prof_principal = 'Professeur principal : '.afficher_identite_initiale($DB_TAB[0]['user_nom'],FALSE,$DB_TAB[0]['user_prenom'],TRUE,$DB_TAB[0]['user_genre']); } else { $tab_pp = array(); foreach($DB_TAB as $DB_ROW) { $tab_pp[] = afficher_identite_initiale($DB_ROW['user_nom'],FALSE,$DB_ROW['user_prenom'],TRUE,$DB_ROW['user_genre']); }
$tab_eleve_id_tmp = array(); $DB_TAB = DB_STRUCTURE_COMMUN::DB_lister_users_regroupement( 'eleve' , 1 /*statut*/ , 'classe' , $classe_id ); foreach($DB_TAB as $DB_ROW) { $tab_eleve_id_tmp[] = $DB_ROW['user_id']; } $liste_eleve_id = implode(',',$tab_eleve_id_tmp); } calculer_et_enregistrer_moyennes_eleves_bulletin( $periode_id , $classe_id , $liste_eleve_id , '' /*liste_matiere_id*/ , $_SESSION['OFFICIEL']['BULLETIN_MOYENNE_CLASSE'] , $_SESSION['OFFICIEL']['BULLETIN_MOYENNE_GENERALE'] ); } } // Récupérer les saisies déjà effectuées pour le bilan officiel concerné $tab_saisie = array(); // [eleve_id][rubrique_id][prof_id] => array(prof_info,appreciation,note,info); $DB_TAB = DB_STRUCTURE_OFFICIEL::DB_recuperer_bilan_officiel_saisies( $BILAN_TYPE , $periode_id , $eleve_id , 0 /*prof_id*/ ); foreach($DB_TAB as $DB_ROW) { $tab_saisie[$DB_ROW['eleve_id']][$DB_ROW['rubrique_id']][$DB_ROW['prof_id']] = array( 'prof_info'=>$DB_ROW['prof_info'] , 'appreciation'=>$DB_ROW['saisie_appreciation'] , 'note'=>$DB_ROW['saisie_note'] ); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Initialisation de variables supplémentaires // INCLUSION DU CODE COMMUN À PLUSIEURS PAGES // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $make_officiel = TRUE; $make_action = 'consulter'; $make_html = ( ($BILAN_TYPE=='bulletin') && ($mode=='graphique') ) ? FALSE : TRUE ; $make_pdf = FALSE; $make_graph = ( ($BILAN_TYPE=='bulletin') && ($mode=='graphique') ) ? TRUE : FALSE ;
{ $tab_pp = array(); foreach($DB_TAB as $DB_ROW) { $tab_pp[] = afficher_identite_initiale($DB_ROW['user_nom'],FALSE,$DB_ROW['user_prenom'],TRUE,$DB_ROW['user_genre']); } $texte_prof_principal = 'Professeurs principaux : '.implode(' ; ',$tab_pp); } } // Récupérer les noms et coordonnées des responsables, ou simplement l'info de savoir si leurs adresses sont différentes $tab_destinataires = array(); // [eleve_id][i] => array(...) | 'archive' | NULL ; $tab_civilite = array( 'I'=>'' , 'M'=>'M.' , 'F'=>'Mme' ); $pays_majoritaire = DB_STRUCTURE_OFFICIEL::DB_recuperer_pays_majoritaire(); $DB_TAB = ( ($_SESSION['OFFICIEL']['INFOS_RESPONSABLES']!='non') || ($_SESSION['OFFICIEL']['NOMBRE_EXEMPLAIRES']=='deux_si_besoin') ) ? DB_STRUCTURE_OFFICIEL::DB_lister_adresses_parents_for_enfants($liste_eleve_id) : array() ; foreach($tab_eleve_id as $eleve_id) { if( (isset($DB_TAB[$eleve_id][0]['adresse_pays_nom'])) && ($DB_TAB[$eleve_id][0]['adresse_pays_nom']==$pays_majoritaire) ) {$DB_TAB[$eleve_id][0]['adresse_pays_nom']='';} if( (isset($DB_TAB[$eleve_id][1]['adresse_pays_nom'])) && ($DB_TAB[$eleve_id][1]['adresse_pays_nom']==$pays_majoritaire) ) {$DB_TAB[$eleve_id][1]['adresse_pays_nom']='';} $tab_coords_resp1 = (isset($DB_TAB[$eleve_id][0])) ? array_filter(array($tab_civilite[$DB_TAB[$eleve_id][0]['user_genre']].' '.$DB_TAB[$eleve_id][0]['user_nom'].' '.$DB_TAB[$eleve_id][0]['user_prenom'],$DB_TAB[$eleve_id][0]['adresse_ligne1'],$DB_TAB[$eleve_id][0]['adresse_ligne2'],$DB_TAB[$eleve_id][0]['adresse_ligne3'],$DB_TAB[$eleve_id][0]['adresse_ligne4'],$DB_TAB[$eleve_id][0]['adresse_postal_code'].' '.$DB_TAB[$eleve_id][0]['adresse_postal_libelle'],$DB_TAB[$eleve_id][0]['adresse_pays_nom'])) : NULL ; $tab_coords_resp2 = (isset($DB_TAB[$eleve_id][1])) ? array_filter(array($tab_civilite[$DB_TAB[$eleve_id][1]['user_genre']].' '.$DB_TAB[$eleve_id][1]['user_nom'].' '.$DB_TAB[$eleve_id][1]['user_prenom'],$DB_TAB[$eleve_id][1]['adresse_ligne1'],$DB_TAB[$eleve_id][1]['adresse_ligne2'],$DB_TAB[$eleve_id][1]['adresse_ligne3'],$DB_TAB[$eleve_id][1]['adresse_ligne4'],$DB_TAB[$eleve_id][1]['adresse_postal_code'].' '.$DB_TAB[$eleve_id][1]['adresse_postal_libelle'],$DB_TAB[$eleve_id][1]['adresse_pays_nom'])) : NULL ; // La copie du bilan qui sera 'archivée' jusqu'à la fin de l'année scolaire. $tab_destinataires[$eleve_id][0] = 'archive' ; // Tirage pour le 1er responsable $tab_destinataires[$eleve_id][1] = ($_SESSION['OFFICIEL']['INFOS_RESPONSABLES']=='non') ? NULL : $tab_coords_resp1 ; // Tirage pour le 2e responsable if( ( ($_SESSION['OFFICIEL']['NOMBRE_EXEMPLAIRES']=='deux_de_force') && ($tab_coords_resp2!=NULL) ) || ( ($_SESSION['OFFICIEL']['NOMBRE_EXEMPLAIRES']=='deux_si_besoin') && ($tab_coords_resp2!=NULL) && ( ($tab_coords_resp1==NULL) || (array_slice($tab_coords_resp2,1)!=array_slice($tab_coords_resp1,1)) ) ) ) { $tab_destinataires[$eleve_id][2] = ($_SESSION['OFFICIEL']['INFOS_RESPONSABLES']=='non') ? NULL : $tab_coords_resp2 ; }
$tab_tbody[$_SESSION['USER_ID']][0] = ''; } else { if (!$_SESSION['NB_ENFANTS']) { echo '<p class="danger">' . $_SESSION['OPT_PARENT_ENFANTS'] . '</p>' . NL; return; // Ne pas exécuter la suite de ce fichier inclus. } foreach ($_SESSION['OPT_PARENT_ENFANTS'] as $tab) { $tab_eleve_id[] = $tab['valeur']; $tab_tbody[$tab['valeur']][0] = '<th>' . html($tab['texte']) . '</th>'; } } // 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 $_SESSION['tmp_droit_voir_archive'] = array(); // lister les bilans officiels archivés de l'année courante $DB_TAB = DB_STRUCTURE_OFFICIEL::DB_lister_bilan_officiel_fichiers('', 0, $tab_eleve_id); foreach ($DB_TAB as $DB_ROW) { 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))) {