/** * Unzip specified archive * * @param string $backupFilePath * @throws \RuntimeException * @return $this */ private function unzipArchive($backupFilePath) { $phar = new \PharData($backupFilePath); $tarFile = str_replace('.tgz', '.tar', $backupFilePath); if (@file_exists($tarFile)) { @unlink($tarFile); } $phar->decompress(); $tar = new \PharData($tarFile); if (strpos($backupFilePath, BackupInfo::BACKUP_MEDIA) > 0) { $this->deleteDirectory($this->restoreTargetDir . '/pub/media'); } elseif (strpos($backupFilePath, BackupInfo::BACKUP_CODE) > 0) { $blackListFolders = $this->backupInfo->getBlacklist(); $exclusions = []; foreach ($blackListFolders as $blackListFolder) { $exclusions[] = $this->restoreTargetDir . '/' . $blackListFolder; } try { $this->deleteDirectory($this->restoreTargetDir, $exclusions); } catch (\Exception $e) { $this->status->setUpdateError(); $this->status->add('Error during rollback ' . $e->getMessage(), \Psr\Log\LogLevel::ERROR); } } else { $this->status->setUpdateError(); $this->status->add('Invalid backup type', \Psr\Log\LogLevel::INFO); } $tar->extractTo($this->restoreTargetDir, null, true); @unlink($tarFile); //TODO Temporary solution, can be removed when MAGETWO-38589 is fixed. if (strpos($backupFilePath, BackupInfo::BACKUP_MEDIA) > 0) { $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($this->restoreTargetDir . '/pub/media'), \RecursiveIteratorIterator::SELF_FIRST); foreach ($iterator as $item) { @chmod($item, 0777); } } elseif (strpos($backupFilePath, BackupInfo::BACKUP_CODE) > 0) { $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($this->restoreTargetDir), \RecursiveIteratorIterator::SELF_FIRST); foreach ($iterator as $item) { @chmod($item, 0755); } $writeAccessFolders = ['/pub/media', '/pub/static', '/var']; foreach ($writeAccessFolders as $folder) { if (file_exists($this->restoreTargetDir . $folder)) { $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($this->restoreTargetDir . $folder), \RecursiveIteratorIterator::SELF_FIRST); foreach ($iterator as $item) { @chmod($item, 0777); } } } } //TODO Till here }
protected function tearDown() { $this->status->setUpdateInProgress(false); $this->status->setUpdateError(false); if (file_exists($this->backupToRollback)) { unlink($this->backupToRollback); } if (file_exists($this->backupToRemoveA)) { unlink($this->backupToRemoveA); } if (file_exists($this->backupToRemoveB)) { unlink($this->backupToRemoveB); } array_map('unlink', glob($this->backupPath . '/*.zip')); if (is_dir($this->backupPath)) { rmdir($this->backupPath); rmdir(TESTS_TEMP_DIR . '/var'); } if (file_exists(MAGENTO_BP . '/var/.update_queue.json')) { file_put_contents(MAGENTO_BP . '/var/.update_queue.json', ''); } }