$alerte = '<p class="danger">Vous avez fourni le fichier <span class="u b">avec</span> adresses ! Vous pouvez toutefois poursuivre…</p>' . NL; } } else { if ($import_profil == 'parent') { $nom_fichier_extrait = 'ResponsablesAvecAdresses.xml'; if (isset($_FILES['userfile']['name']) && strpos($_FILES['userfile']['name'], 'ResponsablesSansAdresses')) { $nom_fichier_extrait = 'ResponsablesSansAdresses.xml'; $alerte = '<p class="danger">Vous avez fourni le fichier <span class="u b">sans</span> adresses ! Si vous poursuivez, sachez que les adresses ne seront pas trouvées…</p>' . NL; } } else { if ($import_profil == 'professeur') { $annee_scolaire = date('n') > 7 ? date('Y') : date('Y') - 1; $nom_fichier_extrait = 'sts_emp_' . $_SESSION['WEBMESTRE_UAI'] . '_' . $annee_scolaire . '.xml'; } } } } $result = FileSystem::recuperer_upload(CHEMIN_DOSSIER_IMPORT, $fichier_dest, $tab_extensions_autorisees, NULL, NULL, $nom_fichier_extrait); if ($result !== TRUE) { exit('Erreur : ' . $result); } // On affiche le bilan et les puces des étapes echo '<hr />' . NL; echo $mode == 'complet' ? '<p class="astuce">Affichage complet des analyses et des comptes-rendus.</p>' : '<p class="astuce">Analyse restreinte aux seules différences trouvées et comptes-rendus non détaillés.</p>' . NL; echo afficher_etapes($import_origine, $import_profil); echo '<hr />' . NL; echo '<fieldset>' . NL; echo '<div><label class="valide">Votre fichier a été correctement réceptionné.</label></div>' . NL; echo $alerte; echo '<ul class="puce p"><li><a href="#step20" id="passer_etape_suivante">Passer à l\'étape 2.</a><label id="ajax_msg"> </label></li></ul>' . NL; echo '</fieldset>' . NL;
} $nb_eleves_trouves = count($tab_users_fichier, COUNT_NORMAL); if (!$nb_eleves_trouves) { exit('Erreur : aucun élève trouvé dans le fichier !'); } // On enregistre FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT . $fichier_memo, serialize($tab_users_fichier)); // On affiche la demande de confirmation exit('ok' . ']¤[' . html($nb_eleves_trouves)); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Réception et analyse d'un fichier d'import issu de Pronote // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'import_pronote' && $periode_id) { // Récupération du fichier (zip ou pas) $result = FileSystem::recuperer_upload(CHEMIN_DOSSIER_IMPORT, $fichier_dest, $tab_extensions_autorisees, NULL, NULL, 'SIECLE_exportAbsence.xml'); if ($result !== TRUE) { exit('Erreur : ' . $result); } // Vérification du fichier $xml = @simplexml_load_file(CHEMIN_DOSSIER_IMPORT . $fichier_dest); if ($xml === FALSE) { exit('Erreur : le fichier transmis n\'est pas un XML valide !'); } // Récupération des données du fichier $memo_date_debut = 9999; $memo_date_fin = 0; $tab_users_fichier = array(); if ($xml->Absences_des_eleves) { $objet = 'absences'; // cas d'un fichier d'absences
} } // Nettoyer des restes d'upload de zip éventuels foreach ($_SESSION['tab_info'] as $key => $tab_infos) { FileSystem::supprimer_fichier(CHEMIN_DOSSIER_DUMP . $tab_infos['fichier_nom'], TRUE); } exit(']¤[' . $info_lignes_trouvees); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Import d'un fichier ZIP avec le fichier des bases sauvegardées // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'importer_zip') { if (!count($_SESSION['tab_info'])) { exit('Erreur : données du fichier CSV perdues !'); } $result = FileSystem::recuperer_upload(CHEMIN_DOSSIER_IMPORT, $fichier_zip_nom, array('zip'), NULL, NULL, NULL); if ($result !== TRUE) { exit('Erreur : ' . $result); } // Dezipper dans le dossier dump (pas dans un sous-dossier "temporaire" sinon ce dossier n'est pas vidé si l'opération n'arrive pas à son terme). $code_erreur = FileSystem::unzip(CHEMIN_DOSSIER_IMPORT . $fichier_zip_nom, CHEMIN_DOSSIER_DUMP, TRUE); if ($code_erreur) { 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_zip_nom); // Vérifier le contenu : noms des fichiers $tab_fichier = FileSystem::lister_contenu_dossier(CHEMIN_DOSSIER_DUMP); $nb_fichiers_introuvables = 0; foreach ($_SESSION['tab_info'] as $key => $tab_infos) { if (!in_array($tab_infos['fichier_nom'], $tab_fichier)) { $nb_fichiers_introuvables++;
} else { $options = count($DB_TAB) == 1 ? '' : '<option value="0">Tous les enseignants concernés</option>'; foreach ($DB_TAB as $DB_ROW) { $options .= '<option value="' . $DB_ROW['user_id'] . '">' . html(afficher_identite_initiale($DB_ROW['user_nom'], FALSE, $DB_ROW['user_prenom'], TRUE, $DB_ROW['user_genre'])) . '</option>'; } exit($options); } } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Uploader un document pour joindre à une demande // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'uploader_document') { // Récupération du fichier $fichier_nom = 'demande_' . $_SESSION['BASE'] . '_user_' . $_SESSION['USER_ID'] . '_' . $_SERVER['REQUEST_TIME'] . '.<EXT>'; // pas besoin de le rendre inaccessible -> fabriquer_fin_nom_fichier__date_et_alea() inutilement lourd $result = FileSystem::recuperer_upload(CHEMIN_DOSSIER_IMPORT, $fichier_nom, NULL, array('bat', 'com', 'exe', 'php', 'zip'), FICHIER_TAILLE_MAX, NULL); if ($result !== TRUE) { exit($result); } // Retour exit('ok' . ']¤[' . FileSystem::$file_saved_name . ']¤[' . URL_DIR_IMPORT . FileSystem::$file_saved_name); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Un élève confirme l'ajout d'une demande d'évaluation // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'confirmer_ajout' && $matiere_id && $item_id && $prof_id !== -1 && $score !== -2) { // Vérifier que cet item n'est pas déjà en attente d'évaluation pour cet élève if (DB_STRUCTURE_DEMANDE::DB_tester_demande_existante($_SESSION['USER_ID'], $matiere_id, $item_id)) { exit('<label class="erreur">Cette demande est déjà enregistrée !</label>'); } // Vérifier que les demandes sont autorisées pour cette matière
} $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); unset($tab_lignes[0]);
$_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])) { FileSystem::supprimer_fichier(CHEMIN_DOSSIER_IMPORT . FileSystem::$file_saved_name);
// Supprimer le dossier temporaire FileSystem::supprimer_dossier($dossier_temp); // Enregistrement du rapport $fichier_nom = 'rapport_zip_photos_'.$_SESSION['BASE'].'_'.fabriquer_fin_nom_fichier__date_et_alea().'.html'; FileSystem::fabriquer_fichier_rapport( $fichier_nom , $thead , $tbody ); // retour exit(']¤['.URL_DIR_EXPORT.$fichier_nom); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Uploader une photo // //////////////////////////////////////////////////////////////////////////////////////////////////// if( ($action=='envoyer_photo') && $user_id ) { $result = FileSystem::recuperer_upload( CHEMIN_DOSSIER_IMPORT /*fichier_chemin*/ , NULL /*fichier_nom*/ , $tab_ext_images /*tab_extensions_autorisees*/ , NULL /*tab_extensions_interdites*/ , 500 /*taille_maxi*/ , NULL /*filename_in_zip*/ ); if($result!==TRUE) { exit('Erreur : '.$result); } // traiter l'image : la vérifier, la redimensionner, l'enregistrer en BDD, et effacer les fichiers temporaires $result = photo_file_to_base($user_id,CHEMIN_DOSSIER_IMPORT.FileSystem::$file_saved_name); if(is_string($result)) { exit('Erreur : '.$result.' !'); } // retour list( $image_contenu_base_64 , $largeur_new , $hauteur_new) = $result; exit('ok'.']¤['.$user_id.']¤['.$largeur_new.']¤['.$hauteur_new.']¤['.'data:'.image_type_to_mime_type(IMAGETYPE_JPEG).';base64,'.$image_contenu_base_64); }
exit('Erreur : aucun élève trouvé dans le fichier !'); } // On enregistre FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT.$fichier_memo,serialize($tab_users_fichier)); // On affiche la demande de confirmation exit('ok'.']¤['.html($nb_eleves_trouves)); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Réception et analyse d'un fichier d'import issu de Pronote // //////////////////////////////////////////////////////////////////////////////////////////////////// if( ($action=='import_pronote') && $periode_id ) { // Récupération du fichier (zip ou pas) $result = FileSystem::recuperer_upload( CHEMIN_DOSSIER_IMPORT /*fichier_chemin*/ , $fichier_dest /*fichier_nom*/ , $tab_extensions_autorisees , NULL /*tab_extensions_interdites*/ , NULL /*taille_maxi*/ , 'SIECLE_exportAbsence.xml' /*filename_in_zip*/ ); if($result!==TRUE) { exit('Erreur : '.$result); } // Vérification du fichier $xml = @simplexml_load_file(CHEMIN_DOSSIER_IMPORT.$fichier_dest); if($xml===FALSE) { exit('Erreur : le fichier transmis n\'est pas un XML valide !'); } // Récupération des données du fichier $memo_date_debut = 9999; $memo_date_fin = 0; $tab_users_fichier = array(); if($xml->Absences_des_eleves)
$export_csv .= $eleve_ligne_debut; $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_nom . '.<EXT>', array('txt', 'csv'), NULL, NULL, NULL); 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);
// //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'Rechercher_documents') { exit(ServeurCommunautaire::rechercher_documents($_SESSION['SESAMATH_ID'], $_SESSION['SESAMATH_KEY'])); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Uploader une ressource sur le serveur communautaire // //////////////////////////////////////////////////////////////////////////////////////////////////// /* Pour uploader une ressource directement sur le serveur communautaire, le fichier "professeur_referentiel_edition.php" devrait l'appeller dans une iframe (le bouton d'upload du formulaire devant se trouver sur ce serveur). Mais : - une fois l'upload effectué, pour faire remonter l'info au serveur où est installé SACoche, se pose un souci de cross-domain javascript. - il faudrait reproduire côté serveur communautaire tout un environnement (js & css) semblable à celui du serveur d'installation de SACoche Finalement, j'ai opté pour le plus simple même si ce n'est pas le plus économe : uploader sur le serveur SACoche puis transférer vers le serveur communautaire avec cURL::get_contents(). Ca va qu'une limite de 500Ko est imposée... */ if ($action == 'Uploader_document') { $result = FileSystem::recuperer_upload(CHEMIN_DOSSIER_IMPORT, NULL, NULL, array('bat', 'com', 'exe', 'php', 'zip'), 500, NULL); if ($result !== TRUE) { exit($result); } $fichier_nom = Clean::fichier(FileSystem::$file_upload_name); $reponse = ServeurCommunautaire::uploader_ressource($_SESSION['SESAMATH_ID'], $_SESSION['SESAMATH_KEY'], $_SESSION['tmp']['matiere_ref'], $fichier_nom, file_get_contents(CHEMIN_DOSSIER_IMPORT . FileSystem::$file_saved_name)); FileSystem::supprimer_fichier(CHEMIN_DOSSIER_IMPORT . FileSystem::$file_saved_name); exit($reponse); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // 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()); } // ////////////////////////////////////////////////////////////////////////////////////////////////////
// //////////////////////////////////////////////////////////////////////////////////////////////////// // Uploader un sujet ou un corrigé d'évaluation // //////////////////////////////////////////////////////////////////////////////////////////////////// if( ($action=='uploader_document') && $devoir_id && in_array($doc_objet,array('sujet','corrige')) ) { // Vérification des droits $proprio_id = DB_STRUCTURE_PROFESSEUR::DB_recuperer_devoir_prorietaire_id( $devoir_id ); if($proprio_id!=$_SESSION['USER_ID']) { exit('Erreur : vous n\'êtes pas propriétaire du devoir n°'.$devoir_id.' !'); } // Récupération du fichier $fichier_nom = 'devoir_'.$devoir_id.'_'.$doc_objet.'_'.$_SERVER['REQUEST_TIME'].'.<EXT>'; // pas besoin de le rendre inaccessible -> fabriquer_fin_nom_fichier__date_et_alea() inutilement lourd $result = FileSystem::recuperer_upload( $chemin_devoir /*fichier_chemin*/ , $fichier_nom /*fichier_nom*/ , NULL /*tab_extensions_autorisees*/ , array('bat','com','exe','php','zip') /*tab_extensions_interdites*/ , FICHIER_TAILLE_MAX /*taille_maxi*/ , NULL /*filename_in_zip*/ ); if($result!==TRUE) { exit($result); } // Mise à jour dans la base DB_STRUCTURE_PROFESSEUR::DB_modifier_devoir_document( $devoir_id , $doc_objet , $url_dossier_devoir.FileSystem::$file_saved_name ); // Retour exit('ok'.']¤['.$ref.']¤['.$doc_objet.']¤['.$url_dossier_devoir.FileSystem::$file_saved_name); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Retirer un sujet ou un corrigé d'évaluation // //////////////////////////////////////////////////////////////////////////////////////////////////// if( ($action=='retirer_document') && $devoir_id && in_array($doc_objet,array('sujet','corrige')) && $doc_url )
{ echo'<li>Vous devrez indiquer dans <em>lpc</em> les dates suivantes : <span class="b">'.html(CNIL_DATE_ENGAGEMENT).'</span> (déclaration <em>cnil</em>) et <span class="b">'.html(CNIL_DATE_RECEPISSE).'</span> (retour du récépissé).</li>'.NL; } echo'<li><label class="alerte">Pour des raisons de sécurité et de confidentialité, ce fichier sera effacé du serveur dans 1h.</label></li>'.NL; exit(); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Importer un fichier de validations // //////////////////////////////////////////////////////////////////////////////////////////////////// if( in_array( $action , array('import_sacoche','import_compatible') ) ) { // Si c'est un fichier zippé, on considère alors que c'est un zip devant venir de SACoche, et contenant import_validations.xml $fichier_nom = 'import_validations_'.$_SESSION['BASE'].'_'.fabriquer_fin_nom_fichier__date_et_alea().'.xml'; $result = FileSystem::recuperer_upload( CHEMIN_DOSSIER_IMPORT /*fichier_chemin*/ , $fichier_nom /*fichier_nom*/ , array('xml','zip') /*tab_extensions_autorisees*/ , NULL /*tab_extensions_interdites*/ , NULL /*taille_maxi*/ , 'import_validations.xml' /*filename_in_zip*/ ); if($result!==TRUE) { exit('Erreur : '.$result); } $fichier_contenu = file_get_contents(CHEMIN_DOSSIER_IMPORT.$fichier_nom); $fichier_contenu = To::deleteBOM(To::utf8($fichier_contenu)); // Mettre en UTF-8 si besoin et retirer le BOM éventuel $xml = @simplexml_load_string($fichier_contenu); if($xml===FALSE) { exit('Erreur : le fichier transmis n\'est pas un XML valide !'); } // On extrait les infos du XML $tab_eleve_fichier = array(); if( ($xml->donnees) && ($xml->donnees->eleve) ) {
// Retour exit('ok'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Uploader un sujet ou un corrigé d'évaluation // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'uploader_document' && $devoir_id && in_array($doc_objet, array('sujet', 'corrige'))) { // Vérification des droits $proprio_id = DB_STRUCTURE_PROFESSEUR::DB_recuperer_devoir_prorietaire_id($devoir_id); if ($proprio_id != $_SESSION['USER_ID']) { exit('Erreur : vous n\'êtes pas propriétaire du devoir n°' . $devoir_id . ' !'); } // Récupération du fichier $fichier_nom = 'devoir_' . $devoir_id . '_' . $doc_objet . '_' . $_SERVER['REQUEST_TIME'] . '.<EXT>'; // pas besoin de le rendre inaccessible -> fabriquer_fin_nom_fichier__date_et_alea() inutilement lourd $result = FileSystem::recuperer_upload($chemin_devoir, $fichier_nom, NULL, array('bat', 'com', 'exe', 'php', 'zip'), FICHIER_TAILLE_MAX, NULL); if ($result !== TRUE) { exit($result); } // Mise à jour dans la base DB_STRUCTURE_PROFESSEUR::DB_modifier_devoir_document($devoir_id, $doc_objet, $url_dossier_devoir . FileSystem::$file_saved_name); // Retour exit('ok' . ']¤[' . $ref . ']¤[' . $doc_objet . ']¤[' . $url_dossier_devoir . FileSystem::$file_saved_name); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Retirer un sujet ou un corrigé d'évaluation // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'retirer_document' && $devoir_id && in_array($doc_objet, array('sujet', 'corrige')) && $doc_url) { // Vérification des droits $proprio_id = DB_STRUCTURE_PROFESSEUR::DB_recuperer_devoir_prorietaire_id($devoir_id); if ($proprio_id != $_SESSION['USER_ID']) {
exit('Ce fichier ne peut être appelé directement !'); } if ($_SESSION['SESAMATH_ID'] == ID_DEMO) { exit('Action désactivée pour la démo...'); } $action = isset($_POST['f_action']) ? Clean::texte($_POST['f_action']) : ''; $logo = isset($_POST['f_logo']) ? Clean::texte($_POST['f_logo']) : ''; // inutilisé $adresse_web = isset($_POST['f_adresse_web']) ? Clean::url($_POST['f_adresse_web']) : ''; $message = isset($_POST['f_message']) ? Clean::texte($_POST['f_message']) : ''; $tab_ext_images = array('bmp', 'gif', 'jpg', 'jpeg', 'png'); // //////////////////////////////////////////////////////////////////////////////////////////////////// // Uploader un logo // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'upload_logo') { $result = FileSystem::recuperer_upload(CHEMIN_DOSSIER_IMPORT, NULL, $tab_ext_images, 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', IMAGETYPE_BMP => 'bmp'); // 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])) { FileSystem::supprimer_fichier(CHEMIN_DOSSIER_IMPORT . FileSystem::$file_saved_name);
// //////////////////////////////////////////////////////////////////////////////////////////////////// // Uploader une ressource sur le serveur communautaire // //////////////////////////////////////////////////////////////////////////////////////////////////// /* Pour uploader une ressource directement sur le serveur communautaire, le fichier "professeur_referentiel_edition.php" devrait l'appeller dans une iframe (le bouton d'upload du formulaire devant se trouver sur ce serveur). Mais : - une fois l'upload effectué, pour faire remonter l'info au serveur où est installé SACoche, se pose un souci de cross-domain javascript. - il faudrait reproduire côté serveur communautaire tout un environnement (js & css) semblable à celui du serveur d'installation de SACoche Finalement, j'ai opté pour le plus simple même si ce n'est pas le plus économe : uploader sur le serveur SACoche puis transférer vers le serveur communautaire avec cURL::get_contents(). Ca va qu'une limite de 500Ko est imposée... */ if($action=='Uploader_document') { $result = FileSystem::recuperer_upload( CHEMIN_DOSSIER_IMPORT /*fichier_chemin*/ , NULL /*fichier_nom*/ , NULL /*tab_extensions_autorisees*/ , array('bat','com','exe','php','zip') /*tab_extensions_interdites*/ , 500 /*taille_maxi*/ , NULL /*filename_in_zip*/ ); if($result!==TRUE) { exit($result); } $fichier_nom = Clean::fichier(FileSystem::$file_upload_name); $reponse = ServeurCommunautaire::uploader_ressource( $_SESSION['SESAMATH_ID'] , $_SESSION['SESAMATH_KEY'] , $_SESSION['tmp']['matiere_ref'] , $fichier_nom , file_get_contents(CHEMIN_DOSSIER_IMPORT.FileSystem::$file_saved_name) ); FileSystem::supprimer_fichier(CHEMIN_DOSSIER_IMPORT.FileSystem::$file_saved_name); exit($reponse); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Il se peut que rien n'ait été récupéré à cause de l'upload d'un fichier trop lourd // //////////////////////////////////////////////////////////////////////////////////////////////////// if(empty($_POST))
$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 if(!isset($tab_extension_types[$image_type]))
$in = $only_positives ? '' : '(in)-'; echo '<li><label class="valide">Fichier d\'export généré : ' . $nb_piliers . ' ' . $in . 'validation' . $sp . ' de compétence' . $sp . ' et ' . $nb_items . ' ' . $in . 'validation' . $si . ' d\'item' . $si . ' concernant ' . $nb_eleves . ' élève' . $se . '.</label></li>' . NL; echo '<li><a target="_blank" href="' . $fichier_lien . '"><span class="file file_' . $fichier_extension . '">Récupérer le fichier au format <em>' . $fichier_extension . '</em>.</span></a></li>' . NL; if ($action == 'export_lpc') { echo '<li>Vous devrez indiquer dans <em>lpc</em> les dates suivantes : <span class="b">' . html(CNIL_DATE_ENGAGEMENT) . '</span> (déclaration <em>cnil</em>) et <span class="b">' . html(CNIL_DATE_RECEPISSE) . '</span> (retour du récépissé).</li>' . NL; } echo '<li><label class="alerte">Pour des raisons de sécurité et de confidentialité, ce fichier sera effacé du serveur dans 1h.</label></li>' . NL; exit; } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Importer un fichier de validations // //////////////////////////////////////////////////////////////////////////////////////////////////// if (in_array($action, array('import_sacoche', 'import_compatible'))) { // Si c'est un fichier zippé, on considère alors que c'est un zip devant venir de SACoche, et contenant import_validations.xml $fichier_nom = 'import_validations_' . $_SESSION['BASE'] . '_' . fabriquer_fin_nom_fichier__date_et_alea() . '.xml'; $result = FileSystem::recuperer_upload(CHEMIN_DOSSIER_IMPORT, $fichier_nom, array('xml', 'zip'), NULL, NULL, 'import_validations.xml'); if ($result !== TRUE) { exit('Erreur : ' . $result); } $fichier_contenu = file_get_contents(CHEMIN_DOSSIER_IMPORT . $fichier_nom); $fichier_contenu = To::deleteBOM(To::utf8($fichier_contenu)); // Mettre en UTF-8 si besoin et retirer le BOM éventuel $xml = @simplexml_load_string($fichier_contenu); if ($xml === FALSE) { exit('Erreur : le fichier transmis n\'est pas un XML valide !'); } // On extrait les infos du XML $tab_eleve_fichier = array(); if ($xml->donnees && $xml->donnees->eleve) { foreach ($xml->donnees->eleve as $eleve) { $tab_eleve_fichier['sconet_id'][] = Clean::entier($eleve->attributes()->id);