$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) { foreach ($tab_points[$eleve_id] as $epreuve_code => $points) { $csv_code = $epreuve_code != CODE_BREVET_EPREUVE_TOTAL ? (string) $epreuve_code : 'TOT'; $format = $epreuve_code != CODE_BREVET_EPREUVE_TOTAL ? "%05.2f" : "%06.2f"; $csv_note = is_numeric($points) ? sprintf($format, $points) : (string) $points; $csv_contenu .= $user_reference . $csv_separateur . $csv_code . $csv_separateur . $csv_note . $csv_separateur . NL; } } // Enregistrer le fichier csv / Retour $fichier_nom = 'export_notanet' . '_' . Clean::fichier($_SESSION['WEBMESTRE_UAI']) . '_' . fabriquer_fin_nom_fichier__date_et_alea() . '.txt'; FileSystem::ecrire_fichier(CHEMIN_DOSSIER_EXPORT . $fichier_nom, To::csv($csv_contenu)); exit($fichier_nom);
} } else { echo'<tr class="vide"><td class="nu" colspan="15"></td><td class="nu"></td></tr>'.NL; } ?> </tbody> </table> <?php if( $find_doublon && !empty($DB_TAB) ) { // Finalisation de l'export CSV (archivage dans un fichier) $fnom = 'extraction_doublons_responsables_'.fabriquer_fin_nom_fichier__date_et_alea(); FileSystem::ecrire_fichier( CHEMIN_DOSSIER_EXPORT.$fnom.'.csv' , To::csv($export_csv) ); echo'<p><ul class="puce"><li><a target="_blank" href="./force_download.php?fichier='.$fnom.'.csv"><span class="file file_txt">Récupérer les données dans un fichier (format <em>csv</em></span>).</a></li></ul></p>'.NL; } ?> <div id="zone_actions" style="margin-left:3em"> <div class="p"><span class="u">Pour les utilisateurs cochés :</span> <input id="listing_ids" name="listing_ids" type="hidden" value="" /><label id="ajax_msg_actions"> </label></div> <button id="retirer" type="button" class="user_desactiver">Retirer</button> (date de sortie au <?php echo TODAY_FR ?>).<br /> <button id="reintegrer" type="button" class="user_ajouter">Réintégrer</button> (retrait de la date de sortie).<br /> <button id="supprimer" type="button" class="supprimer">Supprimer</button> sans attendre 3 ans (uniquement si déjà sortis). </div> <form action="#" method="post" id="form_gestion" class="hide"> <h2>Ajouter | Modifier un utilisateur</h2> <p> <label class="tab" for="f_id_ent">Id. ENT <img alt="" src="./_img/bulle_aide.png" width="16" height="16" title="Uniquement en cas d'identification via un ENT." /> :</label><input id="f_id_ent" name="f_id_ent" type="text" value="" size="30" maxlength="63" /><br />
// Pour avoir les élèves dans l'ordre alphabétique, il faut utiliser $tab_eleve_id. $archivage_tableau_PDF->SetXY($archivage_tableau_PDF->marge_gauche, $archivage_tableau_PDF->marge_haut + $archivage_tableau_PDF->etiquette_hauteur); foreach ($tab_eleve_id as $eleve_id) { extract($tab_eleve_infos[$eleve_id]); // $eleve_nom $eleve_prenom $date_naissance $eleve_brevet_serie $archivage_tableau_PDF->moyennes_reference_eleve($eleve_id, $eleve_nom . ' ' . $eleve_prenom); $archivage_tableau_CSV .= '"' . $eleve_nom . ' ' . $eleve_prenom . '"'; foreach ($tab_brevet_serie as $serie_ref => $serie_nom) { foreach ($tab_brevet_epreuve[$serie_ref] as $epreuve_ref => $epreuve_nom) { $note = isset($tab_saisie[$eleve_id][$serie_ref . $epreuve_ref]) ? $tab_saisie[$eleve_id][$serie_ref . $epreuve_ref] : NULL; $archivage_tableau_PDF->moyennes_note($eleve_id, $epreuve_ref, $note, TRUE); $archivage_tableau_CSV .= $separateur . '"' . str_replace('.', ',', $note) . '"'; // 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"; } } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Enregistrement et affichage du retour. // //////////////////////////////////////////////////////////////////////////////////////////////////// $fichier_export = 'saisies_' . $bilan_type . '_' . $annee_session_brevet . '_' . Clean::fichier($classe_nom) . '_' . $action . '_' . fabriquer_fin_nom_fichier__date_et_alea(); FileSystem::ecrire_sortie_PDF(CHEMIN_DOSSIER_EXPORT . $fichier_export . '.pdf', $archivage_tableau_PDF); echo '<a target="_blank" href="' . URL_DIR_EXPORT . $fichier_export . '.pdf"><span class="file file_pdf">' . $tab_actions[$action] . ' (format <em>pdf</em>).</span></a>'; // Et le csv éventuel if ($action == 'imprimer_donnees_eleves_moyennes') { FileSystem::ecrire_fichier(CHEMIN_DOSSIER_EXPORT . $fichier_export . '.csv', To::csv($archivage_tableau_CSV)); echo '<br />' . NL . '<a target="_blank" href="./force_download.php?fichier=' . $fichier_export . '.csv"><span class="file file_txt">' . $tab_actions[$action] . ' (format <em>csv</em>).</span></a>'; } exit;
echo'<p class="danger">Le fichier n\'existe pas : probablement qu\'aucune action sensible n\'a encore été effectuée !</p>'.NL; } else { // 1 En extraire le plus récent (les 100 derniers enregistrements) $table_log_extrait = '<table class="p"><thead><tr><th>Date & Heure</th><th>Utilisateur</th><th>Action</th></tr></thead><tbody>'; $tab_lignes = extraire_lignes($fichier_log_contenu); $indice_ligne_debut = count($tab_lignes)-1 ; $indice_ligne_fin = max(-1 , $indice_ligne_debut-100) ; $nb_lignes = $indice_ligne_debut - $indice_ligne_fin ; $s = ($nb_lignes>1) ? 's' : '' ; for( $indice_ligne=$indice_ligne_debut ; $indice_ligne>$indice_ligne_fin ; $indice_ligne-- ) { list( $balise_debut , $date_heure , $utilisateur , $action , $balise_fin ) = explode("\t",$tab_lignes[$indice_ligne]); $table_log_extrait .= '<tr><td>'.$date_heure.'</td><td>'.$utilisateur.'</td><td>'.$action.'</td></tr>'; // Pas de html(), cela a déjà été fait lors de l'enregistrement des logs } $table_log_extrait .= '</tbody></table>'; // 2 Enregistrer un csv récupérable $fichier_log_contenu = str_replace(array('<?php /*','*/ ?>'),'',$fichier_log_contenu); $fichier_export_nom = 'log_'.$_SESSION['BASE'].'_'.fabriquer_fin_nom_fichier__date_et_alea(); FileSystem::ecrire_fichier( CHEMIN_DOSSIER_EXPORT.$fichier_export_nom.'.csv' , To::csv($fichier_log_contenu) ); // Afficher tout ça echo'<ul class="puce">'.NL; echo '<li><a target="_blank" href="./force_download.php?fichier='.$fichier_export_nom.'.csv"><span class="file file_txt">Récupérer le fichier complet (format <em>csv</em>).</span></a></li>'.NL; echo '<li>Consulter les derniers logs ('.$nb_lignes.' ligne'.$s.') :</li>'.NL; echo'</ul>'.NL; echo $table_log_extrait; } ?>
{ if($make_html) { $releve_HTML_individuel .= Html::legende( TRUE /*codes_notation*/ , ($retroactif!='non') /*anciennete_notation*/ , $aff_etat_acquisition /*score_bilan*/ , FALSE /*etat_acquisition*/ , FALSE /*pourcentage_acquis*/ , FALSE /*etat_validation*/ , $make_officiel ); } if($make_pdf) { $releve_PDF->legende(); } } } } } // Ajout du javascript en fin de fichier if($make_html) { $releve_HTML_individuel .= '<script type="text/javascript">'.$releve_HTML_individuel_javascript.'</script>'.NL; } // On enregistre les sorties HTML et PDF et CSV if($make_html) { FileSystem::ecrire_fichier( CHEMIN_DOSSIER_EXPORT.str_replace('<REPLACE>','individuel',$fichier_nom).'.html' , $releve_HTML_individuel ); } if($make_pdf) { FileSystem::ecrire_sortie_PDF( CHEMIN_DOSSIER_EXPORT.str_replace('<REPLACE>','individuel',$fichier_nom).'.pdf' , $releve_PDF ); } if($make_csv) { FileSystem::ecrire_fichier( CHEMIN_DOSSIER_EXPORT.str_replace('<REPLACE>','individuel',$fichier_nom).'.csv' , To::csv($releve_CSV) ); } } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Elaboration de la synthèse collective en HTML et PDF // //////////////////////////////////////////////////////////////////////////////////////////////////// if($type_synthese) { $releve_HTML_synthese = $affichage_direct ? '' : '<style type="text/css">'.$_SESSION['CSS'].'</style>'.NL; $releve_HTML_synthese .= $affichage_direct ? '' : '<h1>Bilan '.$tab_titre[$releve_modele].'</h1>'.NL; $releve_HTML_synthese .= '<h2>'.html($matiere_et_groupe).'</h2>'.NL; if($texte_periode) { $releve_HTML_synthese .= '<h2>'.html($texte_periode).'</h2>'.NL; }
$date_affich = $DB_ROW['user_sortie_date'] != SORTIE_DEFAUT_MYSQL ? convert_date_mysql_to_french($DB_ROW['user_sortie_date']) : '-'; $lignes .= '<tr' . $class . '><td>' . html($DB_ROW['user_sconet_id']) . '</td><td>' . html($DB_ROW['user_sconet_elenoet']) . '</td><td>' . html($DB_ROW['user_reference']) . '</td><td>' . html($champ) . '</td><td>' . html($DB_ROW['user_nom']) . '</td><td>' . html($DB_ROW['user_prenom']) . '</td><td' . $class . '>' . html($DB_ROW['user_login']) . '</td>' . $td_password . '<td>' . $date_affich . '</td></tr>' . NL; } } $s_debut_actuel = $nb_debut_actuel > 1 ? 's' : ''; $s_debut_ancien = $nb_debut_ancien > 1 ? 's' : ''; $s_fin_actuel = $nb_fin_actuel > 1 ? 's' : ''; $s_fin_ancien = $nb_fin_ancien > 1 ? 's' : ''; $s_mod = $nb_mod > 1 ? 's' : ''; $s_add = $nb_add > 1 ? 's' : ''; $s_del = $nb_del > 1 ? 's' : ''; if ($nb_add) { // On archive les nouveaux identifiants dans un fichier tableur (csv tabulé) $profil = $import_profil == 'eleve' ? 'eleve' : ($import_profil == 'parent' ? 'parent' : 'personnel'); $fnom = 'identifiants_' . $_SESSION['BASE'] . '_' . $profil . '_' . fabriquer_fin_nom_fichier__date_et_alea(); FileSystem::ecrire_fichier(CHEMIN_DOSSIER_LOGINPASS . $fnom . '.csv', To::csv($fcontenu_csv)); // On archive les nouveaux identifiants dans un fichier pdf (classe fpdf + script étiquettes) $pdf = new PDF_Label(array('paper-size' => 'A4', 'metric' => 'mm', 'marginLeft' => 5, 'marginTop' => 5, 'NX' => 3, 'NY' => 8, 'SpaceX' => 7, 'SpaceY' => 5, 'width' => 60, 'height' => 30, 'font-size' => 11)); $pdf->AddFont('Arial', '', 'arial.php'); $pdf->SetFont('Arial'); // Permet de mieux distinguer les "l 1" etc. que la police Times ou Courrier $pdf->AddPage(); $pdf->SetFillColor(245, 245, 245); $pdf->SetDrawColor(145, 145, 145); sort($fcontenu_pdf_tab); foreach ($fcontenu_pdf_tab as $text) { $pdf->Add_Label(To::pdf($text)); } FileSystem::ecrire_sortie_PDF(CHEMIN_DOSSIER_LOGINPASS . $fnom . '.pdf', $pdf); } $champ = $import_profil == 'eleve' ? 'Classe' : 'Profil';
// Commentaire écrit if($lignes_comm) { $cartouche_HTM .= '<tr><td colspan="'.$colonnes_nb.'"><div class="appreciation">'.html($tab_user_comm[$user_id]).'</div></td></tr>'; $cartouche_CSV .= $tab_user_comm[$user_id]."\r\n"; $cartouche_TEX .= '\multicolumn{'.$colonnes_nb.'}{|l|}{'.To::latex($tab_user_comm[$user_id]).'} \\\\'."\r\n".'\hline'."\r\n"; } $cartouche_HTM .= '</tbody></table>'; $cartouche_CSV .= "\r\n"; $cartouche_TEX .= '\end{tabular}'."\r\n".'\end{center}'."\r\n\r\n"; $cartouche_PDF->commentaire_interligne( 0 /*decalage_nb_lignes*/ , $tab_user_comm[$user_id] /*commentaire éventuel*/ , $lignes_comm ); } } } // On archive le cartouche dans un fichier csv FileSystem::ecrire_fichier( CHEMIN_DOSSIER_EXPORT.'cartouche_'.$fnom_export.'.csv' , To::csv($cartouche_CSV) ); // On archive le cartouche dans un fichier tex FileSystem::ecrire_fichier( CHEMIN_DOSSIER_EXPORT.'cartouche_'.$fnom_export.'.tex' , $cartouche_TEX ); // On archive le cartouche dans un fichier pdf FileSystem::ecrire_sortie_PDF( CHEMIN_DOSSIER_EXPORT.'cartouche_'.$fnom_export.'.pdf' , $cartouche_PDF ); // Affichage exit($cartouche_HTM); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Traiter une demande d'importation d'une saisie déportée ; on n'enregistre rien, on ne fait que décrypter le contenu du fichier et renvoyer une chaine résultante au javascript // //////////////////////////////////////////////////////////////////////////////////////////////////// if( (isset($_GET['f_action'])) && ($_GET['f_action']=='importer_saisie_csv') ) { $fichier_nom = 'saisie_deportee_'.$_SESSION['BASE'].'_'.$_SESSION['USER_ID'].'_'.fabriquer_fin_nom_fichier__date_et_alea().'.<EXT>';