431 lines
15 KiB
PHP
431 lines
15 KiB
PHP
<?php
|
|
|
|
class WPvivid_Public_Interface
|
|
{
|
|
public function __construct()
|
|
{
|
|
|
|
}
|
|
|
|
public function mainwp_data($data){
|
|
$action = sanitize_text_field($data['mwp_action']);
|
|
if (has_filter($action)) {
|
|
$ret = apply_filters($action, $data);
|
|
} else {
|
|
$ret['result'] = WPVIVID_FAILED;
|
|
$ret['error'] = 'Unknown function';
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
public function prepare_backup($backup_options){
|
|
global $wpvivid_plugin;
|
|
if(isset($backup_options)&&!empty($backup_options)){
|
|
if (is_null($backup_options)) {
|
|
$ret['error']='Invalid parameter param:'.$backup_options;
|
|
return $ret;
|
|
}
|
|
$backup_options = apply_filters('wpvivid_custom_backup_options', $backup_options);
|
|
|
|
if(!isset($backup_options['type']))
|
|
{
|
|
$backup_options['type']=__('Manual', 'wpvivid-backuprestore');
|
|
$backup_options['action']='backup';
|
|
}
|
|
$ret = $wpvivid_plugin->check_backup_option($backup_options, $backup_options['type']);
|
|
if($ret['result']!='success') {
|
|
return $ret;
|
|
}
|
|
$ret=$wpvivid_plugin->pre_backup($backup_options);
|
|
if($ret['result']=='success') {
|
|
//Check the website data to be backed up
|
|
$ret['check']=$wpvivid_plugin->check_backup($ret['task_id'],$backup_options);
|
|
if(isset($ret['check']['result']) && $ret['check']['result'] == 'failed') {
|
|
$ret['error']=$ret['check']['error'];
|
|
return $ret;
|
|
}
|
|
}
|
|
}
|
|
else{
|
|
$ret['error']='Error occurred while parsing the request data. Please try to run backup again.';
|
|
return $ret;
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
public function get_status(){
|
|
$ret['result']='success';
|
|
$list_tasks=array();
|
|
$tasks=WPvivid_Setting::get_tasks();
|
|
foreach ($tasks as $task)
|
|
{
|
|
$backup = new WPvivid_Backup_Task($task['id']);
|
|
$list_tasks[$task['id']]=$backup->get_backup_task_info($task['id']);
|
|
if($list_tasks[$task['id']]['task_info']['need_update_last_task']===true){
|
|
$task_msg = WPvivid_taskmanager::get_task($task['id']);
|
|
WPvivid_Setting::update_option('wpvivid_last_msg',$task_msg);
|
|
apply_filters('wpvivid_set_backup_report_addon_mainwp', $task_msg);
|
|
}
|
|
}
|
|
$ret['wpvivid']['task']=$list_tasks;
|
|
$backuplist=WPvivid_Backuplist::get_backuplist();
|
|
$schedule=WPvivid_Schedule::get_schedule();
|
|
$ret['wpvivid']['backup_list']=$backuplist;
|
|
$ret['wpvivid']['schedule']=$schedule;
|
|
$ret['wpvivid']['schedule']['last_message']=WPvivid_Setting::get_last_backup_message('wpvivid_last_msg');
|
|
WPvivid_taskmanager::delete_marked_task();
|
|
return $ret;
|
|
}
|
|
|
|
public function get_backup_schedule(){
|
|
$schedule=WPvivid_Schedule::get_schedule();
|
|
$ret['result']='success';
|
|
$ret['wpvivid']['schedule']=$schedule;
|
|
$ret['wpvivid']['schedule']['last_message']=WPvivid_Setting::get_last_backup_message('wpvivid_last_msg');
|
|
return $ret;
|
|
}
|
|
|
|
public function get_backup_list(){
|
|
$backuplist=WPvivid_Backuplist::get_backuplist();
|
|
$ret['result']='success';
|
|
$ret['wpvivid']['backup_list']=$backuplist;
|
|
return $ret;
|
|
}
|
|
|
|
public function get_default_remote(){
|
|
global $wpvivid_plugin;
|
|
$ret['result']='success';
|
|
$ret['remote_storage_type']=$wpvivid_plugin->function_realize->_get_default_remote_storage();
|
|
return $ret;
|
|
}
|
|
|
|
public function delete_backup($backup_id, $force_del){
|
|
global $wpvivid_plugin;
|
|
if(!isset($backup_id)||empty($backup_id)||!is_string($backup_id)) {
|
|
$ret['error']='Invalid parameter param: backup_id.';
|
|
return $ret;
|
|
}
|
|
if(!isset($force_del)){
|
|
$ret['error']='Invalid parameter param: force.';
|
|
return $ret;
|
|
}
|
|
if($force_del==0||$force_del==1) {
|
|
}
|
|
else {
|
|
$force_del=0;
|
|
}
|
|
$backup_id=sanitize_key($backup_id);
|
|
$ret=$wpvivid_plugin->delete_backup_by_id($backup_id, $force_del);
|
|
$backuplist=WPvivid_Backuplist::get_backuplist();
|
|
$ret['wpvivid']['backup_list']=$backuplist;
|
|
return $ret;
|
|
}
|
|
|
|
public function delete_backup_array($backup_id_array){
|
|
global $wpvivid_plugin;
|
|
if(!isset($backup_id_array)||empty($backup_id_array)||!is_array($backup_id_array)) {
|
|
$ret['error']='Invalid parameter param: backup_id';
|
|
return $ret;
|
|
}
|
|
$ret=array();
|
|
foreach($backup_id_array as $backup_id)
|
|
{
|
|
$backup_id=sanitize_key($backup_id);
|
|
$ret=$wpvivid_plugin->delete_backup_by_id($backup_id);
|
|
}
|
|
$backuplist=WPvivid_Backuplist::get_backuplist();
|
|
$ret['wpvivid']['backup_list']=$backuplist;
|
|
return $ret;
|
|
}
|
|
|
|
public function set_security_lock($backup_id, $lock){
|
|
if(!isset($backup_id)||empty($backup_id)||!is_string($backup_id)){
|
|
$ret['error']='Backup id not found';
|
|
return $ret;
|
|
}
|
|
if(!isset($lock)){
|
|
$ret['error']='Invalid parameter param: lock';
|
|
return $ret;
|
|
}
|
|
$backup_id=sanitize_key($backup_id);
|
|
if($lock==0||$lock==1) {
|
|
}
|
|
else {
|
|
$lock=0;
|
|
}
|
|
WPvivid_Backuplist::set_security_lock($backup_id,$lock);
|
|
$backuplist=WPvivid_Backuplist::get_backuplist();
|
|
$ret['wpvivid']['backup_list']=$backuplist;
|
|
return $ret;
|
|
}
|
|
|
|
public function view_log($backup_id){
|
|
global $wpvivid_plugin;
|
|
if (!isset($backup_id)||empty($backup_id)||!is_string($backup_id)){
|
|
$ret['error']='Backup id not found';
|
|
return $ret;
|
|
}
|
|
$backup_id=sanitize_key($backup_id);
|
|
$ret=$wpvivid_plugin->function_realize->_get_log_file('backuplist', $backup_id);
|
|
if($ret['result'] == 'success') {
|
|
$file = fopen($ret['log_file'], 'r');
|
|
if (!$file) {
|
|
$ret['result'] = 'failed';
|
|
$ret['error'] = __('Unable to open the log file.', 'wpvivid-backuprestore');
|
|
return $ret;
|
|
}
|
|
$buffer = '';
|
|
while (!feof($file)) {
|
|
$buffer .= fread($file, 1024);
|
|
}
|
|
fclose($file);
|
|
$ret['data'] = $buffer;
|
|
}
|
|
else{
|
|
$ret['error']='Unknown error';
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
public function read_last_backup_log($log_file_name){
|
|
global $wpvivid_plugin;
|
|
if(!isset($log_file_name)||empty($log_file_name)||!is_string($log_file_name))
|
|
{
|
|
$ret['result']='failed';
|
|
$ret['error']=__('Reading the log failed. Please try again.', 'wpvivid-backuprestore');
|
|
return $ret;
|
|
}
|
|
$log_file_name=sanitize_text_field($log_file_name);
|
|
$ret=$wpvivid_plugin->function_realize->_get_log_file('lastlog', $log_file_name);
|
|
if($ret['result'] == 'success') {
|
|
$file = fopen($ret['log_file'], 'r');
|
|
if (!$file) {
|
|
$ret['result'] = 'failed';
|
|
$ret['error'] = __('Unable to open the log file.', 'wpvivid-backuprestore');
|
|
return $ret;
|
|
}
|
|
$buffer = '';
|
|
while (!feof($file)) {
|
|
$buffer .= fread($file, 1024);
|
|
}
|
|
fclose($file);
|
|
$ret['result'] = 'success';
|
|
$ret['data'] = $buffer;
|
|
}
|
|
else{
|
|
$ret['error']='Unknown error';
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
public function view_backup_task_log($backup_task_id){
|
|
global $wpvivid_plugin;
|
|
if (!isset($backup_task_id)||empty($backup_task_id)||!is_string($backup_task_id)){
|
|
$ret['error']='Reading the log failed. Please try again.';
|
|
return $ret;
|
|
}
|
|
$backup_task_id = sanitize_key($backup_task_id);
|
|
$ret=$wpvivid_plugin->function_realize->_get_log_file('tasklog', $backup_task_id);
|
|
if($ret['result'] == 'success') {
|
|
$file = fopen($ret['log_file'], 'r');
|
|
if (!$file) {
|
|
$ret['result'] = 'failed';
|
|
$ret['error'] = __('Unable to open the log file.', 'wpvivid-backuprestore');
|
|
return $ret;
|
|
}
|
|
$buffer = '';
|
|
while (!feof($file)) {
|
|
$buffer .= fread($file, 1024);
|
|
}
|
|
fclose($file);
|
|
$ret['result'] = 'success';
|
|
$ret['data'] = $buffer;
|
|
}
|
|
else{
|
|
$ret['error']='Unknown error';
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
public function backup_cancel($task_id = ''){
|
|
global $wpvivid_plugin;
|
|
$ret=$wpvivid_plugin->function_realize->_backup_cancel();
|
|
return $ret;
|
|
}
|
|
|
|
public function init_download_page($backup_id){
|
|
global $wpvivid_plugin;
|
|
if(!isset($backup_id)||empty($backup_id)||!is_string($backup_id)) {
|
|
$ret['error']='Invalid parameter param:'.$backup_id;
|
|
return $ret;
|
|
}
|
|
else {
|
|
$backup_id=sanitize_key($backup_id);
|
|
return $wpvivid_plugin->init_download($backup_id);
|
|
}
|
|
}
|
|
|
|
public function prepare_download_backup($backup_id, $file_name){
|
|
if(!isset($backup_id)||empty($backup_id)||!is_string($backup_id))
|
|
{
|
|
$ret['error']='Invalid parameter param:'.$backup_id;
|
|
return $ret;
|
|
}
|
|
if(!isset($file_name)||empty($file_name)||!is_string($file_name))
|
|
{
|
|
$ret['error']='Invalid parameter param:'.$file_name;
|
|
return $ret;
|
|
}
|
|
$download_info=array();
|
|
$download_info['backup_id']=sanitize_key($backup_id);
|
|
$download_info['file_name'] = $file_name;
|
|
|
|
@set_time_limit(600);
|
|
if (session_id())
|
|
session_write_close();
|
|
try
|
|
{
|
|
$downloader=new WPvivid_downloader();
|
|
$downloader->ready_download($download_info);
|
|
}
|
|
catch (Exception $e)
|
|
{
|
|
$message = 'A exception ('.get_class($e).') occurred '.$e->getMessage().' (Code: '.$e->getCode().', line '.$e->getLine().' in '.$e->getFile().')';
|
|
error_log($message);
|
|
return array('error'=>$message);
|
|
}
|
|
catch (Error $e)
|
|
{
|
|
$message = 'A error ('.get_class($e).') has occurred: '.$e->getMessage().' (Code: '.$e->getCode().', line '.$e->getLine().' in '.$e->getFile().')';
|
|
error_log($message);
|
|
return array('error'=>$message);
|
|
}
|
|
|
|
$ret['result']='success';
|
|
return $ret;
|
|
}
|
|
|
|
public function get_download_task($backup_id){
|
|
if(!isset($backup_id)||empty($backup_id)||!is_string($backup_id)) {
|
|
$ret['error']='Invalid parameter param:'.$backup_id;
|
|
return $ret;
|
|
}
|
|
else {
|
|
$backup = WPvivid_Backuplist::get_backup_by_id($backup_id);
|
|
if ($backup === false) {
|
|
$ret['result'] = WPVIVID_FAILED;
|
|
$ret['error'] = 'backup id not found';
|
|
return $ret;
|
|
}
|
|
$backup_item = new WPvivid_Backup_Item($backup);
|
|
$ret = $backup_item->update_download_page($backup_id);
|
|
return $ret;
|
|
}
|
|
}
|
|
|
|
public function download_backup($backup_id, $file_name){
|
|
global $wpvivid_plugin;
|
|
if(!isset($backup_id)||empty($backup_id)||!is_string($backup_id)) {
|
|
$ret['error']='Invalid parameter param: backup_id';
|
|
return $ret;
|
|
}
|
|
if(!isset($file_name)||empty($file_name)||!is_string($file_name)) {
|
|
$ret['error']='Invalid parameter param: file_name';
|
|
return $ret;
|
|
}
|
|
$backup_id=sanitize_key($backup_id);
|
|
$cache=WPvivid_taskmanager::get_download_cache($backup_id);
|
|
if($cache===false) {
|
|
$wpvivid_plugin->init_download($backup_id);
|
|
$cache=WPvivid_taskmanager::get_download_cache($backup_id);
|
|
}
|
|
$path=false;
|
|
if(array_key_exists($file_name,$cache['files'])) {
|
|
if($cache['files'][$file_name]['status']=='completed') {
|
|
$path=$cache['files'][$file_name]['download_path'];
|
|
$download_url = $cache['files'][$file_name]['download_url'];
|
|
}
|
|
}
|
|
if($path!==false) {
|
|
if (file_exists($path)) {
|
|
$ret['download_url'] = $download_url;
|
|
$ret['size'] = filesize($path);
|
|
}
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
public function set_general_setting($setting){
|
|
$ret=array();
|
|
try {
|
|
if(isset($setting)&&!empty($setting)) {
|
|
$json_setting = $setting;
|
|
$json_setting = stripslashes($json_setting);
|
|
$setting = json_decode($json_setting, true);
|
|
if (is_null($setting)) {
|
|
$ret['error']='bad parameter';
|
|
return $ret;
|
|
}
|
|
WPvivid_Setting::update_setting($setting);
|
|
}
|
|
|
|
$ret['result']='success';
|
|
}
|
|
catch (Exception $error) {
|
|
$message = 'An exception has occurred. class: '.get_class($error).';msg: '.$error->getMessage().';code: '.$error->getCode().';line: '.$error->getLine().';in_file: '.$error->getFile().';';
|
|
error_log($message);
|
|
return array('error'=>$message);
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
public function set_schedule($schedule){
|
|
$ret=array();
|
|
try {
|
|
if(isset($schedule)&&!empty($schedule)) {
|
|
$json = $schedule;
|
|
$json = stripslashes($json);
|
|
$schedule = json_decode($json, true);
|
|
if (is_null($schedule)) {
|
|
$ret['error']='bad parameter';
|
|
return $ret;
|
|
}
|
|
$ret=WPvivid_Schedule::set_schedule_ex($schedule);
|
|
if($ret['result']!='success') {
|
|
return $ret;
|
|
}
|
|
}
|
|
$ret['result']='success';
|
|
}
|
|
catch (Exception $error) {
|
|
$message = 'An exception has occurred. class: '.get_class($error).';msg: '.$error->getMessage().';code: '.$error->getCode().';line: '.$error->getLine().';in_file: '.$error->getFile().';';
|
|
error_log($message);
|
|
return array('error'=>$message);
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
public function set_remote($remote){
|
|
global $wpvivid_plugin;
|
|
$ret=array();
|
|
try {
|
|
if(isset($remote)&&!empty($remote)) {
|
|
$json = $remote;
|
|
$json = stripslashes($json);
|
|
$remote = json_decode($json, true);
|
|
if (is_null($remote)) {
|
|
$ret['error']='bad parameter';
|
|
return $ret;
|
|
}
|
|
$wpvivid_plugin->function_realize->_set_remote($remote);
|
|
}
|
|
$ret['result']='success';
|
|
}
|
|
catch (Exception $error) {
|
|
$message = 'An exception has occurred. class: '.get_class($error).';msg: '.$error->getMessage().';code: '.$error->getCode().';line: '.$error->getLine().';in_file: '.$error->getFile().';';
|
|
error_log($message);
|
|
return array('error'=>$message);
|
|
}
|
|
return $ret;
|
|
}
|
|
} |