Пример #1
0
        public static function stepByStep($logDate = false, &$arrProject = array(), $_flgForceCreateStepFile = false)
        {
            set_time_limit(0);
            ignore_user_abort(true);
            error_reporting(E_ALL);
            ob_implicit_flush();
            include_once Xpandbuddy::$pathName . '/library/Logger.php';
            self::$logger = new Xpandbuddy_Logger('step_log_file');
            if (empty($logDate) && !empty($arrProject)) {
                self::$logger->logDate = time();
                $arrProject['step'] = 0;
                self::$logger->stepProject = $arrProject;
                self::$logger->setStepLog();
            } else {
                self::$logger->logDate = $logDate;
                self::$logger->getStepLog();
            }
            if (empty(self::$logger->stepProject) && !empty($logDate) && !empty($arrProject) && $_flgForceCreateStepFile) {
                self::$logger->logDate = $logDate;
                $arrProject['step'] = 0;
                self::$logger->stepProject = $arrProject;
                self::$logger->setStepLog();
            }
            if (empty(self::$logger->stepProject)) {
                self::$logger->deleteStepLog();
                return self::_setErr('No project settings!');
            }
            if (!isset(self::$logger->stepProject['settings']['user_data']['only_settings'])) {
                $_thisType = 1;
                if (isset(self::$logger->stepProject['flg_type']) && is_array(self::$logger->stepProject['flg_type'])) {
                    foreach (self::$logger->stepProject['flg_type'] as $_key => $_value) {
                        if ($_key == $_value) {
                            $_thisType = $_value;
                            break;
                        }
                    }
                }
                self::$logger->stepProject['settings']['user_data'] = self::$logger->stepProject['settings']['type_' . $_thisType];
            }
            if (self::$logger->stepProject['step'] < 1) {
                // Create SQL backup
                if ((self::$logger->stepProject['settings']['user_data']['only_settings'] == 1 && self::$logger->stepProject['settings']['user_data']['database'] == 1 || self::$logger->stepProject['settings']['user_data']['only_settings'] == 0) && !self::createStepBackup()) {
                    self::$logger->setStepLog();
                    return self::_setErr('Can\'t create SQL backup file!');
                }
                self::$logString .= 'Created SQL backup file successfully.<br/>';
                self::$logger->stepProject['step']++;
                if (self::$logger->setStepLog() === false) {
                    return self::_setErr('Can\'t save data to temp file!<br/>');
                }
                return true;
            }
            $_dirStart = substr(ABSPATH, 0, -1);
            $_pluginDir = WP_CONTENT_DIR . self::$ds . 'plugins' . self::$ds . 'xpandbuddy' . self::$ds;
            $_wpContentDir = substr(WP_CONTENT_DIR, strlen(ABSPATH));
            $_tmpDir = getcwd();
            chdir(ABSPATH);
            if (self::$logger->stepProject['step'] < 2) {
                // Get file list
                self::$logger->stepProject['arrFiles'] = array();
                if (@self::$logger->stepProject['settings']['user_data']['only_settings'] == 1) {
                    if (@self::$logger->stepProject['settings']['user_data']['database'] == 1) {
                        self::$logger->stepProject['arrFiles'][] = 'wp-backups' . self::$ds . 'dump_' . self::$logger->logDate . '.sql';
                    }
                    if (@self::$logger->stepProject['settings']['user_data']['plugins'] == 1) {
                        self::getFiles(self::$logger->stepProject['arrFiles'], $_dirStart . self::$ds . $_wpContentDir . self::$ds . 'plugins', $_dirStart);
                    }
                    if (@self::$logger->stepProject['settings']['user_data']['themes'] == 1) {
                        self::getFiles(self::$logger->stepProject['arrFiles'], $_dirStart . self::$ds . $_wpContentDir . self::$ds . 'themes', $_dirStart);
                    }
                    if (@self::$logger->stepProject['settings']['user_data']['uploads'] == 1 && is_dir($_dirStart . self::$ds . $_wpContentDir . self::$ds . 'uploads' . self::_subdirCreation())) {
                        self::getFiles(self::$logger->stepProject['arrFiles'], $_dirStart . self::$ds . $_wpContentDir . self::$ds . 'uploads' . self::_subdirCreation(), $_dirStart);
                    }
                } else {
                    if (@self::$logger->stepProject['settings']['blog']['flg_mu2single'] == 1) {
                        self::getFiles(self::$logger->stepProject['arrFiles'], $_dirStart, $_dirStart, false);
                        foreach (self::$logger->stepProject['arrFiles'] as $_id => $_file) {
                            if ($_file == '.htaccess') {
                                unset(self::$logger->stepProject['arrFiles'][$_id]);
                                continue;
                            }
                        }
                        self::getFiles(self::$logger->stepProject['arrFiles'], $_dirStart . self::$ds . 'wp-admin', $_dirStart);
                        self::getFiles(self::$logger->stepProject['arrFiles'], $_dirStart . self::$ds . 'wp-includes', $_dirStart);
                        self::getFiles(self::$logger->stepProject['arrFiles'], $_dirStart . self::$ds . $_wpContentDir . self::$ds . 'languages', $_dirStart);
                        self::getFiles(self::$logger->stepProject['arrFiles'], $_dirStart . self::$ds . $_wpContentDir . self::$ds . 'plugins', $_dirStart);
                        self::getFiles(self::$logger->stepProject['arrFiles'], $_dirStart . self::$ds . $_wpContentDir . self::$ds . 'themes', $_dirStart);
                        if (is_dir($_dirStart . self::$ds . $_wpContentDir . self::$ds . 'uploads' . self::$ds . 'sites' . self::_subdirCreation())) {
                            self::getFiles(self::$logger->stepProject['arrFiles'], $_dirStart . self::$ds . $_wpContentDir . self::$ds . 'uploads' . self::$ds . 'sites' . self::_subdirCreation(), $_dirStart);
                        } else {
                            self::$logger->stepProject['arrFiles'][] = $_wpContentDir . self::$ds . 'uploads' . self::$ds . 'sites' . self::$ds . 'index.php';
                        }
                    } else {
                        self::getFiles(self::$logger->stepProject['arrFiles'], $_dirStart, $_dirStart);
                    }
                }
                $_clearDirs = array();
                $_saveFiles = self::$logger->stepProject['arrFiles'];
                if (isset(self::$logger->stepProject['settings']['user_data']['arr_execute_dirs']) && count(self::$logger->stepProject['settings']['user_data']['arr_execute_dirs']) > 0 && isset(self::$logger->stepProject['settings']['user_data']['files_exclude']) && self::$logger->stepProject['settings']['user_data']['files_exclude'] == 1) {
                    foreach (@self::$logger->stepProject['settings']['user_data']['arr_execute_dirs'] as $_dirs) {
                        if ($_dirs['value'] == 1) {
                            $_clearDirs[] = stripslashes($_dirs['name']);
                        }
                    }
                    $_saveFiles = array();
                    foreach (self::$logger->stepProject['arrFiles'] as $_file) {
                        $_flgCheck = true;
                        foreach ($_clearDirs as $_needle) {
                            if (strpos($_dirStart . self::$ds . $_file, $_needle) === 0) {
                                $_flgCheck = false;
                            }
                        }
                        if ($_flgCheck && empty(self::$logger->stepProject['settings']['files_exclude_filter']) || $_flgCheck && !empty(self::$logger->stepProject['settings']['files_exclude_filter']) && @fnmatch(self::$logger->stepProject['settings']['files_exclude_filter'], $_dirStart . self::$ds . $_file)) {
                            $_saveFiles[] = $_file;
                        }
                    }
                }
                self::$logger->stepProject['arrAllFilesCount'] = count($_saveFiles);
                self::$logger->stepProject['arrFiles'] = $_saveFiles;
                self::$logString .= 'Found ' . self::$logger->stepProject['arrAllFilesCount'] . ' files & dirs.<br/>';
                self::$logger->stepProject['step']++;
                self::$logger->setStepLog();
                return true;
            }
            if (@self::$logger->stepProject['settings']['blog']['flg_mu2single'] == 1) {
                self::setReplaceUnit('wp-config.php', '/(WP_ALLOW_MULTISITE.*[,]{1})(.*)([\\)]{1})/i', "\${1}false\${3}", 1, 0);
                self::setReplaceUnit('wp-config.php', '/(MULTISITE.*[,]{1})(.*)([\\)]{1})/i', "\${1}false\${3}", 1, 0);
                self::setReplaceUnit('wp-config.php', '/(\\$table_prefix.*[\'"]{1})(.*)([\'"]{1})/i', "\${1}" . self::$logger->stepProject['settings']['blog']['db_tableprefix'] . '$3', 1, 0);
                self::setReplaceUnit('##all_files##', "#" . addslashes($_wpContentDir . self::$ds . 'uploads' . self::$ds . 'sites' . self::_subdirCreation()) . "#i", addslashes($_wpContentDir . self::$ds . 'uploads'), 1, 0);
                self::setReplaceUnit('##all_files##', "#" . addslashes(str_replace(self::$ds, '/', $_wpContentDir . self::$ds . 'uploads' . self::$ds . 'sites' . self::_subdirCreation())) . "#i", addslashes(str_replace(self::$ds, '/', $_wpContentDir . self::$ds . 'uploads' . self::$ds)), 1, 0);
            }
            $_backupFile = 'backup-prj' . self::$logger->stepProject['id'] . '-' . date("Y-m-d-H", self::$logger->logDate);
            if (!isset(self::$logger->stepProject['flg_type'])) {
                self::$logger->stepProject['flg_type'] = array('1' => '1');
            }
            self::setOptions(self::$logger->stepProject['settings'], self::$logger->stepProject['flg_type'][1]);
            if (self::$logger->stepProject['step'] < 3) {
                // Move all files to archive
                $_flgStep3FirstRun = self::$logger->stepProject['arrAllFilesCount'] == count(self::$logger->stepProject['arrFiles']);
                if (@self::$logger->stepProject['settings']['user_data']['only_settings'] == 1) {
                    $archivator = self::activateStepArchiveClass(false, 'wp-backups' . self::_subdirCreation(), $_flgStep3FirstRun);
                } else {
                    $archivator = self::activateStepArchiveClass($_backupFile, substr(ABSPATH, 0, -1) . self::$ds . 'wp-backups' . self::$ds, $_flgStep3FirstRun);
                }
                $_summFileSize = 0;
                $_inStepCounter = 0;
                $_memoryLimit = ini_get('memory_limit');
                switch (substr($_memoryLimit, -1)) {
                    case 'M':
                    case 'm':
                        $_memoryLimit = (int) $_memoryLimit * 1048576;
                        break;
                    case 'K':
                    case 'k':
                        $_memoryLimit = (int) $_memoryLimit * 1024;
                        break;
                    case 'G':
                    case 'g':
                        $_memoryLimit = (int) $_memoryLimit * 1073741824;
                        break;
                }
                if (count(self::$logger->stepProject['arrFiles']) > 0) {
                    self::$logString .= 'Archiving:<br/>';
                    foreach (self::$logger->stepProject['arrFiles'] as $_fileKey => $_file) {
                        $_fileSize = @filesize($_dirStart . self::$ds . $_file);
                        if ($_summFileSize > 1024 * 1024 && $_inStepCounter > 1) {
                            self::$logString .= 'Proceeding to next step.<br/>';
                            break;
                        }
                        $_summFileSize += $_fileSize;
                        if (is_file($_dirStart . self::$ds . $_file)) {
                            if (memory_get_usage() + 2 * $_fileSize < $_memoryLimit - 4194304) {
                                // change only php ini html htaccess files sql
                                if (in_array(substr(strrchr($_dirStart . self::$ds . $_file, '.'), 1), array('php', 'ini', 'html', 'htaccess', 'sql'))) {
                                    if (isset(self::$_arrChanges['##all_files##'])) {
                                        foreach (self::$_arrChanges['##all_files##'] as $_keyName => $_keyValues) {
                                            foreach ($_keyValues as $_oneValue) {
                                                if (!isset(self::$_arrChanges[$_file])) {
                                                    self::$_arrChanges[$_file] = array();
                                                }
                                                self::$_arrChanges[$_file][$_keyName][] = $_oneValue;
                                            }
                                        }
                                    }
                                    $handleFile = fopen($_dirStart . self::$ds . $_file, "r");
                                    $_copyFileName = basename($_dirStart . self::$ds . $_file);
                                    $_copyDirName = substr($_file, 0, -strlen(basename($_dirStart . self::$ds . $_file)) - 1);
                                    $_copyFileTemp = $_pluginDir . 'temp' . self::$ds . $_copyFileName;
                                    $copyFile = fopen($_copyFileTemp, "w");
                                    if ($handleFile === false || $copyFile === false) {
                                        $arrError = error_get_last();
                                        self::$logger->setStepLog();
                                        return self::_setErr('The plugin could not be activated because of your host server settings. ' . @$arrError['message'] . '. Please contact your host to get the issue resolved.');
                                    }
                                    while (($buffer = fgets($handleFile)) !== false) {
                                        if ($buffer === false) {
                                            $arrError = error_get_last();
                                            self::$logString .= $arrError . '<br/>';
                                            self::$logger->setStepLog();
                                            return self::_setErr('The plugin could not be activated because of your host server settings. ' . @$arrError['message'] . '. Please contact your host to get the issue resolved.');
                                        }
                                        if (isset(self::$_arrChanges[$_file])) {
                                            if (isset(self::$_arrChanges[$_file]['string_b'])) {
                                                $buffer = preg_replace(self::$_arrChanges[$_file]['bufer_b'], self::$_arrChanges[$_file]['replace_b'], preg_replace(self::$_arrChanges[$_file]['string_b'], self::$_arrChanges[$_file]['bufer_a'], $buffer));
                                            }
                                            if (isset(self::$_arrChanges[$_file]['string'])) {
                                                $buffer = preg_replace(self::$_arrChanges[$_file]['string'], self::$_arrChanges[$_file]['replace'], $buffer);
                                            }
                                        }
                                        if (fwrite($copyFile, $buffer) === false) {
                                            $arrError = error_get_last();
                                            self::$logString .= $arrError . '<br/>';
                                            self::$logger->setStepLog();
                                            return self::_setErr('The plugin could not be activated because of your host server settings. ' . @$arrError['message'] . '. Please contact your host to get the issue resolved.');
                                        }
                                    }
                                    if (!feof($handleFile)) {
                                        $arrError = error_get_last();
                                        self::$logger->setStepLog();
                                        return self::_setErr('The plugin could not be activated because of your host server settings. ' . @$arrError['message'] . '. Please contact your host to get the issue resolved.');
                                    }
                                    fclose($handleFile);
                                    fclose($copyFile);
                                    if (!self::haveErrors($archivator, $archivator->add($_copyFileTemp, PCLZIP_OPT_ADD_PATH, $_copyDirName, PCLZIP_OPT_REMOVE_PATH, $_pluginDir . 'temp' . self::$ds, PCLZIP_OPT_TEMP_FILE_THRESHOLD, 1024 * 1024 * 10, PCLZIP_OPT_NO_COMPRESSION, PCLZIP_OPT_TEMP_FILE_ON))) {
                                        @unlink($_copyFileTemp);
                                        self::$logString .= 'Can\'t archiving data from ' . $_file . '<br/>' . self::$error . '<br/>';
                                        self::$logger->setStepLog();
                                        return self::_setErr('Can\'t archiving data from ' . $_file . '!');
                                    }
                                    @unlink($_copyFileTemp);
                                    self::$logString .= $_file . '<br/>';
                                } else {
                                    $_removePath = $_dirStart . self::$ds;
                                    $_addPath = '';
                                    if (@self::$logger->stepProject['settings']['blog']['flg_mu2single'] == 1 && strpos($_dirStart . self::$ds . $_file, $_wpContentDir . self::$ds . 'uploads') !== false) {
                                        $_removePath = $_wpContentDir . self::$ds . 'uploads' . self::$ds . 'sites' . self::_subdirCreation();
                                        $_addPath = $_wpContentDir . self::$ds . 'uploads';
                                    }
                                    if (!self::haveErrors($archivator, $archivator->add($_dirStart . self::$ds . $_file, PCLZIP_OPT_ADD_PATH, $_addPath, PCLZIP_OPT_REMOVE_PATH, $_removePath, PCLZIP_OPT_TEMP_FILE_THRESHOLD, 1024 * 1024 * 10, PCLZIP_OPT_NO_COMPRESSION, PCLZIP_OPT_TEMP_FILE_ON))) {
                                        self::$logString .= 'Can\'t archiving data from ' . $_file . '<br/>' . self::$error . '<br/>';
                                        self::$logger->setStepLog();
                                        return self::_setErr('Can\'t archiving data from ' . $_file . '!');
                                    }
                                    self::$logString .= $_file . '<br/>';
                                }
                                self::$_filesCounter++;
                                $_inStepCounter++;
                            } else {
                                self::$logString .= 'No archiving data from ' . $_file . ' - memory limit is end!<br/>Saving after restart!<br/>';
                                break;
                            }
                        } elseif (is_dir($_dirStart . self::$ds . $_file) && count(scandir($_dirStart . self::$ds . $_file)) < 3) {
                            if (!self::haveErrors($archivator, $archivator->add($_dirStart . self::$ds . $_file, PCLZIP_OPT_REMOVE_PATH, $_dirStart . self::$ds, PCLZIP_OPT_ADD_PATH, '', PCLZIP_OPT_NO_COMPRESSION, PCLZIP_OPT_TEMP_FILE_ON))) {
                                self::$logString .= 'Can\'t archiving data dir ' . $_file . '<br/>' . self::$error . '<br/>';
                                self::$logger->setStepLog();
                                return self::_setErr('Can\'t archiving dir ' . $_file . '!');
                            }
                            self::$_filesCounter++;
                            self::$logString .= $_file . '<br/>';
                        }
                        unset(self::$logger->stepProject['arrFiles'][$_fileKey]);
                    }
                    self::$logString .= 'Package of files saved.<br/>';
                    self::$logger->setStepLog();
                    return true;
                } else {
                    self::$logger->stepProject['step']++;
                    self::$logger->setStepLog();
                    return true;
                }
            }
            if (@self::$logger->stepProject['settings']['user_data']['only_settings'] != 1) {
                if (self::$logger->stepProject['step'] < 4) {
                    $archivator = self::activateStepArchiveClass($_backupFile, substr(ABSPATH, 0, -1) . self::$ds . 'wp-backups' . self::$ds);
                    if (!self::haveErrors($archivator, $archivator->add($_dirStart . self::$ds . 'wp-backups' . self::$ds . 'dump_' . self::$logger->logDate . '.sql', PCLZIP_OPT_ADD_PATH, '', PCLZIP_OPT_REMOVE_PATH, $_dirStart . self::$ds, PCLZIP_OPT_TEMP_FILE_THRESHOLD, 1024 * 1024 * 10, PCLZIP_OPT_NO_COMPRESSION, PCLZIP_OPT_TEMP_FILE_ON))) {
                        self::$logString .= self::$error . '<br/>';
                        self::$logger->setStepLog();
                        return self::_setErr('Can\'t archiving SQL dump file!');
                    }
                    self::$logString .= 'Archiving SQL dump file.<br/>';
                    self::$logger->stepProject['step']++;
                    self::$logger->setStepLog();
                    return true;
                }
                if (self::$logger->stepProject['step'] < 5) {
                    $archivator = self::activateStepArchiveClass(false, 'wp-backups' . self::_subdirCreation(), true);
                    if (!self::haveErrors($archivator, $archivator->add(substr(ABSPATH, 0, -1) . self::$ds . 'wp-backups' . self::$ds . $_backupFile . self::$logger->stepProject['settings']['archive_type'], PCLZIP_OPT_ADD_PATH, '', PCLZIP_OPT_REMOVE_PATH, $_dirStart . self::$ds . 'wp-backups' . self::$ds, PCLZIP_OPT_TEMP_FILE_THRESHOLD, 1024 * 1024 * 10, PCLZIP_OPT_NO_COMPRESSION, PCLZIP_OPT_TEMP_FILE_ON))) {
                        self::$logString .= self::$error . '<br/>';
                        self::$logger->setStepLog();
                        return self::_setErr('Can\'t compare data file!');
                    }
                    if (is_file('wp-backups' . self::$ds . $_backupFile . self::$logger->stepProject['settings']['archive_type'])) {
                        unlink('wp-backups' . self::$ds . $_backupFile . self::$logger->stepProject['settings']['archive_type']);
                    }
                    self::$logString .= 'Compare data file.<br/>';
                    self::$logger->stepProject['step']++;
                    self::$logger->setStepLog();
                    return true;
                }
                if (self::$logger->stepProject['step'] < 6) {
                    $archivator = self::activateStepArchiveClass(true, 'wp-backups' . self::_subdirCreation());
                    $_indexFile = $_pluginDir . 'temp' . self::$ds . 'index.php';
                    $_archiveClassName = self::$logger->stepProject['settings']['archive_type'] == '.zip' ? 'PclZip' : 'TarArchive';
                    if (false === @file_put_contents($_indexFile, '<?php
set_time_limit(0);
ignore_user_abort(true);
if( function_exists("version_compare")&&version_compare( phpversion(), "5.2", "<") ){
	echo "Low version PHP, try to manually extract!";
	die();
}
include_once( "' . $_archiveClassName . '.php" );
$archivator=new ' . $_archiveClassName . '("' . $_backupFile . self::$logger->stepProject['settings']['archive_type'] . '");
@unlink("index.php");
$archivator->extract( PCLZIP_OPT_REPLACE_NEWER, PCLZIP_OPT_SET_CHMOD, ( substr( php_sapi_name(), 0, 3 )=="cgi"? 0644:0777 ) );
if( $archivator->error_code == 0 && empty( $archivator->error ) ){
	$link=mysql_connect(\'' . self::$logger->stepProject['settings']['blog']['db_host'] . '\', \'' . self::$logger->stepProject['settings']['blog']['db_username'] . '\', \'' . self::$logger->stepProject['settings']['blog']['db_password'] . '\');
	if(!$link){
		die( mysql_error() );
	}
	if(!mysql_select_db(\'' . self::$logger->stepProject['settings']['blog']['db_name'] . '\', $link)){
		die( mysql_error() );
	}
	mysql_set_charset("utf8",$link);
	$handle=@fopen( ".".DIRECTORY_SEPARATOR."wp-backups".DIRECTORY_SEPARATOR."dump_' . self::$logger->logDate . '.sql", "r" );
	$arrError=array();
	if($handle){
		global $table_prefix;
		while( $buffer=fgets( $handle ) ){
			$buffer=trim( $buffer );
			if( empty( $buffer ) || ord($buffer{0})==35 ){
				continue;
			}
			if( !empty( $buffer ) ){
				str_replace( "##new_table_prefix##", $table_prefix, $buffer );
				if( !mysql_query( $buffer, $link ) ){
					$arrError[]=mysql_query("SHOW ENGINE INNODB STATUS;")."\\n\\n".mysql_error()."\\n\\n".$buffer;
				}
			}
		}
		fclose($handle);
	}else{
		$arrError=error_get_last();
		die( "The plugin could not be activated because of your host server settings. ".@$arrError["message"].". Please contact your host to get the issue resolved." );
	}
	mysql_close($link);
	@unlink("' . $_backupFile . self::$logger->stepProject['settings']['archive_type'] . '");
	@unlink("' . $_archiveClassName . '.php");
	if( empty( $arrError ) ){
		header("Refresh: 1;");
	}
}else{
	echo( "Error: ".$archivator->errorInfo( true ) );
}
?>')) {
                        self::$logger->setStepLog();
                        return self::_setErr('Can\'t create action file!');
                    }
                    if (!self::haveErrors($archivator, $archivator->add($_indexFile, PCLZIP_OPT_ADD_PATH, '', PCLZIP_OPT_REMOVE_PATH, $_pluginDir . 'temp' . self::$ds, PCLZIP_OPT_TEMP_FILE_THRESHOLD, 1024 * 1024 * 10, PCLZIP_OPT_NO_COMPRESSION, PCLZIP_OPT_TEMP_FILE_ON))) {
                        self::$logString .= self::$error . '<br/>';
                        self::$logger->setStepLog();
                        return self::_setErr('Can\'t compare action file!');
                    }
                    if (is_file($_indexFile)) {
                        unlink($_indexFile);
                    }
                    self::$logString .= 'Compare action file.<br/>';
                    self::$logger->stepProject['step']++;
                    self::$logger->setStepLog();
                    return true;
                }
                if (self::$logger->stepProject['step'] < 7) {
                    $archivator = self::activateStepArchiveClass(true, 'wp-backups' . self::_subdirCreation());
                    if (self::$logger->stepProject['settings']['archive_type'] == '.zip') {
                        if (!self::haveErrors($archivator, $archivator->add($_pluginDir . "library" . self::$ds . "PclZip.php", PCLZIP_OPT_ADD_PATH, '', PCLZIP_OPT_REMOVE_PATH, $_pluginDir . "library" . self::$ds, PCLZIP_OPT_TEMP_FILE_THRESHOLD, 1024 * 1024 * 10, PCLZIP_OPT_NO_COMPRESSION, PCLZIP_OPT_TEMP_FILE_ON))) {
                            self::$logString .= self::$error . '<br/>';
                            self::$logger->setStepLog();
                            return self::_setErr('Can\'t compare class file!');
                        }
                    } else {
                        if (!self::haveErrors($archivator, $archivator->add($_pluginDir . "library" . self::$ds . "TarArchive.php", PCLZIP_OPT_ADD_PATH, '', PCLZIP_OPT_REMOVE_PATH, $_pluginDir . "library" . self::$ds, PCLZIP_OPT_TEMP_FILE_THRESHOLD, 1024 * 1024 * 10, PCLZIP_OPT_NO_COMPRESSION, PCLZIP_OPT_TEMP_FILE_ON))) {
                            self::$logString .= self::$error . '<br/>';
                            self::$logger->setStepLog();
                            return self::_setErr('Can\'t compare class file!');
                        }
                    }
                    self::$logString .= 'Compare class file.<br/>';
                    self::$logger->stepProject['step']++;
                    self::$logger->setStepLog();
                    return true;
                }
            }
            if (is_file($_dirStart . self::$ds . 'wp-backups' . self::$ds . 'dump_' . self::$logger->logDate . '.sql')) {
                unlink($_dirStart . self::$ds . 'wp-backups' . self::$ds . 'dump_' . self::$logger->logDate . '.sql');
            }
            self::$logger->deleteStepLog();
            self::$logger->stepProject['settings']['file_loader'] = self::$logger->stepProject['settings']['file_name'];
            self::$logString .= 'Process completed!';
            chdir($_tmpDir);
            return true;
        }