Exemplo n.º 1
0
 // 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*/ );
       LockAcces::debloquer_application($_SESSION['USER_PROFIL_TYPE'],'0');
       exit(']¤['.'pb'.']¤['."Dossier ".$dossier." non créé ou inaccessible en écriture !");
     }
   }
   elseif(!isset($tab['apres'])) // (forcément)
   {
     // Dossier à supprimer
     $tbody .= '<tr><td class="r">Dossier supprimé</td><td>'.$dossier.'</td></tr>';
     if(is_dir($dossier_install.$dossier))
     {
       FileSystem::supprimer_dossier($dossier_install.$dossier);
     }
   }
Exemplo n.º 2
0
 // A ce niveau, le fichier d'informations sur l'hébergement doit exister.
 if(!is_file(CHEMIN_FICHIER_CONFIG_INSTALL))
 {
   exit('Erreur : problème avec le fichier : '.FileSystem::fin_chemin(CHEMIN_FICHIER_CONFIG_INSTALL).' !');
 }
 // A ce niveau, le fichier de connexion à la base de données doit exister.
 if(!is_file(CHEMIN_FICHIER_CONFIG_MYSQL))
 {
   exit('Erreur : problème avec le fichier : '.FileSystem::fin_chemin(CHEMIN_FICHIER_CONFIG_MYSQL).' !');
 }
 // Créer les dossiers de fichiers temporaires par établissement
 if(HEBERGEUR_INSTALLATION=='mono-structure')
 {
   foreach(FileSystem::$tab_dossier_tmp_structure as $dossier)
   {
     FileSystem::creer_dossier($dossier.'0' , $affichage );
     FileSystem::ecrire_fichier_index($dossier.'0');
   }
 }
 // On cherche d'éventuelles tables existantes de SACoche.
 $DB_TAB = (HEBERGEUR_INSTALLATION=='mono-structure') ? DB_STRUCTURE_COMMUN::DB_recuperer_tables_informations() : DB_WEBMESTRE_PUBLIC::DB_recuperer_tables_informations() ;
 $nb_tables_presentes = !empty($DB_TAB) ? count($DB_TAB) : 0 ;
 if($nb_tables_presentes)
 {
   $s = ($nb_tables_presentes>1) ? 's' : '' ;
   $base_nom = (HEBERGEUR_INSTALLATION=='mono-structure') ? SACOCHE_STRUCTURE_BD_NAME : SACOCHE_WEBMESTRE_BD_NAME ;
   $affichage .= '<p><label class="alerte">'.$nb_tables_presentes.' table'.$s.' de SACoche étant déjà présente'.$s.' dans la base &laquo;&nbsp;<b>'.$base_nom.'</b>&nbsp;&raquo;, les tables n\'ont pas été installées.</label></p>'.NL;
   $affichage .= '<p class="astuce">Si besoin, supprimez les tables manuellement, puis <a href="#" class="step6">relancer l\'étape 6.</a><label id="ajax_msg">&nbsp;</label></p>'.NL;
   $affichage .= '<hr />'.NL;
   $affichage .= '<h2>Installation logicielle terminée</h2>'.NL;
   $affichage .= '<p>Pour se connecter avec le compte webmestre : <a href="'.URL_DIR_SACOCHE.'?webmestre">'.URL_DIR_SACOCHE.'?webmestre</a></p>'.NL;
        exit(']¤[' . '<tr>' . $retour_cellules_non . '<td><label class="erreur">Erreur : ' . html($fichier_nom) . ' contient au moins un fichier dont la taille dépasse la limitation <em>max_allowed_packet</em> de MySQL !</label></td>' . '</tr>');
    }
    // Vérifier le contenu : version de la base compatible avec la version logicielle
    if (version_base_fichier_svg($dossier_temp_sql) > VERSION_BASE_STRUCTURE) {
        FileSystem::supprimer_dossier($dossier_temp_sql);
        // Pas seulement vider, au cas où il y aurait des sous-dossiers créés par l'archive.
        exit(']¤[' . '<tr>' . $retour_cellules_non . '<td><label class="erreur">Erreur : ' . html($fichier_nom) . ' contient une sauvegarde plus récente que celle supportée par cette installation ! Il faut mettre à jour SACoche.</label></td>' . '</tr>');
    }
    // Insérer l'enregistrement dans la base du webmestre
    // Créer le fichier de connexion de la base de données de la structure
    // Créer la base de données de la structure
    // Créer un utilisateur pour la base de données de la structure et lui attribuer ses droits
    $base_id = Webmestre::ajouter_structure($import_id, $geo_id, $uai, $localisation, $denomination, $contact_nom, $contact_prenom, $contact_courriel, $date);
    // Créer les dossiers de fichiers temporaires par établissement
    foreach (FileSystem::$tab_dossier_tmp_structure as $dossier) {
        FileSystem::creer_dossier($dossier . $base_id);
        FileSystem::ecrire_fichier_index($dossier . $base_id);
    }
    // Charger les paramètres de connexion à cette base afin de pouvoir y effectuer des requêtes
    charger_parametres_mysql_supplementaires($base_id);
    // Restaurer des fichiers de svg et mettre la base à jour si besoin.
    $texte_etape = restaurer_tables_base_etablissement($dossier_temp_sql, 0);
    // Supprimer le dossier temporaire
    FileSystem::supprimer_dossier($dossier_temp_sql);
    // Retour du succès, appel suivant
    $retour_cellules_oui = '<td class="nu"><input type="checkbox" name="f_ids" value="' . $base_id . '" /></td><td class="label">' . $base_id . '</td><td class="label">' . html($localisation . ' | ' . $denomination . ' [' . $uai . ']') . '</td><td class="label">' . html($contact_nom . ' ' . $contact_prenom . ' (' . $contact_courriel . ')') . '</td>';
    exit(']¤[' . '<tr>' . $retour_cellules_oui . '<td class="label"><label class="valide">' . $texte_etape . ' avec succès.</label></td>' . '</tr>');
} elseif ($action == 'importer' && $num && $max && $num == $max) {
    // Supprimer les fichiers zip des bases
    foreach ($_SESSION['tab_info'] as $key => $tab_infos) {
        FileSystem::supprimer_fichier(CHEMIN_DOSSIER_DUMP . $tab_infos['fichier_nom'], TRUE);
Exemplo n.º 4
0
 /**
  * Nettoyer les fichiers temporaires
  * Fonction appeler lors d'une nouvelle connexion d'un utilisateur d'un établissement (pas mis en page d'accueil sinon c'est appelé trop souvent)
  * 
  * @param int       $BASE
  * @return void
  */
 public static function nettoyer_fichiers_temporaires($BASE)
 {
   // On verifie que certains sous-dossiers existent :
   $tab_sous_dossier = array(
     CHEMIN_DOSSIER_DEVOIR ,       // n'a été ajouté qu'en mars 2012,
     CHEMIN_DOSSIER_DEVOIR.$BASE.DS ,
     CHEMIN_DOSSIER_OFFICIEL ,     // n'a été ajouté qu'en mai 2012,
     CHEMIN_DOSSIER_OFFICIEL.$BASE.DS ,
     CHEMIN_DOSSIER_PARTENARIAT ,  // n'a été ajouté qu'en juin 2013,
   );
   foreach($tab_sous_dossier as $sous_dossier)
   {
     if(!is_dir($sous_dossier))
     {
       FileSystem::creer_dossier($sous_dossier);
       FileSystem::ecrire_fichier($sous_dossier.'index.htm','Circulez, il n\'y a rien à voir par ici !');
     }
   }
   $nb_mois = (defined('FICHIER_DUREE_CONSERVATION')) ? FICHIER_DUREE_CONSERVATION : 12 ; // Une fois tous les devoirs ont été supprimés sans raison claire : nettoyage simultané avec une mise à jour ?
   FileSystem::effacer_fichiers_temporaires(CHEMIN_DOSSIER_LOGINPASS      ,     10     ); // Nettoyer ce dossier des fichiers antérieurs à 10 minutes
   FileSystem::effacer_fichiers_temporaires(CHEMIN_DOSSIER_EXPORT         ,     60,TRUE); // Nettoyer ce dossier des fichiers antérieurs à  1 heure + sous-dossiers temporaires d'un zip qui ne serait pas allé au bout (pb de mémoire...)
   FileSystem::effacer_fichiers_temporaires(CHEMIN_DOSSIER_DUMP           ,     60,TRUE); // Nettoyer ce dossier des fichiers antérieurs à  1 heure + sous-dossiers temporaires d'un zip qui ne serait pas allé au bout (pb de mémoire...)
   FileSystem::effacer_fichiers_temporaires(CHEMIN_DOSSIER_IMPORT         ,  10080     ); // Nettoyer ce dossier des fichiers antérieurs à  1 semaine
   FileSystem::effacer_fichiers_temporaires(CHEMIN_DOSSIER_TMP            , 219000     ); // Nettoyer ce dossier des fichiers antérieurs à  6 mois
   FileSystem::effacer_fichiers_temporaires(CHEMIN_DOSSIER_RSS.$BASE      ,  43800     ); // Nettoyer ce dossier des fichiers antérieurs à  1 mois
   FileSystem::effacer_fichiers_temporaires(CHEMIN_DOSSIER_OFFICIEL.$BASE , 438000     ); // Nettoyer ce dossier des fichiers antérieurs à 10 mois
   FileSystem::effacer_fichiers_temporaires(CHEMIN_DOSSIER_BADGE.$BASE    , 481800     ); // Nettoyer ce dossier des fichiers antérieurs à 11 mois
   FileSystem::effacer_fichiers_temporaires(CHEMIN_DOSSIER_COOKIE.$BASE   , 525600     ); // Nettoyer ce dossier des fichiers antérieurs à  1 an
   FileSystem::effacer_fichiers_temporaires(CHEMIN_DOSSIER_DEVOIR.$BASE   ,  43800*$nb_mois); // Nettoyer ce dossier des fichiers antérieurs à la date fixée par le webmestre (1 an par défaut)
 }