Пример #1
0
 private function createArchives()
 {
     $path = rex_path::base('releases/' . $this->version . '/');
     if (file_exists($path)) {
         rex_dir::deleteFiles($path);
     }
     rex_dir::create($path);
     $complete = new ZipArchive();
     $update = new ZipArchive();
     $complete->open($path . 'redaxo_' . $this->version . '.zip', ZipArchive::CREATE);
     $update->open($path . 'redaxo_update_' . $this->version . '.zip', ZipArchive::CREATE);
     $files = ['assets/.redaxo', 'media/.redaxo', 'redaxo/cache/.htaccess', 'redaxo/cache/.redaxo', 'redaxo/data/.htaccess', 'redaxo/data/.redaxo', 'redaxo/src/.htaccess', 'redaxo/index.php', 'index.php', 'LICENSE.md', 'README.md'];
     foreach ($files as $file) {
         $complete->addFile(rex_path::base($file), $file);
     }
     $this->addDir($complete, rex_path::core(), 'redaxo/src/core');
     $this->addDir($update, rex_path::core(), 'core');
     foreach (self::$addons as $addon) {
         $this->addDir($complete, rex_path::addon($addon), 'redaxo/src/addons/' . $addon);
         $this->addDir($update, rex_path::addon($addon), 'addons/' . $addon);
     }
     $this->addDir($complete, rex_path::core('assets'), 'assets');
     $addon = rex_addon::get('be_style');
     $this->addDir($complete, $addon->getPath('assets'), 'assets/addons/be_style');
     $this->addDir($complete, $addon->getPlugin('redaxo')->getPath('assets'), 'assets/addons/be_style/plugins/redaxo');
     $files = (require $addon->getPath('vendor_files.php'));
     foreach ($files as $source => $destination) {
         $complete->addFile($addon->getPath($source), 'assets/addons/be_style/' . $destination);
     }
     $complete->close();
     $update->close();
 }
Пример #2
0
 /**
  * Importiert das Tar-Archiv $filename in den Ordner /files.
  *
  * @param string $filename Pfad + Dateinamen zum Tar-Archiv
  *
  * @return array Gibt ein Assoc. Array zurück.
  *               'state' => boolean (Status ob fehler aufgetreten sind)
  *               'message' => Evtl. Status/Fehlermeldung
  */
 public static function importFiles($filename)
 {
     $return = [];
     $return['state'] = false;
     if ($filename == '' || substr($filename, -7, 7) != '.tar.gz') {
         $return['message'] = rex_i18n::msg('backup_no_import_file_chosen') . '<br />';
         return $return;
     }
     // Ordner /files komplett leeren
     rex_dir::deleteFiles(rex_path::media());
     $tar = new rex_backup_tar();
     // ----- EXTENSION POINT
     $tar = rex_extension::registerPoint(new rex_extension_point('BACKUP_BEFORE_FILE_IMPORT', $tar));
     // require import skript to do some userside-magic
     self::importScript(str_replace('.tar.gz', '.php', $filename), self::IMPORT_ARCHIVE, self::IMPORT_EVENT_PRE);
     $tar->openTAR($filename);
     if (!$tar->extractTar()) {
         $msg = rex_i18n::msg('backup_problem_when_extracting') . '<br />';
         if (count($tar->getMessages()) > 0) {
             $msg .= rex_i18n::msg('backup_create_dirs_manually') . '<br />';
             foreach ($tar->getMessages() as $_message) {
                 $msg .= rex_path::absolute($_message) . '<br />';
             }
         }
     } else {
         $msg = rex_i18n::msg('backup_file_imported') . '<br />';
     }
     // ----- EXTENSION POINT
     $tar = rex_extension::registerPoint(new rex_extension_point('BACKUP_AFTER_FILE_IMPORT', $tar));
     // require import skript to do some userside-magic
     self::importScript(str_replace('.tar.gz', '.php', $filename), self::IMPORT_ARCHIVE, self::IMPORT_EVENT_POST);
     $return['state'] = true;
     $return['message'] = $msg;
     return $return;
 }
Пример #3
0
 public function testDeleteFilesRecursive()
 {
     $dir = $this->getPath('deleteFilesRecursive');
     $file1 = $this->getPath('deleteFilesRecursive/file.txt');
     $file2 = $this->getPath('deleteFilesRecursive/subdir/file.txt');
     rex_file::put($file1, '');
     rex_file::put($file2, '');
     $this->assertTrue(is_file($file1), 'file exists after put()');
     $this->assertTrue(is_file($file2), 'file exists after put()');
     $this->assertTrue(rex_dir::deleteFiles($dir), 'deleteFiles() returns true on success');
     $this->assertFalse(is_file($file1), 'file in main dir does not exist after deleteFiles()');
     $this->assertFalse(is_file($file2), 'file in subdir does not exist after recursive deleteFiles()');
     $this->assertTrue(is_dir($dir . '/subdir'), 'subdir still exists after deleteFiles()');
 }