$_SESSION['tmp'] = array(); FileSystem::analyser_dossier( $dossier_install , strlen($dossier_install) , 'avant' , FALSE /*with_first_dir*/ ); FileSystem::analyser_dossier( $dossier_dezip , strlen($dossier_dezip) , 'apres' , FALSE /*with_first_dir*/ ); exit(']¤['.'ok'.']¤['."Analyse et répercussion des modifications…"); } // // 4. Analyse et répercussion des modifications... (tout en bloquant l'appli) // if($action=='maj_etape4') { $thead = '<tr><td colspan="2">Mise à jour automatique - '.date('d/m/Y H:i:s').'</td></tr>'; $tbody = ''; // Bloquer l'application ajouter_log_PHP( 'Mise à jour des fichiers' /*log_objet*/ , 'Application fermée.' /*log_contenu*/ , __FILE__ /*log_fichier*/ , __LINE__ /*log_ligne*/ , FALSE /*only_sesamath*/ ); LockAcces::bloquer_application($_SESSION['USER_PROFIL_TYPE'],'0','Mise à jour des fichiers en cours.'); // Dossiers : ordre croissant pour commencer par ceux les moins imbriqués : obligatoire pour l'ajout, et pour la suppression on teste si pas déjà supprimé. ksort($_SESSION['tmp']['dossier']); foreach($_SESSION['tmp']['dossier'] as $dossier => $tab) { if( (isset($tab['avant'])) && (isset($tab['apres'])) ) { // Dossier inchangé (cas le plus fréquent donc testé en premier). } elseif(!isset($tab['avant'])) { // Dossier à ajouter $tbody .= '<tr><td class="v">Dossier ajouté</td><td>'.$dossier.'</td></tr>'; if( !FileSystem::creer_dossier($dossier_install.$dossier) ) { ajouter_log_PHP( 'Mise à jour des fichiers' /*log_objet*/ , 'Application accessible.' /*log_contenu*/ , __FILE__ /*log_fichier*/ , __LINE__ /*log_ligne*/ , FALSE /*only_sesamath*/ );
* de la “GNU Affero General Public License” telle que publiée par la Free Software Foundation : * soit la version 3 de cette licence, soit (à votre gré) toute version ultérieure. * * SACoche est distribué dans l’espoir qu’il vous sera utile, mais SANS AUCUNE GARANTIE : * sans même la garantie implicite de COMMERCIALISABILITÉ ni d’ADÉQUATION À UN OBJECTIF PARTICULIER. * Consultez la Licence Publique Générale GNU Affero pour plus de détails. * * 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 !'); } 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']) : ''; $motif = isset($_POST['f_motif']) ? Clean::texte($_POST['f_motif']) : ''; // //////////////////////////////////////////////////////////////////////////////////////////////////// // Bloquer ou débloquer l'application // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'debloquer') { LockAcces::debloquer_application($_SESSION['USER_PROFIL_TYPE'], $_SESSION['BASE']); exit('<label class="valide">Application accessible.</label>'); } elseif ($action == 'bloquer') { LockAcces::bloquer_application($_SESSION['USER_PROFIL_TYPE'], $_SESSION['BASE'], $motif); exit('<label class="erreur">Application fermée : ' . html($motif) . '</label>'); } else { echo 'Erreur avec les données transmises !'; }
} // //////////////////////////////////////////////////////////////////////////////////////////////////// // Etape d'export d'une base // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'exporter' && $num && $max && $num < $max) { // Récupérer la ligne de données $fichier_texte = file_get_contents(CHEMIN_DOSSIER_EXPORT . $fichier_csv_nom); $tab_ligne = explode("\r\n", $fichier_texte); // Récupérer une série d'infos, sachant que seuls $export_id et $fichier_nom sont utiles list($export_id, $import_id, $geo_id, $localisation, $denomination, $uai, $contact_nom, $contact_prenom, $contact_courriel, $date, $fichier_nom) = explode($separateur, $tab_ligne[$num]); // Charger les paramètres de connexion à cette base afin de pouvoir y effectuer des requêtes charger_parametres_mysql_supplementaires($export_id); // Créer ou vider le dossier temporaire des sql FileSystem::creer_ou_vider_dossier($dossier_temp_sql); // Bloquer l'application LockAcces::bloquer_application('automate', $export_id, 'Sauvegarde de la base en cours.'); // Remplir le dossier temporaire avec les fichiers de svg des tables sauvegarder_tables_base_etablissement($dossier_temp_sql, 0); // Débloquer l'application LockAcces::debloquer_application('automate', $export_id); // Zipper les fichiers de svg FileSystem::zipper_fichiers($dossier_temp_sql, $dossier_temp_zip, $fichier_nom); // Appel suivant exit(']¤[' . 'ok'); } elseif ($action == 'exporter' && $num && $max && $num == $max) { // Supprimer le dossier temporaire des sql FileSystem::supprimer_dossier($dossier_temp_sql); // Zipper les zip de svg FileSystem::zipper_fichiers($dossier_temp_zip, CHEMIN_DOSSIER_DUMP, $fichier_zip_nom); // Supprimer le dossier temporaire des zip FileSystem::supprimer_dossier($dossier_temp_zip);
/** * Mettre à jour automatiquement la base si besoin ; à effectuer avant toute récupération des données sinon ça peut poser pb... * * @param int $BASE * @return void */ function maj_base_structure_si_besoin($BASE) { $version_base_structure = DB_STRUCTURE_PUBLIC::DB_version_base(); if($version_base_structure != VERSION_BASE_STRUCTURE) { // On ne met pas à jour la base tant que le webmestre bloque l'accès à l'application, car sinon cela pourrait se produire avant le transfert de tous les fichiers. if(LockAcces::tester_blocage('webmestre',0)===NULL) { // Bloquer l'application LockAcces::bloquer_application('automate',$BASE,'Mise à jour de la base en cours.'); // Lancer une mise à jour de la base DB_STRUCTURE_MAJ_BASE::DB_maj_base($version_base_structure); // Log de l'action SACocheLog::ajouter('Mise à jour automatique de la base '.SACOCHE_STRUCTURE_BD_NAME.'.'); // Débloquer l'application LockAcces::debloquer_application('automate',$BASE); } } }
{ $tab_base_id = array_filter( Clean::map_entier( explode(',',$listing_base_id) ) , 'positif' ); foreach($tab_base_id as $base_id) { Webmestre::supprimer_multi_structure($base_id); } exit('<ok>'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Bloquer les accès à une structure // //////////////////////////////////////////////////////////////////////////////////////////////////// if( ($action=='bloquer') && $base_id ) { LockAcces::bloquer_application($_SESSION['USER_PROFIL_TYPE'],$base_id,'Action ciblée ; contacter le webmestre pour obtenir des précisions.'); exit('<img class="debloquer" src="./_img/etat/acces_non.png" title="Débloquer cet établissement." />'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Débloquer les accès à une structure // //////////////////////////////////////////////////////////////////////////////////////////////////// if( ($action=='debloquer') && $base_id ) { LockAcces::debloquer_application($_SESSION['USER_PROFIL_TYPE'],$base_id); exit('<img class="bloquer" src="./_img/etat/acces_oui.png" title="Bloquer cet établissement." />'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // On ne devrait pas en arriver là...
echo'<li><label class="valide">Demandes d\'évaluations résiduelles supprimées.</label></li>'.NL; echo'<li><label class="valide">Tables optimisées par MySQL (équivalent d\'un défragmentage).</label></li>'.NL; $top_arrivee = microtime(TRUE); $duree = number_format($top_arrivee - $top_depart,2,',',''); echo'<li><label class="valide">Initialisation annuelle de la base réalisée en '.$duree.'s.</label></li>'.NL; exit(); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Suppression des notes et des validations // //////////////////////////////////////////////////////////////////////////////////////////////////// if($action=='supprimer') { // Bloquer l'application LockAcces::bloquer_application('automate',$_SESSION['BASE'],'Suppression des notes et des validations en cours.'); // Supprimer toutes les saisies aux évaluations DB_STRUCTURE_ADMINISTRATEUR::DB_supprimer_saisies(); // Supprimer toutes les validations du socle DB_STRUCTURE_ADMINISTRATEUR::DB_supprimer_validations(); // Débloquer l'application LockAcces::debloquer_application('automate',$_SESSION['BASE']); // Notifications (rendues visibles ultérieurement) $notification_contenu = date('d-m-Y H:i:s').' '.$_SESSION['USER_PRENOM'].' '.$_SESSION['USER_NOM'].' a supprimé toutes les notes et les validations enregistrées.'."\r\n"; DB_STRUCTURE_NOTIFICATION::enregistrer_action_admin( $notification_contenu , $_SESSION['USER_ID'] ); // Afficher le retour echo'<li><label class="valide">Notes saisies aux évaluations supprimées.</label></li>'.NL; echo'<li><label class="valide">Validations des items et des compétences du socle supprimées.</label></li>'.NL; $top_arrivee = microtime(TRUE); $duree = number_format($top_arrivee - $top_depart,2,',',''); echo'<li><label class="valide">Suppression des notes et des validations réalisée en '.$duree.'s.</label></li>'.NL;
} // Afficher le retour echo'<li><label class="valide">Contenu du fichier récupéré avec succès.</label></li>'; exit(); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Restaurer la base // //////////////////////////////////////////////////////////////////////////////////////////////////// if( ($action=='restaurer') && $etape ) { if($etape==1) { // Bloquer l'application LockAcces::bloquer_application('automate',$_SESSION['BASE'],'Restauration de la base en cours.'); // Notifications (rendues visibles ultérieurement) $notification_contenu = date('d-m-Y H:i:s').' '.$_SESSION['USER_PRENOM'].' '.$_SESSION['USER_NOM'].' a lancé une restauration de la base de données.'."\r\n"; DB_STRUCTURE_NOTIFICATION::enregistrer_action_admin( $notification_contenu , $_SESSION['USER_ID'] ); } // Restaurer des fichiers de svg et mettre la base à jour si besoin. $texte_etape = restaurer_tables_base_etablissement($dossier_temp,$etape); if(strpos($texte_etape,'terminée')) { $class = "valide"; // Débloquer l'application LockAcces::debloquer_application('automate',$_SESSION['BASE']); // Supprimer le dossier temporaire FileSystem::supprimer_dossier($dossier_temp); } else