// Enregistrement du rapport
  $fichier_nom = 'rapport_chmod_'.$_SESSION['BASE'].'_'.fabriquer_fin_nom_fichier__date_et_alea().'.html';
  FileSystem::fabriquer_fichier_rapport( $fichier_nom , $thead , $tbody );
  exit(']¤['.URL_DIR_EXPORT.$fichier_nom);
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Vérification des droits en écriture
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if($action=='verif_droits')
{
  $_SESSION['tmp'] = array();
  // Récupérer l'arborescence
  $dossier_install = '.';
  FileSystem::analyser_dossier( $dossier_install , strlen($dossier_install) , 'avant' , TRUE /*with_first_dir*/ );
  // 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;
Exemplo n.º 2
0
  $code_erreur = FileSystem::unzip( $fichier_import , CHEMIN_DOSSIER_IMPORT , TRUE /*use_ZipArchive*/ );
  if($code_erreur)
  {
    exit(']¤['.'pb'.']¤['.'Fichiers impossibles à extraire ('.FileSystem::$tab_zip_error[$code_erreur].') !');
  }
  exit(']¤['.'ok'.']¤['."Analyse des fichiers et recensement des dossiers&hellip;");
}

//
// 3. Analyse des fichiers et recensement des dossiers... (après initialisation de la session temporaire)
//
if($action=='verif_file_appli_etape3')
{
  $_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*/ , FALSE );
  exit(']¤['.'ok'.']¤['."Comparaison des données&hellip;");
}

//
// 4. Comparaison des données...
//
if($action=='verif_file_appli_etape4')
{
  $thead = '<tr><td colspan="2">Vérification des fichiers de l\'application en place - '.date('d/m/Y H:i:s').'</td></tr>';
  $tbody_ok = '';
  $tbody_pb = '';
  // 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)
  {
Exemplo n.º 3
0
 /**
  * Recense récursivement les dossiers présents et les md5 des fichiers (utilisé pour la maj automatique par le webmestre).
  * 
  * @param string   $dossier
  * @param int      $longueur_prefixe   longueur de $dossier lors du premier appel
  * @param string   $indice             "avant" ou "apres"
  * @param string   $with_first_dir     retourner ou non le dossier du premier appel
  * @param bool     $calc_md5           TRUE par défaut, FALSE si le fichier est son MD5
  * @return void
  */
 public static function analyser_dossier($dossier,$longueur_prefixe,$indice,$with_first_dir=FALSE,$calc_md5=TRUE)
 {
   $tab_contenu = FileSystem::lister_contenu_dossier_sources_publiques($dossier);
   $ds = (substr($dossier,-1)==DS) ? '' : DS ;
   foreach($tab_contenu as $contenu)
   {
     $chemin_contenu = $dossier.$ds.$contenu;
     if(is_dir($chemin_contenu))
     {
       FileSystem::analyser_dossier($chemin_contenu,$longueur_prefixe,$indice,$with_first_dir,$calc_md5);
     }
     else
     {
       $_SESSION['tmp']['fichier'][substr($chemin_contenu,$longueur_prefixe)][$indice] = ($calc_md5) ? FileSystem::fabriquer_md5_file($chemin_contenu) : file_get_contents($chemin_contenu) ;
     }
   }
   $chemin_dossier = (string)substr($dossier,$longueur_prefixe);
   if( $with_first_dir || $chemin_dossier!=='' )
   {
     $_SESSION['tmp']['dossier'][$chemin_dossier][$indice] = TRUE;
   }
 }
        FileSystem::supprimer_dossier($dossier_dezip);
    }
    // Dezipper dans le dossier temporaire
    $code_erreur = FileSystem::unzip($fichier_import, CHEMIN_DOSSIER_IMPORT, TRUE);
    if ($code_erreur) {
        exit(']¤[' . 'pb' . ']¤[' . 'Fichiers impossibles à extraire (' . FileSystem::$tab_zip_error[$code_erreur] . ') !');
    }
    exit(']¤[' . 'ok' . ']¤[' . "Analyse des fichiers et recensement des dossiers&hellip;");
}
//
// 3. Analyse des fichiers et recensement des dossiers... (après initialisation de la session temporaire)
//
if ($action == 'verif_file_appli_etape3') {
    $_SESSION['tmp'] = array();
    FileSystem::analyser_dossier($dossier_install, strlen($dossier_install), 'avant', FALSE);
    FileSystem::analyser_dossier($dossier_dezip, strlen($dossier_dezip), 'apres', FALSE, FALSE);
    exit(']¤[' . 'ok' . ']¤[' . "Comparaison des données&hellip;");
}
//
// 4. Comparaison des données...
//
if ($action == 'verif_file_appli_etape4') {
    $thead = '<tr><td colspan="2">Vérification des fichiers de l\'application en place - ' . date('d/m/Y H:i:s') . '</td></tr>';
    $tbody_ok = '';
    $tbody_pb = '';
    // 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).
            $tbody_ok .= '<tr class="v"><td>Dossier présent</td><td>' . $dossier . '</td></tr>';
        $fichier = '.' . $fichier;
        $tbody .= @chmod($fichier, $mode_fichier) ? '<tr><td class="v">Droits appliqués au fichier</td><td>' . $fichier . '</td></tr>' : '<tr><td class="r">Permission insuffisante sur ce fichier pour en modifier les droits</td><td>' . $fichier . '</td></tr>';
    }
    // Enregistrement du rapport
    $fichier_nom = 'rapport_chmod_' . $_SESSION['BASE'] . '_' . fabriquer_fin_nom_fichier__date_et_alea() . '.html';
    FileSystem::fabriquer_fichier_rapport($fichier_nom, $thead, $tbody);
    exit(']¤[' . URL_DIR_EXPORT . $fichier_nom);
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Vérification des droits en écriture
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'verif_droits') {
    $_SESSION['tmp'] = array();
    // Récupérer l'arborescence
    $dossier_install = '.';
    FileSystem::analyser_dossier($dossier_install, strlen($dossier_install), 'avant', TRUE);
    // 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>';
    }