$champ = $import_profil == 'eleve' ? $DB_ROW['groupe_ref'] : $DB_ROW['user_profil_nom_court_singulier']; $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); }
* 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 !'); } /** * Code inclus commun aux pages * [./pages/releve_synthese_matiere.ajax.php] * [./pages/releve_synthese_multimatiere.ajax.php] * [./_inc/code_officiel_***.php] */ Erreur500::prevention_et_gestion_erreurs_fatales(TRUE, FALSE); // Chemins d'enregistrement $fichier_nom = $make_action != 'imprimer' ? 'releve_synthese_' . $synthese_modele . '_' . Clean::fichier($groupe_nom) . '_' . fabriquer_fin_nom_fichier__date_et_alea() : 'officiel_' . $BILAN_TYPE . '_' . Clean::fichier($groupe_nom) . '_' . fabriquer_fin_nom_fichier__date_et_alea(); // Initialisation de tableaux $tab_item = array(); // [item_id] => array(item_ref,item_nom,item_coef,item_cart,item_socle,item_lien,matiere_id,calcul_methode,calcul_limite,calcul_retroactif,synthese_ref); $tab_liste_item = array(); // [i] => item_id $tab_eleve_infos = array(); // [eleve_id] => array(eleve_INE,eleve_nom,eleve_prenom,date_naissance) $tab_matiere = array(); // [matiere_id] => array(matiere_nom,matiere_nb_demandes) $tab_synthese = array(); // [synthese_ref] => synthese_nom $tab_eval = array(); // [eleve_id][item_id][devoir] => array(note,date,info) On utilise un tableau multidimensionnel vu qu'on ne sait pas à l'avance combien il y a d'évaluations pour un élève et un item donnés. // Initialisation de variables if ($make_html || $make_pdf || $make_graph) {
{ $tab_parametres = array(); $tab_parametres['officiel_tampon_signature'] = $tampon_signature; DB_STRUCTURE_COMMUN::DB_modifier_parametres($tab_parametres); // On modifie aussi la session $_SESSION['OFFICIEL']['TAMPON_SIGNATURE'] = $tampon_signature ; exit('ok'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Traitement du formulaire form_tampon (upload d'un fichier image) // //////////////////////////////////////////////////////////////////////////////////////////////////// if( ($action=='upload_signature') && ($user_id>=0) && ($user_texte!='') ) { $fichier_nom = 'signature_'.$_SESSION['BASE'].'_'.$user_id.'_'.fabriquer_fin_nom_fichier__date_et_alea().'.<EXT>'; $result = FileSystem::recuperer_upload( CHEMIN_DOSSIER_IMPORT /*fichier_chemin*/ , $fichier_nom /*fichier_nom*/ , array('gif','jpg','jpeg','png') /*tab_extensions_autorisees*/ , NULL /*tab_extensions_interdites*/ , 100 /*taille_maxi*/ , NULL /*filename_in_zip*/ ); if($result!==TRUE) { exit('Erreur : '.$result); } // vérifier la conformité du fichier image, récupérer les infos le concernant $tab_infos = @getimagesize(CHEMIN_DOSSIER_IMPORT.FileSystem::$file_saved_name); if($tab_infos==FALSE) { FileSystem::supprimer_fichier(CHEMIN_DOSSIER_IMPORT.FileSystem::$file_saved_name); exit('Erreur : le fichier image ne semble pas valide !'); } list($image_largeur, $image_hauteur, $image_type, $html_attributs) = $tab_infos; $tab_extension_types = array( IMAGETYPE_GIF=>'gif' , IMAGETYPE_JPEG=>'jpeg' , IMAGETYPE_PNG=>'png' ); // http://www.php.net/manual/fr/function.exif-imagetype.php#refsect1-function.exif-imagetype-constants // vérifier le type
// Pour l'affichage du retour $thead = '<tr><td colspan="2">Vérification des droits en écriture - '.date('d/m/Y H:i:s').'</td></tr>'; $tbody = ''; // Dossiers ksort($_SESSION['tmp']['dossier']); foreach($_SESSION['tmp']['dossier'] as $dossier => $tab) { $dossier = ($dossier) ? '.'.$dossier : '.'.DS ; $tbody .= (@is_writable($dossier)) ? '<tr><td class="v">Dossier accessible en écriture</td><td>'.$dossier.'</td></tr>' : '<tr><td class="r">Dossier aux droits insuffisants</td><td>'.$dossier.'</td></tr>' ; } // Fichiers ksort($_SESSION['tmp']['fichier']); foreach($_SESSION['tmp']['fichier'] as $fichier => $tab) { $fichier = '.'.$fichier; $tbody .= (@is_writable($fichier)) ? '<tr><td class="v">Fichier accessible en écriture</td><td>'.$fichier.'</td></tr>' : '<tr><td class="r">Fichier aux droits insuffisants</td><td>'.$fichier.'</td></tr>' ; } // Enregistrement du rapport $fichier_nom = 'rapport_droits_'.$_SESSION['BASE'].'_'.fabriquer_fin_nom_fichier__date_et_alea().'.html'; FileSystem::fabriquer_fichier_rapport( $fichier_nom , $thead , $tbody ); exit(']¤['.URL_DIR_EXPORT.$fichier_nom); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // On ne devrait pas en arriver là... // //////////////////////////////////////////////////////////////////////////////////////////////////// exit('Erreur avec les données transmises !'); ?>
$releve_HTML_body .= '<td class="nu2"></td>'; foreach ($tab as $socle_id => $socle_nom) { $releve_HTML_body .= Html::td_validation('td', $tab_user_entree[$eleve_id][$socle_id], FALSE, $tab_user_pilier[$eleve_id][$pilier_id]['etat']); } } $releve_HTML_body .= '</tr>' . NL; $releve_PDF->validation_eleve($eleve_id, $eleve_nom, $eleve_prenom, $tab_user_pilier, $tab_user_entree, $tab_pilier, $tab_socle, $drapeau_langue); } } $releve_HTML .= $affichage_checkbox ? '<form id="form_synthese" action="#" method="post">' . NL : ''; $releve_HTML .= '<table class="bilan"><thead>' . NL . $releve_HTML_head . '</thead><tbody>' . NL . $releve_HTML_body . '</tbody></table>' . NL; $releve_HTML .= $affichage_checkbox ? HtmlForm::afficher_synthese_exploitation('eleves') . '</form>' . NL : ''; $releve_HTML .= Html::legende(FALSE, FALSE, FALSE, FALSE, $type == 'pourcentage', $type == 'validation', FALSE); $releve_PDF->legende($type); // Chemins d'enregistrement $fichier = 'releve_socle_synthese_' . Clean::fichier(substr($palier_nom, 0, strpos($palier_nom, ' ('))) . '_' . Clean::fichier($groupe_nom) . '_' . $type . '_' . fabriquer_fin_nom_fichier__date_et_alea(); // On enregistre les sorties HTML et PDF FileSystem::ecrire_fichier(CHEMIN_DOSSIER_EXPORT . $fichier . '.html', $releve_HTML); FileSystem::ecrire_sortie_PDF(CHEMIN_DOSSIER_EXPORT . $fichier . '.pdf', $releve_PDF); // Affichage du résultat if ($affichage_direct) { echo '<hr />' . NL; echo '<ul class="puce">' . NL; echo '<li><a target="_blank" href="' . URL_DIR_EXPORT . $fichier . '.pdf"><span class="file file_pdf">Archiver / Imprimer (format <em>pdf</em>).</span></a></li>' . NL; echo '</ul>' . NL; echo $releve_HTML; } else { echo '<ul class="puce">' . NL; echo '<li><a target="_blank" href="' . URL_DIR_EXPORT . $fichier . '.pdf"><span class="file file_pdf">Archiver / Imprimer (format <em>pdf</em>).</span></a></li>' . NL; echo '<li><a target="_blank" href="./releve_html.php?fichier=' . $fichier . '"><span class="file file_htm">Explorer / Détailler (format <em>html</em>).</span></a></li>' . NL; echo '</ul>' . NL;
// On modifie aussi la session $_SESSION['ETABLISSEMENT']['DENOMINATION'] = $etablissement_denomination; $_SESSION['ETABLISSEMENT']['ADRESSE1'] = $etablissement_adresse1; $_SESSION['ETABLISSEMENT']['ADRESSE2'] = $etablissement_adresse2; $_SESSION['ETABLISSEMENT']['ADRESSE3'] = $etablissement_adresse3; $_SESSION['ETABLISSEMENT']['TELEPHONE'] = $etablissement_telephone; $_SESSION['ETABLISSEMENT']['FAX'] = $etablissement_fax; $_SESSION['ETABLISSEMENT']['COURRIEL'] = $etablissement_courriel; $_SESSION['ETABLISSEMENT']['URL'] = $etablissement_url; exit('ok'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Traitement du formulaire form_logo (upload d'un fichier image) // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'upload_logo') { $fichier_nom = 'logo_' . $_SESSION['BASE'] . '_' . fabriquer_fin_nom_fichier__date_et_alea() . '.<EXT>'; $result = FileSystem::recuperer_upload(CHEMIN_DOSSIER_IMPORT, $fichier_nom, array('gif', 'jpg', 'jpeg', 'png'), NULL, 100, NULL); if ($result !== TRUE) { exit('Erreur : ' . $result); } // vérifier la conformité du fichier image, récupérer les infos le concernant $tab_infos = @getimagesize(CHEMIN_DOSSIER_IMPORT . FileSystem::$file_saved_name); if ($tab_infos == FALSE) { FileSystem::supprimer_fichier(CHEMIN_DOSSIER_IMPORT . FileSystem::$file_saved_name); exit('Erreur : le fichier image ne semble pas valide !'); } list($image_largeur, $image_hauteur, $image_type, $html_attributs) = $tab_infos; $tab_extension_types = array(IMAGETYPE_GIF => 'gif', IMAGETYPE_JPEG => 'jpeg', IMAGETYPE_PNG => 'png'); // http://www.php.net/manual/fr/function.exif-imagetype.php#refsect1-function.exif-imagetype-constants // vérifier le type if (!isset($tab_extension_types[$image_type])) {
/** * Vérifier qu'une arborescence XML d'un référentiel est syntaxiquement valide. * * @param string $arbreXML * @return string "ok" ou "Erreur..." */ public static function verifier_arborescence_XML($arbreXML) { // On ajoute déclaration et doctype au fichier (évite que l'utilisateur ait à se soucier de cette ligne et permet de le modifier en cas de réorganisation // Attention, le chemin du DTD est relatif par rapport à l'emplacement du fichier XML (pas celui du script en cours) ! $fichier_adresse = CHEMIN_DOSSIER_IMPORT.'referentiel_'.fabriquer_fin_nom_fichier__date_et_alea().'.xml'; $fichier_contenu = '<?xml version="1.0" encoding="UTF-8"?>'."\r\n".'<!DOCTYPE arbre SYSTEM "../../_dtd/referentiel.dtd">'."\r\n".$arbreXML; $fichier_contenu = To::deleteBOM(To::utf8($fichier_contenu)); // Mettre en UTF-8 si besoin et retirer le BOM éventuel // On enregistre temporairement dans un fichier pour analyse FileSystem::ecrire_fichier($fichier_adresse,$fichier_contenu); // On lance le test $test_XML_valide = ServeurCommunautaire::analyser_XML($fichier_adresse); // On efface le fichier temporaire FileSystem::supprimer_fichier($fichier_adresse); return $test_XML_valide; }
} $options_horizontal_gauche = str_replace('"' . $_SESSION['ENVELOPPE']['HORIZONTAL_GAUCHE'] . '"', '"' . $_SESSION['ENVELOPPE']['HORIZONTAL_GAUCHE'] . '" selected', fabriquer_chaine_option(90, 120)); $options_horizontal_milieu = str_replace('"' . $_SESSION['ENVELOPPE']['HORIZONTAL_MILIEU'] . '"', '"' . $_SESSION['ENVELOPPE']['HORIZONTAL_MILIEU'] . '" selected', fabriquer_chaine_option(85, 115)); $options_horizontal_droite = str_replace('"' . $_SESSION['ENVELOPPE']['HORIZONTAL_DROITE'] . '"', '"' . $_SESSION['ENVELOPPE']['HORIZONTAL_DROITE'] . '" selected', fabriquer_chaine_option(15, 25)); $options_vertical_haut = str_replace('"' . $_SESSION['ENVELOPPE']['VERTICAL_HAUT'] . '"', '"' . $_SESSION['ENVELOPPE']['VERTICAL_HAUT'] . '" selected', fabriquer_chaine_option(40, 60)); $options_vertical_milieu = str_replace('"' . $_SESSION['ENVELOPPE']['VERTICAL_MILIEU'] . '"', '"' . $_SESSION['ENVELOPPE']['VERTICAL_MILIEU'] . '" selected', fabriquer_chaine_option(35, 55)); $options_vertical_bas = str_replace('"' . $_SESSION['ENVELOPPE']['VERTICAL_BAS'] . '"', '"' . $_SESSION['ENVELOPPE']['VERTICAL_BAS'] . '" selected', fabriquer_chaine_option(15, 25)); // Formulaire avec la liste des directeurs et professeurs $select_user = HtmlForm::afficher_select(DB_STRUCTURE_COMMUN::DB_OPT_professeurs_directeurs_etabl(1), 'f_user', 'tampon_structure', FALSE, 'profs_directeurs'); // Récupérer les signatures existantes, dont le tampon de l'établissement. $li_signatures = ''; $DB_TAB = DB_STRUCTURE_IMAGE::DB_lister_signatures_avec_identite(); foreach ($DB_TAB as $DB_ROW) { // Enregistrer temporairement le fichier sur le disque $texte = $DB_ROW['user_id'] ? 'Signature ' . $DB_ROW['user_nom'] . ' ' . $DB_ROW['user_prenom'] : 'Tampon de l\'établissement'; $fichier_nom = 'signature_' . $_SESSION['BASE'] . '_' . $DB_ROW['user_id'] . '_' . fabriquer_fin_nom_fichier__date_et_alea() . '.' . $DB_ROW['image_format']; FileSystem::ecrire_fichier(CHEMIN_DOSSIER_EXPORT . $fichier_nom, base64_decode($DB_ROW['image_contenu'])); // Générer la balise html pour afficher l'image list($width, $height) = dimensions_affichage_image($DB_ROW['image_largeur'], $DB_ROW['image_hauteur'], 200, 200); $li_signatures .= '<li id="sgn_' . $DB_ROW['user_id'] . '">' . html($texte) . ' : <img src="' . URL_DIR_EXPORT . $fichier_nom . '" alt="' . html($texte) . '" width="' . $width . '" height="' . $height . '" /><q class="supprimer" title="Supprimer cette image (aucune confirmation ne sera demandée)."></q></li>'; } $li_signatures = $li_signatures ? $li_signatures : '<li id="sgn_none">Aucun fichier image trouvé !</li>'; ?> <div><span class="manuel"><a class="pop_up" href="<?php echo SERVEUR_DOCUMENTAIRE; ?> ?fichier=releves_bilans__reglages_syntheses_bilans#toggle_officiel_mise_en_page">DOC : Réglages synthèses & bilans → Mise en page des bilans officiels</a></span></div> <hr />
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; } ?>
* [./pages/brevet_moyennes.ajax.php] * [./_inc/code_officiel_***.php] */ Erreur500::prevention_et_gestion_erreurs_fatales( TRUE /*memory*/ , FALSE /*time*/ ); /* $type_individuel | $type_synthese | $type_bulletin $releve_modele [ matiere | selection | multimatiere | professeur ] */ $matiere_et_groupe = ($releve_modele=='matiere') ? $matiere_nom.' - '.$groupe_nom : $groupe_nom ; // Chemins d'enregistrement $fichier_nom = ($make_action!='imprimer') ? 'releve_item_'.$releve_modele.'_'.Clean::fichier($groupe_nom).'_<REPLACE>_'.fabriquer_fin_nom_fichier__date_et_alea() : 'officiel_'.$BILAN_TYPE.'_'.Clean::fichier($groupe_nom).'_'.fabriquer_fin_nom_fichier__date_et_alea() ; // Si pas grille générique et si notes demandées ou besoin pour colonne bilan ou besoin pour synthèse $calcul_acquisitions = ( $type_synthese || $type_bulletin || $aff_etat_acquisition ) ? TRUE : FALSE ; // Initialisation de tableaux $tab_item_infos = array(); // [item_id] => array(item_ref,item_nom,item_coef,item_cart,item_socle,item_lien,calcul_methode,calcul_limite,calcul_retroactif); $tab_matiere_item = array(); // [matiere_id][item_id] => item_nom $tab_eleve_infos = array(); // [eleve_id] => array(eleve_INE,eleve_nom,eleve_prenom,date_naissance,eleve_id_gepi) $tab_matiere = array(); // [matiere_id] => array(matiere_nom,matiere_nb_demandes) $tab_eval = array(); // [eleve_id][matiere_id][item_id][devoir] OU [matiere_id][item_id][eleve_id][devoir] => array(note,date,info) // Initialisation de variables if( ($make_html) || ($make_pdf) )
// Afficher le retour echo'<li><label class="'.$class.'">'.$texte_etape.'.</label></li>'; if(strpos($texte_etape,'terminée')) { echo'<li><a target="_blank" href="'.URL_DIR_DUMP.$fichier_zip_nom.'"><span class="file file_zip">Récupérer le fichier de sauvegarde au format ZIP.</span></a></li>'; } exit(); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Uploader et dezipper / vérifier un fichier à restaurer // //////////////////////////////////////////////////////////////////////////////////////////////////// if($action=='uploader') { $fichier_upload_nom = 'dump_'.$_SESSION['BASE'].'_'.fabriquer_fin_nom_fichier__date_et_alea().'.zip'; $result = FileSystem::recuperer_upload( CHEMIN_DOSSIER_IMPORT /*fichier_chemin*/ , $fichier_upload_nom /*fichier_nom*/ , array('zip') /*tab_extensions_autorisees*/ , NULL /*tab_extensions_interdites*/ , NULL /*taille_maxi*/ , NULL /*filename_in_zip*/ ); if($result!==TRUE) { exit('<li><label class="alerte">Erreur : '.$result.'</label></li>'); } // Créer ou vider le dossier temporaire FileSystem::creer_ou_vider_dossier($dossier_temp); // Dezipper dans le dossier temporaire $code_erreur = FileSystem::unzip( CHEMIN_DOSSIER_IMPORT.$fichier_upload_nom , $dossier_temp , FALSE /*use_ZipArchive*/ ); if($code_erreur) { FileSystem::supprimer_dossier($dossier_temp); // Pas seulement vider, au cas où il y aurait des sous-dossiers créés par l'archive. exit('<li><label class="alerte">Erreur : votre archive ZIP n\'a pas pu être ouverte ('.FileSystem::$tab_zip_error[$code_erreur].') !</label></li>'); } FileSystem::supprimer_fichier(CHEMIN_DOSSIER_IMPORT.$fichier_upload_nom);
// Vérifications complémentaires if( !isset($_SESSION['tmp_droit_voir_archive'][$eleve_id.$bilan_type]) || !isset($_SESSION['BASE']) ) { exit_error( 'Accès non autorisé' /*titre*/ , 'Cet appel n\'est valide que pour un utilisateur précis, connecté, et ayant affiché la page listant les archives disponibles.<br />Veuillez ne pas appeler ce lien dans un autre contexte (ni le transmettre à un tiers).' /*contenu*/ , '' /*lien*/ ); } $fichier_archive = CHEMIN_DOSSIER_OFFICIEL.$_SESSION['BASE'].DS.fabriquer_nom_fichier_bilan_officiel( $eleve_id , $bilan_type , $periode_id ); if(!is_file($fichier_archive)) { exit_error( 'Document manquant' /*titre*/ , 'Archive non trouvée sur ce serveur.' /*contenu*/ , '' /*lien*/ ); } // Copie du fichier pour préserver son anonymat $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';
* si ce n’est pas le cas, consultez : <http://www.gnu.org/licenses/>. * */ if(!defined('SACoche')) {exit('Ce fichier ne peut être appelé directement !');} $tab_base_id = (isset($_POST['f_listing_id'])) ? array_filter( Clean::map_entier( explode(',',$_POST['f_listing_id']) ) , 'positif' ) : array() ; $nb_bases = count($tab_base_id); $action = (isset($_POST['f_action'])) ? Clean::texte($_POST['f_action']) : ''; $num = (isset($_POST['num'])) ? (int)$_POST['num'] : 0 ; // Numéro de l'étape en cours $max = (isset($_POST['max'])) ? (int)$_POST['max'] : 0 ; // Nombre d'étapes à effectuer $courriel_envoi = (isset($_POST['f_courriel_envoi'])) ? Clean::entier($_POST['f_courriel_envoi']) : 0 ; $courriel_copie = (isset($_POST['f_courriel_copie'])) ? Clean::entier($_POST['f_courriel_copie']) : 0 ; $fichier_csv_nom = 'ajout_structures_'.fabriquer_fin_nom_fichier__date_et_alea().'.csv'; // //////////////////////////////////////////////////////////////////////////////////////////////////// // Import d'un fichier CSV avec le listing des structures // //////////////////////////////////////////////////////////////////////////////////////////////////// if($action=='importer_csv') { $result = FileSystem::recuperer_upload( CHEMIN_DOSSIER_IMPORT /*fichier_chemin*/ , $fichier_csv_nom /*fichier_nom*/ , array('txt','csv') /*tab_extensions_autorisees*/ , NULL /*tab_extensions_interdites*/ , NULL /*taille_maxi*/ , NULL /*filename_in_zip*/ ); if($result!==TRUE) { exit('Erreur : '.$result); } // On récupère les zones géographiques pour vérifier que l'identifiant transmis est cohérent $tab_geo = array(); $DB_TAB = DB_WEBMESTRE_WEBMESTRE::DB_lister_zones();
if ($DB_ROW['convention_paiement'] !== NULL) { $texte = 'Règlement acquitté le ' . convert_date_mysql_to_french($DB_ROW['convention_paiement']) . '.'; } elseif ($DB_ROW['convention_signature'] !== NULL) { list($annee, $mois, $jour) = explode('-', $DB_ROW['convention_signature']); $timeunix_signature_plus2mois = mktime(0, 0, 0, $mois + 2, $jour, $annee); list($annee, $mois, $jour) = explode('-', $DB_ROW['convention_date_debut']); $timeunix_anneescolaire_plus3mois = mktime(0, 0, 0, $mois + 2, $jour, $annee); $date_limite = date("d/m/Y", max($timeunix_signature_plus2mois, $timeunix_anneescolaire_plus3mois)); $texte = 'Date limite de règlement : ' . $date_limite . '.'; } else { $texte = 'Date limite de règlement : 2 mois après la mise en service effective du connecteur.'; } $facture_PDF->SetXY(20, 174); $facture_PDF->CellFit(180, $hauteur_ligne, To::pdf($texte), 0, 2, 'L', FALSE); // On enregistre la sortie PDF $facture_fichier_nom = 'convention_facture_' . fabriquer_fin_nom_fichier__date_et_alea() . '.pdf'; FileSystem::ecrire_sortie_PDF(CHEMIN_DOSSIER_EXPORT . $facture_fichier_nom, $facture_PDF); // // Envoyer un courriel au contact. // if ($f_first_time == 'oui') { $titre = 'Convention connecteur ENT établissement - Documents générés'; $texte = 'Bonjour ' . $DB_ROW2['structure_contact_prenom'] . ' ' . $DB_ROW2['structure_contact_nom'] . ',' . "\r\n"; $texte .= "\r\n"; $texte .= 'Vous venez de générer les documents associés à une convention pour un connecteur ENT :' . "\r\n"; $texte .= 'Référence : ' . $connecteur_ref . "\r\n"; $texte .= 'Établissement : ' . $_SESSION['ETABLISSEMENT']['DENOMINATION'] . "\r\n"; $texte .= 'Période : du ' . convert_date_mysql_to_french($DB_ROW['convention_date_debut']) . ' au ' . convert_date_mysql_to_french($DB_ROW['convention_date_fin']) . "\r\n"; $texte .= "\r\n"; $texte .= 'Le contrat est en deux exemplaires.' . "\r\n"; $texte .= 'L\'un est à retourner signé au président de l\'association (ses coordonnées postales figurent sur le document).' . "\r\n";
} // On récupère les photos $listing_user_id = implode(',',array_keys($tab_vignettes)); $DB_TAB = DB_STRUCTURE_IMAGE::DB_lister_images( $listing_user_id , 'photo' ); if(!empty($DB_TAB)) { foreach($DB_TAB as $DB_ROW) { $tab_vignettes[$DB_ROW['user_id']]['img_width'] = $DB_ROW['image_largeur']; $tab_vignettes[$DB_ROW['user_id']]['img_height'] = $DB_ROW['image_hauteur']; $tab_vignettes[$DB_ROW['user_id']]['img_src'] = $DB_ROW['image_contenu']; $tab_vignettes[$DB_ROW['user_id']]['img_title'] = FALSE; } } // Génération de la sortie HTML (affichée directement) et de la sortie PDF (enregistrée dans un fichier) $fnom_pdf = 'trombinoscope_'.$_SESSION['BASE'].'_'.Clean::fichier($groupe_nom).'_'.fabriquer_fin_nom_fichier__date_et_alea().'.pdf'; $trombinoscope_HTML = '<h2>'.html($groupe_nom).'</h2><p><a target="_blank" href="'.URL_DIR_EXPORT.$fnom_pdf.'"><span class="file file_pdf">Archiver / Imprimer (format <em>pdf</em>).</span></a> → <span class="noprint">Afin de préserver l\'environnement, n\'imprimer que si nécessaire !</span></p>'; $trombinoscope_PDF = new PDF_trombinoscope( FALSE /*officiel*/ , 'portrait' /*orientation*/ , 5 /*marge_gauche*/ , 5 /*marge_droite*/ , 5 /*marge_haut*/ , 7 /*marge_bas*/ ); $trombinoscope_PDF->initialiser($groupe_nom); // On passe les élèves en revue (on a toutes les infos déjà disponibles) foreach($tab_vignettes as $user_id => $tab) { $trombinoscope_PDF->vignette($tab); $img_src = ($tab['img_src']) ? ' src="data:'.image_type_to_mime_type(IMAGETYPE_JPEG).';base64,'.$tab['img_src'].'"' : ' src="./_img/trombinoscope_vide.png"' ; $img_title = ($tab['img_title']) ? ' title="absence de photo"' : '' ; $trombinoscope_HTML .= '<div id="div_'.$user_id.'" class="photo"><img width="'.$tab['img_width'].'" height="'.$tab['img_height'].'" alt=""'.$img_src.$img_title.' /><br />'.html($tab['user_nom']).'<br />'.html($tab['user_prenom']).'</div>'; } // Enregistrement du PDF FileSystem::ecrire_sortie_PDF( CHEMIN_DOSSIER_EXPORT.$fnom_pdf , $trombinoscope_PDF ); // Affichage du HTML exit($trombinoscope_HTML);
} } } else { echo'<tr class="vide"><td class="nu" colspan="6"></td><td class="nu"></td></tr>'.NL; } ?> </tbody> </table> <?php if( $levenshtein && !empty($DB_TAB) ) { // Finalisation de l'export CSV (archivage dans un fichier) $fnom = 'extraction_ressemblances_adresses_'.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; } ?> <form action="#" method="post" id="form_gestion" class="hide"> <h2>Modifier une adresse</h2> <p> <label class="tab">Nom Prénom :</label><b id="gestion_identite"></b><br /> <label class="tab" for="f_ligne1">Ligne 1 :</label><input id="f_ligne1" name="f_ligne1" type="text" value="" size="50" maxlength="50" /><br /> <label class="tab" for="f_ligne2">Ligne 2 :</label><input id="f_ligne2" name="f_ligne2" type="text" value="" size="50" maxlength="50" /><br /> <label class="tab" for="f_ligne3">Ligne 3 :</label><input id="f_ligne3" name="f_ligne3" type="text" value="" size="50" maxlength="50" /><br /> <label class="tab" for="f_ligne4">Ligne 4 :</label><input id="f_ligne4" name="f_ligne4" type="text" value="" size="50" maxlength="50" /><br /> <label class="tab" for="f_code_postal">Code postal :</label><input id="f_code_postal" name="f_code_postal" type="text" value="" size="6" maxlength="10" /><br /> <label class="tab" for="f_commune">Commune :</label><input id="f_commune" name="f_commune" type="text" value="" size="45" maxlength="45" /><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;
} // //////////////////////////////////////////////////////////////////////////////////////////////////// // Enregistrement du rapport de récupération des recherches des anomalies éventuelles // //////////////////////////////////////////////////////////////////////////////////////////////////// if( $num && $max && ($num==$max) ) { // Trier les lignes array_multisort( $_SESSION['tmp']['infos']['niveau_alerte'], SORT_DESC,SORT_NUMERIC, $_SESSION['tmp']['infos']['base_id'] , SORT_ASC,SORT_NUMERIC, $_SESSION['tmp']['infos']['messages'] ); // Enregistrement du rapport $fichier_nom = 'rapport_analyser_et_reparer_tables_'.fabriquer_fin_nom_fichier__date_et_alea().'.html'; $thead = '<tr><td colspan="2">Analyse et réparation éventuelle des tables de bases de données par établissement - '.date('d/m/Y H:i:s').'</td></tr>'; $tbody = implode('',$_SESSION['tmp']['infos']['messages']); FileSystem::fabriquer_fichier_rapport( $fichier_nom , $thead , $tbody ); unset($_SESSION['tmp']); exit('ok-'.URL_DIR_EXPORT.$fichier_nom); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // On ne devrait pas en arriver là... // //////////////////////////////////////////////////////////////////////////////////////////////////// exit('Erreur avec les données transmises !'); ?>
// Fichier différent $tbody_pb .= '<tr class="r"><td>Fichier différent</td><td>'.$fichier.'</td></tr>'; } } elseif( (!isset($tab['avant'])) && (substr($fichier,-9)!='.htaccess') ) { // Fichier manquant $tbody_pb .= '<tr class="r"><td>Fichier manquant</td><td>'.$fichier.'</td></tr>'; } elseif(!isset($tab['apres'])) // (forcément) { $tbody_pb .= '<tr class="r"><td>Fichier en trop</td><td>'.$fichier.'</td></tr>'; } } // Enregistrement du rapport $_SESSION['tmp']['rapport_filename'] = 'rapport_verif_file_appli_'.$_SESSION['BASE'].'_'.fabriquer_fin_nom_fichier__date_et_alea().'.html'; FileSystem::fabriquer_fichier_rapport( $_SESSION['tmp']['rapport_filename'] , $thead , $tbody_pb.$tbody_ok ); exit(']¤['.'ok'.']¤['.'Rapport des différences trouvées et nettoyage…'); } // // 5. Nettoyage... // if($action=='verif_file_appli_etape5') { FileSystem::supprimer_dossier($dossier_dezip); $fichier_chemin = URL_DIR_EXPORT.$_SESSION['tmp']['rapport_filename']; unset($_SESSION['tmp']); exit(']¤['.'ok'.']¤['.$fichier_chemin); }
} $tab_eleves = array(); $tab_autres = array(); $tab_groupes = array(); foreach($DB_TAB as $DB_ROW) { if( ($selection_groupe) || !isset($tab_eleves[ $DB_ROW['valeur']]) ) // Un élève peut être une classe + un groupe associé au prof ; dans ce cas on ne garde que la 1e entrée (la classe) { $tab_eleves[ $DB_ROW['valeur']] = $DB_ROW['texte']; $tab_autres[ $DB_ROW['valeur']] = $DB_ROW['texte']; $tab_groupes[$DB_ROW['valeur']] = ($selection_groupe) ? $groupe_nom : $DB_ROW['optgroup'] ; } } $listing_user_id = implode(',', array_keys($tab_eleves) ); // Lister les demandes (et les messages associés) $fnom_export = 'messages_'.$_SESSION['BASE'].'_'.Clean::fichier($matiere_nom).'_'.Clean::fichier($groupe_nom).'_'.fabriquer_fin_nom_fichier__date_et_alea(); $separateur = ';'; $messages_html = '<table><thead><tr><th>Matière - Item</th><th>Groupe - Élève</th><th>Message(s)</th></tr></thead><tbody>'; $fichier_csv = 'Matière'.$separateur.'Item Ref'.$separateur.'Item Nom'.$separateur.'Groupe'.$separateur.'Élève'.$separateur.'Score'.$separateur.'Date'.$separateur.'Message'."\r\n"; $tab_demandes = array(); $DB_TAB = DB_STRUCTURE_DEMANDE::DB_lister_demandes_prof( $_SESSION['USER_ID'] , $matiere_id , $listing_user_id ); if(empty($DB_TAB)) { exit('Aucune demande n\'a été formulée selon les critères indiqués !'); } foreach($DB_TAB as $DB_ROW) { unset($tab_autres[$DB_ROW['eleve_id']]); $tab_demandes[] = $DB_ROW['demande_id']; $score = ($DB_ROW['demande_score']!==NULL) ? $DB_ROW['demande_score'] : FALSE ; $date = convert_date_mysql_to_french($DB_ROW['demande_date']);
// //////////////////////////////////////////////////////////////////////////////////////////////////// /* * Libérer de la place mémoire car les scripts de bilans sont assez gourmands. * Supprimer $DB_TAB ne fonctionne pas si on ne force pas auparavant la fermeture de la connexion. * SebR devrait peut-être envisager d'ajouter une méthode qui libère cette mémoire, si c'est possible... */ // //////////////////////////////////////////////////////////////////////////////////////////////////// DB::close(SACOCHE_STRUCTURE_BD_NAME); unset($DB_TAB); // //////////////////////////////////////////////////////////////////////////////////////////////////// // Tableaux et variables pour mémoriser les infos ; dans cette partie on ne fait que les calculs (aucun affichage) // //////////////////////////////////////////////////////////////////////////////////////////////////// $fichier = 'grille_item_'.Clean::fichier($matiere_nom).'_'.Clean::fichier($niveau_nom).'_<REPLACE>_'.fabriquer_fin_nom_fichier__date_et_alea(); $fichier_nom_type1 = ($type_generique) ? str_replace( '<REPLACE>' , 'generique' , $fichier ) : str_replace( '<REPLACE>' , Clean::fichier($groupe_nom).'_individuel' , $fichier ) ; $fichier_nom_type2 = str_replace( '<REPLACE>' , Clean::fichier($groupe_nom).'_synthese' , $fichier ) ; $tab_score_eleve_item = array(); // Retenir les scores / élève / item $tab_score_item_eleve = array(); // Retenir les scores / item / élève $tab_moyenne_scores_eleve = array(); // Retenir la moyenne des scores d'acquisitions / élève $tab_pourcentage_acquis_eleve = array(); // Retenir le pourcentage d'items acquis / élève $tab_moyenne_scores_item = array(); // Retenir la moyenne des scores d'acquisitions / item $tab_pourcentage_acquis_item = array(); // Retenir le pourcentage d'items acquis / item $moyenne_moyenne_scores = 0; // moyenne des moyennes des scores d'acquisitions $moyenne_pourcentage_acquis = 0; // moyenne des moyennes des pourcentages d'items acquis /* Calcul des états d'acquisition (si besoin) et des données nécessaires pour le tableau de synthèse (si besoin). $tab_score_eleve_item[$eleve_id][$item_id]
echo $lignes_mod ? $lignes_mod : '<tr><td colspan="2">Aucun</td></tr>' . NL; echo '</tbody><tbody>' . NL; echo '<tr><th colspan="2">Utilisateurs trouvés dans le fichier dont l\'identifiant Gepi n\'a pas pu être modifié.</th></tr>' . NL; echo $lignes_pb ? $lignes_pb : '<tr><td colspan="2">Aucun</td></tr>' . NL; echo '</tbody><tbody>' . NL; echo '<tr><th colspan="2">Utilisateurs trouvés dans le fichier dont l\'identifiant Gepi est inchangé.</th></tr>' . NL; echo $lignes_ras ? $lignes_ras : '<tr><td colspan="2">Aucun</td></tr>' . NL; echo '</tbody>' . NL; echo '</table>' . NL; exit; } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Import CSV du contenu d'un fichier pour forcer les identifiants d'un ENT /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'import_ent') { $fichier_nom = $action . '_' . $_SESSION['BASE'] . '_' . fabriquer_fin_nom_fichier__date_et_alea() . '.txt'; $result = FileSystem::recuperer_upload(CHEMIN_DOSSIER_IMPORT, $fichier_nom, array('txt', 'csv'), NULL, NULL, NULL); if ($result !== TRUE) { exit('Erreur : ' . $result); } // Récupérer les infos sur le CSV associé à l'ENT require CHEMIN_DOSSIER_INCLUDE . 'tableau_sso.php'; $tab_infos_csv = $tab_connexion_info[$_SESSION['CONNEXION_MODE']][$_SESSION['CONNEXION_DEPARTEMENT'] . '|' . $_SESSION['CONNEXION_NOM']]; // Pour récupérer les données des utilisateurs $tab_users_fichier = array(); $tab_users_fichier['id_ent'] = array(); $tab_users_fichier['nom'] = array(); $tab_users_fichier['prenom'] = array(); $tab_users_fichier['id_sconet'] = array(); $contenu = file_get_contents(CHEMIN_DOSSIER_IMPORT . $fichier_nom); $contenu = To::deleteBOM(To::utf8($contenu));
.'<td>'.html($DB_ROW['user_id_gepi']).'</td>' .'<td>'.$DB_ROW['user_sconet_id'].'</td>' .'<td>'.$DB_ROW['user_sconet_elenoet'].'</td>' .'<td>'.html($DB_ROW['user_reference']).'</td>' .'<td>'.html($DB_ROW['user_login']).'</td>' .'<td>'.Html::$tab_genre['adulte'][$DB_ROW['user_genre']].'</td>' .'<td>'.html($DB_ROW['user_nom']).'</td>' .'<td>'.html($DB_ROW['user_prenom']).'</td>' .'<td>'.$DB_ROW['user_profil_sigle'].'</td>' .'</tr>'.NL; } } } // Finalisation de l'export CSV (archivage dans un fichier) $fnom = 'export_infos-professeurs_'.Clean::fichier($groupe_nom).'_'.fabriquer_fin_nom_fichier__date_et_alea(); FileSystem::ecrire_fichier( CHEMIN_DOSSIER_EXPORT.$fnom.'.csv' , To::csv($export_csv) ); // Finalisation de l'export HTML $export_html .= '</tbody></table>'.NL; // Affichage echo'<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 (fichier <em>csv</em></span>).</a></li></ul>'.NL; echo $export_html; exit(); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // On ne devrait pas arriver jusque là. // //////////////////////////////////////////////////////////////////////////////////////////////////// exit('Erreur avec les données transmises !');
* si ce n’est pas le cas, consultez : <http://www.gnu.org/licenses/>. * */ if(!defined('SACoche')) {exit('Ce fichier ne peut être appelé directement !');} /** * Code inclus commun aux pages * [./_inc/code_brevet_fiches_***.php] */ Erreur500::prevention_et_gestion_erreurs_fatales( TRUE /*memory*/ , FALSE /*time*/ ); // Chemins d'enregistrement $fichier_nom = 'fiche_brevet_'.Clean::fichier($groupe_nom).'_'.fabriquer_fin_nom_fichier__date_et_alea() ; // Initialisation de tableaux $tab_eleve_infos = array(); // [eleve_id] => array(eleve_INE,eleve_nom,eleve_prenom,eleve_genre,date_naissance,eleve_brevet_serie) $tab_matiere = array(); // [matiere_id] => matiere_nom $tab_brevet_serie = array(); // [serie_ref] => serie_nom $tab_brevet_epreuve = array(); // [serie_ref][epreuve_code] => epreuve_nom, epreuve_obligatoire, epreuve_note_chiffree, epreuve_point_sup_10, epreuve_note_comptee, epreuve_coefficient, choix_matieres $tab_eleve_saisie = array(); // [eleve_id][epreuve_code][prof_id] => array(prof_info,appreciation,note); avec eleve_id=0 pour note ou appréciation sur la classe // //////////////////////////////////////////////////////////////////////////////////////////////////// // Récupération de l'identité des élèves // //////////////////////////////////////////////////////////////////////////////////////////////////// $tab_eleve_infos = DB_STRUCTURE_BILAN::DB_lister_eleves_cibles( $liste_eleve , 'alpha' /*eleves_ordre*/ , FALSE /*with_gepi*/ , FALSE /*with_langue*/ , TRUE /*with_brevet_serie*/ ); if(!is_array($tab_eleve_infos))
$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);
* * 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 !'); } /** * Code inclus commun aux pages * [./pages/releve_socle.ajax.php] * [./_inc/code_officiel_***.php] */ Erreur500::prevention_et_gestion_erreurs_fatales(TRUE, FALSE); // Chemins d'enregistrement $fichier_nom = $make_action != 'imprimer' ? 'releve_socle_detail_' . Clean::fichier(substr($palier_nom, 0, strpos($palier_nom, ' ('))) . '_' . Clean::fichier($groupe_nom) . '_' . fabriquer_fin_nom_fichier__date_et_alea() : 'officiel_' . $BILAN_TYPE . '_' . Clean::fichier($groupe_nom) . '_' . fabriquer_fin_nom_fichier__date_et_alea(); // Tableau des langues require CHEMIN_DOSSIER_INCLUDE . 'tableau_langues_socle.php'; $tab_item_pilier = array(); // id de l'item => id du pilier // Initialisation de tableaux $tab_pilier = array(); // [pilier_id] => pilier_nom; $tab_section = array(); // [pilier_id][section_id] => section_nom; $tab_socle = array(); // [section_id][socle_id] => socle_nom; $tab_entree_id = array(); // [i] => entree_id $tab_eleve_infos = array(); // [eleve_id] => array(eleve_INE,eleve_nom,eleve_prenom,date_naissance,eleve_langue)
// Enregistrer le nouveau fichier de paramètres // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'enregistrer') { // Pour le logo, ... if (!isset($_SESSION['tmp']['partenaire_logo_new_filename'])) { // soit on conserve le précédent (éventuellement rien), } elseif ($_SESSION['tmp']['partenaire_logo_new_filename'] == '') { // soit on le supprime, FileSystem::supprimer_fichier(CHEMIN_DOSSIER_PARTENARIAT . $_SESSION['tmp']['partenaire_logo_actuel_filename'], TRUE); $_SESSION['tmp']['partenaire_logo_actuel_filename'] = ''; } elseif (is_file(CHEMIN_DOSSIER_IMPORT . $_SESSION['tmp']['partenaire_logo_new_filename'])) { // soit on prend le nouveau, auquel cas il faut aussi le déplacer dans CHEMIN_DOSSIER_PARTENARIAT, et éventuellement supprimer l'ancien if ($_SESSION['tmp']['partenaire_logo_actuel_filename']) { FileSystem::supprimer_fichier(CHEMIN_DOSSIER_PARTENARIAT . $_SESSION['tmp']['partenaire_logo_actuel_filename'], TRUE); } $_SESSION['tmp']['partenaire_logo_actuel_filename'] = 'logo_' . $_SESSION['USER_ID'] . '_' . fabriquer_fin_nom_fichier__date_et_alea() . '.' . $_SESSION['tmp']['partenaire_logo_new_file_ext']; copy(CHEMIN_DOSSIER_IMPORT . $_SESSION['tmp']['partenaire_logo_new_filename'], CHEMIN_DOSSIER_PARTENARIAT . $_SESSION['tmp']['partenaire_logo_actuel_filename']); } unset($_SESSION['tmp']['partenaire_logo_new_filename'], $_SESSION['tmp']['partenaire_logo_new_file_ext']); // On fabrique le fichier avec les infos et on l'enregistre FileSystem::fabriquer_fichier_partenaire_message($_SESSION['USER_ID'], $_SESSION['tmp']['partenaire_logo_actuel_filename'], $adresse_web, $message); // Retour $partenaire_logo_url = $_SESSION['tmp']['partenaire_logo_actuel_filename'] ? URL_DIR_PARTENARIAT . $_SESSION['tmp']['partenaire_logo_actuel_filename'] : URL_DIR_IMG . 'auto.gif'; $partenaire_lien_ouvrant = $adresse_web ? '<a href="' . html($adresse_web) . '" target="_blank">' : ''; $partenaire_lien_fermant = $adresse_web ? '</a>' : ''; exit('ok-' . $partenaire_lien_ouvrant . '<span id="partenaire_logo"><img src="' . html($partenaire_logo_url) . '" /></span><span id="partenaire_message">' . nl2br(html($message)) . '</span>' . $partenaire_lien_fermant . '<hr id="partenaire_hr" />'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Il se peut que rien n'ait été récupéré à cause de l'upload d'un fichier trop lourd // //////////////////////////////////////////////////////////////////////////////////////////////////// if (empty($_POST)) {
$export_csv .= ($with_note) ? $separateur."\r\n" : "\r\n" ; } $export_csv .= "\r\n"; // une valeur NULL donnera une chaine vide } $fnom_export = 'saisie_deportee_'.$_SESSION['BASE'].'_'.$_SESSION['USER_ID'].'_'.Clean::fichier($BILAN_TYPE).'_'.Clean::fichier($periode_nom).'_'.Clean::fichier($groupe_nom).'_'.$BILAN_ETAT.'_'.fabriquer_fin_nom_fichier__date_et_alea().'.csv'; FileSystem::ecrire_fichier( CHEMIN_DOSSIER_EXPORT.$fnom_export , To::csv($export_csv) ); exit($fnom_export); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Cas 2 : réception d'un import csv (saisie déportée) // //////////////////////////////////////////////////////////////////////////////////////////////////// if($ACTION=='uploader_saisie_csv') { $fichier_nom = 'saisie_deportee_'.$_SESSION['BASE'].'_'.$_SESSION['USER_ID'].'_'.Clean::fichier($BILAN_TYPE).'_'.$periode_id.'_'.$groupe_id.'_'.$BILAN_ETAT.'_'.fabriquer_fin_nom_fichier__date_et_alea(); $result = FileSystem::recuperer_upload( CHEMIN_DOSSIER_IMPORT /*fichier_chemin*/ , $fichier_nom.'.<EXT>' /*fichier_nom*/ , array('txt','csv') /*tab_extensions_autorisees*/ , NULL /*tab_extensions_interdites*/ , NULL /*taille_maxi*/ , NULL /*filename_in_zip*/ ); if($result!==TRUE) { exit('Erreur : '.$result); } $contenu_csv = file_get_contents(CHEMIN_DOSSIER_IMPORT.FileSystem::$file_saved_name); $contenu_csv = To::deleteBOM(To::utf8($contenu_csv)); // Mettre en UTF-8 si besoin et retirer le BOM éventuel $tab_lignes = extraire_lignes($contenu_csv); // Extraire les lignes du fichier if(count($tab_lignes)<4) { exit('Erreur : absence de données suffisantes (fichier comportant moins de 4 lignes) !'); } $separateur = extraire_separateur_csv($tab_lignes[2]); // Déterminer la nature du séparateur // Données de la ligne d'en-tête $tab_elements = str_getcsv($tab_lignes[0],$separateur);
} } } 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>
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>'; $result = FileSystem::recuperer_upload( CHEMIN_DOSSIER_IMPORT /*fichier_chemin*/ , $fichier_nom /*fichier_nom*/ , array('txt','csv') /*tab_extensions_autorisees*/ , NULL /*tab_extensions_interdites*/ , NULL /*taille_maxi*/ , NULL /*filename_in_zip*/ ); if($result!==TRUE) { exit('Erreur : '.$result); } $contenu_csv = file_get_contents(CHEMIN_DOSSIER_IMPORT.FileSystem::$file_saved_name); $contenu_csv = To::deleteBOM(To::utf8($contenu_csv)); // Mettre en UTF-8 si besoin et retirer le BOM éventuel $tab_lignes = extraire_lignes($contenu_csv); // Extraire les lignes du fichier $separateur = extraire_separateur_csv($tab_lignes[0]); // Déterminer la nature du séparateur // Pas de ligne d'en-tête à supprimer // Mémoriser les eleve_id de la 1ère ligne $tab_eleve = array(); $tab_elements = str_getcsv($tab_lignes[0],$separateur); unset($tab_elements[0]); foreach ($tab_elements as $num_colonne => $element_contenu)