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(); }
/** * 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; }
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()'); }