{ ajouter_log_PHP( 'Mise à jour des fichiers' /*log_objet*/ , 'Application accessible.' /*log_contenu*/ , __FILE__ /*log_fichier*/ , __LINE__ /*log_ligne*/ , FALSE /*only_sesamath*/ ); LockAcces::debloquer_application($_SESSION['USER_PROFIL_TYPE'],'0'); exit(']¤['.'pb'.']¤['."Erreur lors de l'écriture du fichier ".$fichier." !"); } $tbody .= '<tr><td class="v">Fichier ajouté</td><td>'.$fichier.'</td></tr>'; } elseif(!isset($tab['apres'])) // (forcément) { // Fichier à supprimer FileSystem::supprimer_fichier($dossier_install.$fichier , TRUE /*verif_exist*/ ); $tbody .= '<tr><td class="r">Fichier supprimé</td><td>'.$fichier.'</td></tr>'; } } // Débloquer l'application ajouter_log_PHP( 'Mise à jour des fichiers' /*log_objet*/ , 'Application accessible.' /*log_contenu*/ , __FILE__ /*log_fichier*/ , __LINE__ /*log_ligne*/ , FALSE /*only_sesamath*/ ); LockAcces::debloquer_application($_SESSION['USER_PROFIL_TYPE'],'0'); // Enregistrement du rapport $_SESSION['tmp']['rapport_filename'] = 'rapport_maj_'.$_SESSION['BASE'].'_'.fabriquer_fin_nom_fichier__date_et_alea().'.html'; FileSystem::fabriquer_fichier_rapport( $_SESSION['tmp']['rapport_filename'] , $thead , $tbody ); exit(']¤['.'ok'.']¤['.'Rapport des modifications apportées et nettoyage…'); } // // 5. Nettoyage... // if($action=='maj_etape5') { FileSystem::supprimer_dossier($dossier_dezip); $fichier_chemin = URL_DIR_EXPORT.$_SESSION['tmp']['rapport_filename']; unset($_SESSION['tmp']);
exit('ok'); } // Traductions if ($_SESSION['USER_PROFIL_TYPE'] != 'public') { Lang::setlocale(LC_MESSAGES, Lang::get_locale_used()); Lang::bindtextdomain(LOCALE_DOMAINE, LOCALE_DIR); Lang::bind_textdomain_codeset(LOCALE_DOMAINE, LOCALE_CHARSET); Lang::textdomain(LOCALE_DOMAINE); } // Blocage éventuel par le webmestre ou un administrateur ou l'automate (on ne peut pas le tester avant car il faut avoir récupéré les données de session) LockAcces::stopper_si_blocage($_SESSION['BASE'], FALSE); // Autres fonctions à charger require CHEMIN_DOSSIER_INCLUDE . 'fonction_divers.php'; // Logs d'infos au cas où un trop grand nombre de variables seraient postées (par défaut max_input_vars est configuré dans PHP à 1000, et en cas de dépassement les logs indiquent juste "in Unknown on line 0"). if (count($_POST) > 999) { ajouter_log_PHP('Trop de variables postées', 'Page ' . $PAGE, __FILE__, __LINE__, FALSE); } // Jeton CSRF Session::verifier_jeton_anti_CSRF($PAGE); // MAJ fichier de config hébergement si besoin if (is_file(CHEMIN_FICHIER_CONFIG_INSTALL)) { require CHEMIN_DOSSIER_INCLUDE . 'maj_fichier_constantes_hebergement.php'; } // Interface de connexion à la base, chargement et config (test sur CHEMIN_FICHIER_CONFIG_INSTALL car à éviter si procédure d'installation non terminée). if (is_file(CHEMIN_FICHIER_CONFIG_INSTALL)) { // Choix des paramètres de connexion à la base de données adaptée... // ...multi-structures ; base sacoche_structure_*** (si connecté sur un établissement) if (HEBERGEUR_INSTALLATION == 'multi-structures' && $_SESSION['BASE'] > 0) { $fichier_mysql_config = 'serveur_sacoche_structure_' . $_SESSION['BASE']; $fichier_class_config = 'class.DB.config.sacoche_structure'; } elseif (HEBERGEUR_INSTALLATION == 'multi-structures') {
break; case 'base_eleves+eleve': $test2 = array_multisort($tab_classes_fichier['niveau'], SORT_DESC, SORT_STRING, $tab_classes_fichier['ref'], SORT_ASC, SORT_STRING, $tab_classes_fichier['nom'], SORT_ASC, SORT_STRING); case 'factos+eleve': $test1 = array_multisort($tab_users_fichier['nom'], SORT_ASC, SORT_STRING, $tab_users_fichier['prenom'], SORT_ASC, SORT_STRING, $tab_users_fichier['genre'], $tab_users_fichier['birth_date'], $tab_users_fichier['courriel'], $tab_users_fichier['sconet_id'], $tab_users_fichier['sconet_num'], $tab_users_fichier['reference'], $tab_users_fichier['profil_sigle'], $tab_users_fichier['classe']); break; case 'sconet+parent': case 'base_eleves+parent': case 'tableur+parent': $test1 = array_multisort($tab_users_fichier['nom'], SORT_ASC, SORT_STRING, $tab_users_fichier['prenom'], SORT_ASC, SORT_STRING, $tab_users_fichier['genre'], $tab_users_fichier['courriel'], $tab_users_fichier['sconet_id'], $tab_users_fichier['sconet_num'], $tab_users_fichier['reference'], $tab_users_fichier['profil_sigle'], $tab_users_fichier['adresse'], $tab_users_fichier['enfant']); break; } // Outil de résolution de bug ; le test1 provoque parfois l'erreur "Array sizes are inconsistent". // Edit au 11/05/2012 : a priori c'est corrigé, mais je laisse quand même le test au cas où, ça ne coûte rien... if (!$test1) { ajouter_log_PHP('Import fichier ' . $import_origine . ' ' . $import_profil, serialize($tab_users_fichier), __FILE__, __LINE__, TRUE); } // On enregistre FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT . 'import_' . $import_origine . '_' . $import_profil . '_' . $_SESSION['BASE'] . '_' . session_id() . '_users.txt', serialize($tab_users_fichier)); FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT . 'import_' . $import_origine . '_' . $import_profil . '_' . $_SESSION['BASE'] . '_' . session_id() . '_classes.txt', serialize($tab_classes_fichier)); FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT . 'import_' . $import_origine . '_' . $import_profil . '_' . $_SESSION['BASE'] . '_' . session_id() . '_groupes.txt', serialize($tab_groupes_fichier)); FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT . 'import_' . $import_origine . '_' . $import_profil . '_' . $_SESSION['BASE'] . '_' . session_id() . '_liens_id_base.txt', serialize($tab_liens_id_base)); // On affiche le bilan des utilisateurs trouvés if (count($tab_users_fichier['profil_sigle'])) { // Nom des profils $tab_profils_libelles = array(); $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_profils_parametres('user_profil_nom_long_singulier,user_profil_nom_long_pluriel', FALSE); foreach ($DB_TAB as $DB_ROW) { $tab_profils_libelles[$DB_ROW['user_profil_sigle']] = array(1 => $DB_ROW['user_profil_nom_long_singulier'], 2 => $DB_ROW['user_profil_nom_long_pluriel']); } // Boucle pour l'affichage
} elseif (!isset($tab['avant']) && substr($fichier, -9) != '.htaccess') { // Fichier à ajouter (si le .htaccess n'y est pas, c'est sans doute volontaire, ne pas l'y remettre) if (!copy($dossier_dezip . $fichier, $dossier_install . $fichier)) { ajouter_log_PHP('Mise à jour des fichiers', 'Application accessible.', __FILE__, __LINE__, FALSE); LockAcces::debloquer_application($_SESSION['USER_PROFIL_TYPE'], '0'); exit(']¤[' . 'pb' . ']¤[' . "Erreur lors de l'écriture du fichier " . $fichier . " !"); } $tbody .= '<tr><td class="v">Fichier ajouté</td><td>' . $fichier . '</td></tr>'; } elseif (!isset($tab['apres'])) { // Fichier à supprimer FileSystem::supprimer_fichier($dossier_install . $fichier, TRUE); $tbody .= '<tr><td class="r">Fichier supprimé</td><td>' . $fichier . '</td></tr>'; } } // Débloquer l'application ajouter_log_PHP('Mise à jour des fichiers', 'Application accessible.', __FILE__, __LINE__, FALSE); LockAcces::debloquer_application($_SESSION['USER_PROFIL_TYPE'], '0'); // Enregistrement du rapport $_SESSION['tmp']['rapport_filename'] = 'rapport_maj_' . $_SESSION['BASE'] . '_' . fabriquer_fin_nom_fichier__date_et_alea() . '.html'; FileSystem::fabriquer_fichier_rapport($_SESSION['tmp']['rapport_filename'], $thead, $tbody); exit(']¤[' . 'ok' . ']¤[' . 'Rapport des modifications apportées et nettoyage…'); } // // 5. Nettoyage... // if ($action == 'maj_etape5') { FileSystem::supprimer_dossier($dossier_dezip); $fichier_chemin = URL_DIR_EXPORT . $_SESSION['tmp']['rapport_filename']; unset($_SESSION['tmp']); exit(']¤[' . 'ok' . ']¤[' . VERSION_PROG . '_#_' . $fichier_chemin); }
Lang::setlocale( LC_MESSAGES, Lang::get_locale_used() ); Lang::bindtextdomain( LOCALE_DOMAINE, LOCALE_DIR ); Lang::bind_textdomain_codeset( LOCALE_DOMAINE, LOCALE_CHARSET ); Lang::textdomain( LOCALE_DOMAINE ); } // Blocage éventuel par le webmestre ou un administrateur ou l'automate (on ne peut pas le tester avant car il faut avoir récupéré les données de session) LockAcces::stopper_si_blocage( $_SESSION['BASE'] , FALSE /*demande_connexion_profil*/ ); // Autres fonctions à charger require(CHEMIN_DOSSIER_INCLUDE.'fonction_divers.php'); // Logs d'infos au cas où un trop grand nombre de variables seraient postées (par défaut max_input_vars est configuré dans PHP à 1000, et en cas de dépassement les logs indiquent juste "in Unknown on line 0"). if(count($_POST)>999) { ajouter_log_PHP( 'Trop de variables postées' /*log_objet*/ , 'Page '.$PAGE /*log_contenu*/ , __FILE__ /*log_fichier*/ , __LINE__ /*log_ligne*/ , FALSE /*only_sesamath*/ ); } // Jeton CSRF Session::verifier_jeton_anti_CSRF($PAGE); // MAJ fichier de config hébergement si besoin if(is_file(CHEMIN_FICHIER_CONFIG_INSTALL)) { require(CHEMIN_DOSSIER_INCLUDE.'maj_fichier_constantes_hebergement.php'); } // Interface de connexion à la base, chargement et config (test sur CHEMIN_FICHIER_CONFIG_INSTALL car à éviter si procédure d'installation non terminée). if(is_file(CHEMIN_FICHIER_CONFIG_INSTALL)) { // Choix des paramètres de connexion à la base de données adaptée...
$tab_users_fichier['courriel'], $tab_users_fichier['sconet_id'], $tab_users_fichier['sconet_num'], $tab_users_fichier['reference'], $tab_users_fichier['profil_sigle'], $tab_users_fichier['adresse'], $tab_users_fichier['enfant'] ); break; } // Outil de résolution de bug ; le test1 provoque parfois l'erreur "Array sizes are inconsistent". // Edit au 11/05/2012 : a priori c'est corrigé, mais je laisse quand même le test au cas où, ça ne coûte rien... if(!$test1) { ajouter_log_PHP( 'Import fichier '.$import_origine.' '.$import_profil /*log_objet*/ , serialize($tab_users_fichier) /*log_contenu*/ , __FILE__ /*log_fichier*/ , __LINE__ /*log_ligne*/ , TRUE /*only_sesamath*/ ); } // On enregistre FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT.'import_'.$import_origine.'_'.$import_profil.'_'.$_SESSION['BASE'].'_'.session_id().'_users.txt' ,serialize($tab_users_fichier)); FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT.'import_'.$import_origine.'_'.$import_profil.'_'.$_SESSION['BASE'].'_'.session_id().'_classes.txt' ,serialize($tab_classes_fichier)); FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT.'import_'.$import_origine.'_'.$import_profil.'_'.$_SESSION['BASE'].'_'.session_id().'_groupes.txt' ,serialize($tab_groupes_fichier)); FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT.'import_'.$import_origine.'_'.$import_profil.'_'.$_SESSION['BASE'].'_'.session_id().'_liens_id_base.txt',serialize($tab_liens_id_base)); // On affiche le bilan des utilisateurs trouvés if(count($tab_users_fichier['profil_sigle'])) { // Nom des profils $tab_profils_libelles = array(); $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_profils_parametres( 'user_profil_nom_long_singulier,user_profil_nom_long_pluriel' /*listing_champs*/ , FALSE /*only_actif*/ ); foreach($DB_TAB as $DB_ROW)