Exemplo n.º 1
0
 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);
 }