public function restoreBackup($restoreFile, $boolDB = false, $boolFiles = false) { $arrOutput = array(); if ($restoreFile) { $c2gFile = new File("backups/" . $restoreFile); if ($c2gFile->extension == 'c2g') { $c2gZipFile = new ZipReader("backups/" . $restoreFile); $descFile = $c2gZipFile->getFile("description.php"); if ($descFile) { unset($GLOBALS["package"]); eval($c2gZipFile->unzip()); $arrOutput[] = sprintf($GLOBALS['TL_LANG']['tl_content']['c2g_restorebackup'], $GLOBALS["package"]["Name"]); $dirName = TL_ROOT . '/' . $GLOBALS["package"]["RootDir"] . '/' . $GLOBALS["package"]["Name"]; if ($boolFiles) { $strRestoreFolder = new Folder($GLOBALS["package"]["RootDir"] . @'/' . $GLOBALS["package"]["Name"] . @'/'); if ($GLOBALS["package"]["RootDir"] != '.' && is_dir($dirName)) { $this->c2g_functions->rrmdir($dirName); $arrOutput[] = sprintf($GLOBALS['TL_LANG']['tl_content']['c2g_restorebackup_cleandir'], $GLOBALS["package"]["Name"]); } $directoryFile = $c2gZipFile->getFile("directories.dat"); if ($directoryFile) { $strDirectories = $c2gZipFile->unzip(); $arrDirectories = explode("\r\n", $strDirectories); if (is_array($arrDirectories)) { foreach ($arrDirectories as $dir) { $objDir = new Folder($dir); } } } $c2gZipFile->first(); $arrFileList = $c2gZipFile->getFileList(); foreach ($arrFileList as $file) { $c2gZipFile->getFile($file); $objFile = new File('vhosts/' . $file); $strData = $c2gZipFile->unzip(); if (basename($file) == 'localconfig.php') { $objFile->write($strData); $objFile->close(); $arrConfigReturn = @$this->c2g_functions->loadVHostConfig(TL_ROOT . '/vhosts/' . $GLOBALS["package"]["Name"], false); $objFile = new File('vhosts/' . $file); $strData = $this->c2g_functions->rewriteLocalconfig($strData, $GLOBALS['TL_CONFIG']['dbHost'], $GLOBALS['TL_CONFIG']['dbPort'], $arrConfigReturn['localconfig']['dbDatabase'], $GLOBALS['TL_CONFIG']['dbUser'], $GLOBALS['TL_CONFIG']['dbPass'], $arrConfigReturn['localconfig']['websitePath']); } $objFile->write($strData); $objFile->close(); // let the directorystructure create, but remove .empty file if (basename($file) == '.empty') { $objFile->delete(); } } $arrOutput[] = $GLOBALS['TL_LANG']['tl_content']['c2g_restorebackup_filesystemrestored']; } $arrConfigReturn = $this->c2g_functions->loadVHostConfig(TL_ROOT . '/vhosts/' . $GLOBALS["package"]["Name"]); if (IS_CONTAO3) { $objFile = new File('vhosts/' . $GLOBALS["package"]["Name"] . '/system/config/pathconfig.php', true); $objFile->write("<?php\n\n// Relative path to the installation\nreturn '/vhosts/" . $GLOBALS["package"]["Name"] . "';\n"); $objFile->close(); $arrOutput[] = $GLOBALS['TL_LANG']['tl_content']['c2g_createpathconfig']; } if ($boolDB) { $file = $c2gFile->filename . '.sql'; $c2gZipFile->getFile($file); $objFile = new File('vhosts/' . $file); $objFile->write($c2gZipFile->unzip()); $objFile->close(); $sqlDump = new File($GLOBALS["package"]["RootDir"] . '/' . $file); $this->c2g_functions->restoreDump($sqlDump->getContent()); $sqlDump->close(); $arrOutput[] = $GLOBALS['TL_LANG']['tl_content']['c2g_restorebackup_sqlrestored']; } $objDescFile = new File($GLOBALS["package"]["RootDir"] . '/description.php'); $objDescFile->delete(); $objDirFile = new File($GLOBALS["package"]["RootDir"] . '/directories.dat'); $objDirFile->delete(); $objSQLFile = new File($GLOBALS["package"]["RootDir"] . '/' . $c2gFile->filename . '.sql'); $objSQLFile->delete(); } } $arrOutput[] = sprintf('<a href="%s" title="%s">%s</a>', $this->pathMySelf, $GLOBALS['TL_LANG']['tl_content']['c2g_backupreturntooverview'], $GLOBALS['TL_LANG']['tl_content']['c2g_backupreturntooverview']); $pathBackups = $this->replaceInsertTags(sprintf('{{link_url::%s}}', $this->c2g_listvhosts)); $arrOutput[] = sprintf('<a href="%s" title="%s">%s</a>', $pathBackups, $GLOBALS['TL_LANG']['tl_content']['c2g_backupreturntovhosts'], $GLOBALS['TL_LANG']['tl_content']['c2g_backupreturntovhosts']); } return implode("<br />", $arrOutput); }