Esempio n. 1
0
 static function decompact($release)
 {
     set_time_limit(0);
     ini_set('memory_limit', '512M');
     include_once "config.php";
     $version = $release;
     $version = str_replace('/', '', $version);
     require URLLOCAL . 'classes_ext/Tar.php';
     $ficArchive = URLLOCAL . 'var/dist/' . PREFIXEARCHIVE . '.maj.' . $version . '.tgz';
     $tmpInflatePath = URLLOCAL . 'temp/installdist/';
     if (file_exists($tmpInflatePath)) {
         if (!XhamUpdater::rmdir_recurse($tmpInflatePath)) {
             echo "Impossible de supprimer le répertoire {$tmpInflatePath} . Abandon.";
             die;
         }
     }
     //on décompresse
     mkdir($tmpInflatePath);
     $archive = new Archive_Tar($ficArchive);
     $res = $archive->extract($tmpInflatePath);
     if (!$res) {
         echo "Probleme lors de la décompression";
         die;
     }
     $tabFics = array();
     XhamUpdater::listFiles($tmpInflatePath, $tabFics);
     $listeFicsKo = array();
     $listeDossiersKo = array();
     $listeDossiersKoDroits = array();
     foreach ($tabFics as $file) {
         if (!file_exists(dirname(URLLOCAL . $file))) {
             if (!mkdir(dirname(URLLOCAL . $file), 0777, true)) {
                 $listeDossiersKo[] = dirname(URLLOCAL . $file);
             }
         }
         if (!file_exists(URLLOCAL . $file) && !is_writable(dirname(URLLOCAL . $file))) {
             $listeDossiersKoDroits[] = dirname(URLLOCAL . $file);
         } else {
             if (file_exists(URLLOCAL . $file) && !is_writable(URLLOCAL . $file)) {
                 $listeFicsKo[] = URLLOCAL . $file;
             }
         }
     }
     if (count($listeFicsKo) > 0 || count($listeDossiersKoDroits) > 0 || count($listeDossiersKo) > 0) {
         foreach ($listeFicsKo as $file) {
             print "<br /><font color=\"red\">{$file} n'est pas autorisé en écriture pour le user " . $_ENV["APACHE_RUN_USER"] . "</font>";
         }
         foreach ($listeDossiersKoDroits as $dossier) {
             print "<br /><font color=\"red\">Le dossier {$dossier} doit etre autorisé en écriture pour le user " . $_ENV["APACHE_RUN_USER"] . "</font>";
         }
         foreach ($listeDossiersKo as $dossier) {
             print "<br /><font color=\"red\">Le dossier {$dossier} n'a pas pu être créé par le user " . $_ENV["APACHE_RUN_USER"] . "</font>";
         }
         print "<br />La mise à jour  ne s'est pas effectuée.";
         die;
     }
     foreach ($tabFics as $file) {
         print "<br />Installing " . $tmpInflatePath . $file . '  on ' . URLLOCAL . $file;
         ob_flush();
         flush();
         if (!copy($tmpInflatePath . $file, URLLOCAL . $file)) {
             //TODO:
             //erreur de copie -> reprendre la sauvegarde précédente
         }
     }
     //pas de pb ? suppression de la décompression
     XhamUpdater::rmdir_recurse($tmpInflatePath);
 }