update
This commit is contained in:
@@ -0,0 +1,150 @@
|
||||
<?php
|
||||
|
||||
if (!defined('WPVIVID_PLUGIN_DIR')){
|
||||
die;
|
||||
}
|
||||
define('NECESSARY','1');
|
||||
define('OPTION','0');
|
||||
class WPvivid_Backup_Database
|
||||
{
|
||||
private $task_id;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
public function wpvivid_archieve_database_info($databases, $data)
|
||||
{
|
||||
if(isset($data['dump_db']))
|
||||
{
|
||||
$sql_info['file_name'] =$data['sql_file_name'];
|
||||
$sql_info['database'] = DB_NAME;
|
||||
$sql_info['host'] = DB_HOST;
|
||||
$sql_info['user'] = DB_USER;
|
||||
$sql_info['pass'] = DB_PASSWORD;
|
||||
$databases[] = $sql_info;
|
||||
}
|
||||
return $databases;
|
||||
}
|
||||
|
||||
public function backup_database($data,$task_id = '')
|
||||
{
|
||||
global $wpvivid_plugin;
|
||||
$dump=null;
|
||||
|
||||
try
|
||||
{
|
||||
$this->task_id=$task_id;
|
||||
|
||||
//$backup_file =$data['sql_file_name'];
|
||||
|
||||
require_once 'class-wpvivid-mysqldump-method.php';
|
||||
require_once 'class-wpvivid-mysqldump.php';
|
||||
include_once WPVIVID_PLUGIN_DIR . '/includes/class-wpvivid-db-method.php';
|
||||
|
||||
$db_method=new WPvivid_DB_Method();
|
||||
$version =$db_method->get_mysql_version();
|
||||
|
||||
if(version_compare('4.1.0',$version) > 0)
|
||||
{
|
||||
return array('result'=>WPVIVID_FAILED,'error'=>'Your MySQL version is too old. Please upgrade at least to MySQL 4.1.0.');
|
||||
}
|
||||
|
||||
if(version_compare('5.3.0',phpversion()) > 0){
|
||||
return array('result'=>WPVIVID_FAILED,'error'=>'Your PHP version is too old. Please upgrade at least to PHP 5.3.0.');
|
||||
}
|
||||
|
||||
$db_method->check_max_allowed_packet();
|
||||
add_filter('wpvivid_exclude_db_table', array($this, 'exclude_table'),10,2);
|
||||
$exclude=array();
|
||||
$exclude = apply_filters('wpvivid_exclude_db_table',$exclude, $data);
|
||||
$include=array();
|
||||
$include = apply_filters('wpvivid_include_db_table',$include, $data);
|
||||
|
||||
$site_url = apply_filters('wpvivid_dump_set_site_url',get_site_url(), $data);
|
||||
$home_url = apply_filters('wpvivid_dump_set_home_url',get_home_url(), $data);
|
||||
$content_url=apply_filters('wpvivid_dump_set_content_url',content_url(), $data);
|
||||
|
||||
global $wpdb;
|
||||
if (is_multisite() && !defined('MULTISITE'))
|
||||
{
|
||||
$prefix = $wpdb->base_prefix;
|
||||
} else {
|
||||
$prefix = $wpdb->get_blog_prefix(0);
|
||||
}
|
||||
$prefix=apply_filters('wpvivid_dump_set_prefix',$prefix, $data);
|
||||
|
||||
add_filter('wpvivid_archieve_database_info', array($this, 'wpvivid_archieve_database_info'), 10, 2);
|
||||
$databases=array();
|
||||
$databases = apply_filters('wpvivid_archieve_database_info', $databases, $data);
|
||||
$is_additional_db = false;
|
||||
if($data['key'] === 'backup_additional_db')
|
||||
{
|
||||
$is_additional_db = true;
|
||||
}
|
||||
|
||||
$backup_files = array();
|
||||
foreach ($databases as $sql_info)
|
||||
{
|
||||
$database_name = $sql_info['database'];
|
||||
$backup_file = $sql_info['file_name'];
|
||||
$backup_files[] = $backup_file;
|
||||
$host = $sql_info['host'];
|
||||
$user = $sql_info['user'];
|
||||
$pass = $sql_info['pass'];
|
||||
|
||||
$dumpSettings=array();
|
||||
$dumpSettings['exclude-tables']=$exclude;
|
||||
$dumpSettings['include-tables']=$include;
|
||||
$dumpSettings['add-drop-table']=true;
|
||||
$dumpSettings['extended-insert']=false;
|
||||
|
||||
$dumpSettings['site_url']=$site_url;
|
||||
$dumpSettings['home_url']=$home_url;
|
||||
$dumpSettings['content_url']=$content_url;
|
||||
$dumpSettings['prefix']=$prefix;
|
||||
|
||||
$dump = new WPvivid_Mysqldump($host, $database_name, $user, $pass, $is_additional_db, $dumpSettings);
|
||||
|
||||
if (file_exists($backup_file))
|
||||
@wp_delete_file($backup_file);
|
||||
|
||||
$dump->task_id=$task_id;
|
||||
$dump->start($backup_file);
|
||||
}
|
||||
|
||||
unset($pdo);
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
$str_last_query_string='';
|
||||
if(!is_null($dump))
|
||||
{
|
||||
$str_last_query_string=$dump->last_query_string;
|
||||
}
|
||||
if(!empty($str_last_query_string))
|
||||
{
|
||||
$wpvivid_plugin->wpvivid_log->WriteLog('last query string:'.$str_last_query_string,'error');
|
||||
}
|
||||
$message = 'A exception ('.get_class($e).') occurred '.$e->getMessage().' (Code: '.$e->getCode().', line '.$e->getLine().' in '.$e->getFile().')';
|
||||
return array('result'=>WPVIVID_FAILED,'error'=>$message);
|
||||
}
|
||||
|
||||
$files = array();
|
||||
$files = $backup_files;
|
||||
return array('result'=>WPVIVID_SUCCESS,'files'=>$files);
|
||||
}
|
||||
|
||||
public function exclude_table($exclude,$data)
|
||||
{
|
||||
global $wpdb;
|
||||
if (is_multisite() && !defined('MULTISITE'))
|
||||
{
|
||||
$prefix = $wpdb->base_prefix;
|
||||
} else {
|
||||
$prefix = $wpdb->get_blog_prefix(0);
|
||||
}
|
||||
$exclude = array('/^(?!' . $prefix . ')/i');
|
||||
return $exclude;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user