public static function cloneBackupExtract()
 {
     try {
         MainWPHelper::endSession();
         $file = isset($_POST['f']) ? $_POST['f'] : $_POST['file'];
         $testFull = false;
         if ($file == '') {
             $dirs = MainWPHelper::getMainWPDir('backup', false);
             $backupdir = $dirs[0];
             $files = glob($backupdir . 'download-*');
             $archiveFile = false;
             foreach ($files as $file) {
                 if (MainWPHelper::isArchive($file, 'download-')) {
                     $archiveFile = $file;
                     break;
                 }
             }
             if ($archiveFile === false) {
                 throw new Exception(__('No download file found', 'mainwp-child'));
             }
             $file = $archiveFile;
         } else {
             if (file_exists($file)) {
                 $testFull = true;
             } else {
                 $file = ABSPATH . $file;
                 if (!file_exists($file)) {
                     throw new Exception(__('Backup file not found', 'mainwp-child'));
                 }
                 $testFull = true;
             }
         }
         //return size in kb
         $cloneInstall = new MainWPCloneInstall($file);
         //todo: RS: refactor to get those plugins after install (after .18 release)
         $cloneInstall->readConfigurationFile();
         $plugins = get_option('mainwp_temp_clone_plugins');
         $themes = get_option('mainwp_temp_clone_themes');
         if ($testFull) {
             $cloneInstall->testDownload();
         }
         $cloneInstall->removeConfigFile();
         $cloneInstall->extractBackup();
         $pubkey = get_option('mainwp_child_pubkey');
         $uniqueId = get_option('mainwp_child_uniqueId');
         $server = get_option('mainwp_child_server');
         $nonce = get_option('mainwp_child_nonce');
         $nossl = get_option('mainwp_child_nossl');
         $nossl_key = get_option('mainwp_child_nossl_key');
         $sitesToClone = get_option('mainwp_child_clone_sites');
         $cloneInstall->install();
         $cloneInstall->updateWPConfig();
         //            $cloneInstall->update_option('mainwp_child_pubkey', $pubkey);
         //            $cloneInstall->update_option('mainwp_child_uniqueId', $uniqueId);
         //            $cloneInstall->update_option('mainwp_child_server', $server);
         //            $cloneInstall->update_option('mainwp_child_nonce', $nonce);
         //            $cloneInstall->update_option('mainwp_child_nossl', $nossl);
         //            $cloneInstall->update_option('mainwp_child_nossl_key', $nossl_key);
         //            $cloneInstall->update_option('mainwp_child_clone_sites', $sitesToClone);
         //            $cloneInstall->update_option('mainwp_child_clone_permalink', true);
         MainWPHelper::update_option('mainwp_child_pubkey', $pubkey, 'yes');
         MainWPHelper::update_option('mainwp_child_uniqueId', $uniqueId);
         MainWPHelper::update_option('mainwp_child_server', $server);
         MainWPHelper::update_option('mainwp_child_nonce', $nonce);
         MainWPHelper::update_option('mainwp_child_nossl', $nossl, 'yes');
         MainWPHelper::update_option('mainwp_child_nossl_key', $nossl_key);
         MainWPHelper::update_option('mainwp_child_clone_sites', $sitesToClone);
         if (!MainWPHelper::startsWith(basename($file), 'download-backup-')) {
             MainWPHelper::update_option('mainwp_child_restore_permalink', true, 'yes');
         } else {
             MainWPHelper::update_option('mainwp_child_clone_permalink', true, 'yes');
         }
         $cloneInstall->clean();
         if ($plugins !== false) {
             $out = array();
             if (is_array($plugins)) {
                 $dir = WP_CONTENT_DIR . '/plugins/';
                 $fh = @opendir($dir);
                 while ($entry = @readdir($fh)) {
                     if (!is_dir($dir . $entry)) {
                         continue;
                     }
                     if ($entry == '.' || $entry == '..') {
                         continue;
                     }
                     if (!in_array($entry, $plugins)) {
                         MainWPHelper::delete_dir($dir . $entry);
                     }
                 }
                 @closedir($fh);
             }
             delete_option('mainwp_temp_clone_plugins');
         }
         if ($themes !== false) {
             $out = array();
             if (is_array($themes)) {
                 $dir = WP_CONTENT_DIR . '/themes/';
                 $fh = @opendir($dir);
                 while ($entry = @readdir($fh)) {
                     if (!is_dir($dir . $entry)) {
                         continue;
                     }
                     if ($entry == '.' || $entry == '..') {
                         continue;
                     }
                     if (!in_array($entry, $themes)) {
                         MainWPHelper::delete_dir($dir . $entry);
                     }
                 }
                 @closedir($fh);
             }
             delete_option('mainwp_temp_clone_themes');
         }
         $output = array('result' => 'ok');
         //todo: remove old tables if other prefix?
         wp_logout();
         wp_set_current_user(0);
     } catch (Exception $e) {
         $output = array('error' => $e->getMessage());
     }
     //return size in kb
     die(json_encode($output));
 }
 public function clean()
 {
     if (file_exists(WP_CONTENT_DIR . '/dbBackup.sql')) {
         @unlink(WP_CONTENT_DIR . '/dbBackup.sql');
     }
     if (file_exists(ABSPATH . 'clone/config.txt')) {
         @unlink(ABSPATH . 'clone/config.txt');
     }
     if (MainWPHelper::is_dir_empty(ABSPATH . 'clone')) {
         @rmdir(ABSPATH . 'clone');
     }
     try {
         $dirs = MainWPHelper::getMainWPDir('backup', false);
         $backupdir = $dirs[0];
         $files = glob($backupdir . '*');
         foreach ($files as $file) {
             if (MainWPHelper::isArchive($file)) {
                 @unlink($file);
             }
         }
     } catch (Exception $e) {
     }
 }
예제 #3
0
 function backupPoll()
 {
     $fileNameUID = isset($_POST['fileNameUID']) ? $_POST['fileNameUID'] : '';
     $fileName = isset($_POST['fileName']) ? $_POST['fileName'] : '';
     if ($_POST['type'] == 'full') {
         if ($fileName != '') {
             $backupFile = $fileName;
         } else {
             $backupFile = 'backup-' . $fileNameUID . '-';
         }
         $dirs = MainWPHelper::getMainWPDir('backup');
         $backupdir = $dirs[0];
         $result = glob($backupdir . $backupFile . '*');
         $archiveFile = false;
         foreach ($result as $file) {
             if (MainWPHelper::isArchive($file, $backupFile, '(.*)')) {
                 $archiveFile = $file;
                 break;
             }
         }
         if ($archiveFile === false) {
             MainWPHelper::write(array());
         }
         MainWPHelper::write(array('size' => filesize($archiveFile)));
     } else {
         $backupFile = 'dbBackup-' . $fileNameUID . '-*.sql';
         $dirs = MainWPHelper::getMainWPDir('backup');
         $backupdir = $dirs[0];
         $result = glob($backupdir . $backupFile . '*');
         if (count($result) == 0) {
             MainWPHelper::write(array());
         }
         MainWPHelper::write(array('size' => filesize($result[0])));
         exit;
     }
 }