137 lines
5.0 KiB
PHP
137 lines
5.0 KiB
PHP
<?php
|
|
/**
|
|
* Created by PhpStorm.
|
|
* User: alienware`x
|
|
* Date: 2019/1/22
|
|
* Time: 9:19
|
|
*/
|
|
|
|
require_once WPVIVID_PLUGIN_DIR .'/includes/customclass/class-wpvivid-remote-default.php';
|
|
require_once WPVIVID_PLUGIN_DIR .'/includes/customclass/class-wpvivid-ftpclass.php';
|
|
require_once WPVIVID_PLUGIN_DIR. '/includes/customclass/class-wpvivid-sftpclass.php';
|
|
require_once WPVIVID_PLUGIN_DIR . '/includes/customclass/class-wpvivid-amazons3-plus.php';
|
|
require_once WPVIVID_PLUGIN_DIR . '/includes/customclass/class-wpvivid-google-drive.php';
|
|
require_once WPVIVID_PLUGIN_DIR . '/includes/customclass/class-wpvivid-dropbox.php';
|
|
require_once WPVIVID_PLUGIN_DIR . '/includes/customclass/class-wpvivid-one-drive.php';
|
|
require_once WPVIVID_PLUGIN_DIR . '/includes/customclass/class-wpvivid-s3compat.php';
|
|
|
|
|
|
class WPvivid_Remote_collection
|
|
{
|
|
private $remote_collection=array();
|
|
|
|
public function __construct()
|
|
{
|
|
add_filter('wpvivid_remote_register', array($this, 'init_remotes'),10);
|
|
$this->remote_collection=apply_filters('wpvivid_remote_register',$this->remote_collection);
|
|
$this->load_hooks();
|
|
}
|
|
|
|
public function get_remote($remote)
|
|
{
|
|
if(is_array($remote)&&array_key_exists('type',$remote)&&array_key_exists($remote['type'],$this->remote_collection))
|
|
{
|
|
$class_name =$this->remote_collection[$remote['type']];
|
|
|
|
if(class_exists($class_name))
|
|
{
|
|
$object = new $class_name($remote);
|
|
return $object;
|
|
}
|
|
}
|
|
$object = new $this ->remote_collection['default']();
|
|
return $object;
|
|
}
|
|
|
|
public function add_remote($remote_option)
|
|
{
|
|
$remote=$this->get_remote($remote_option);
|
|
|
|
$ret=$remote->sanitize_options();
|
|
|
|
if($ret['result']=='success')
|
|
{
|
|
$remote_option=$ret['options'];
|
|
$ret=$remote->test_connect();
|
|
if($ret['result']=='success')
|
|
{
|
|
$ret=array();
|
|
$default=$remote_option['default'];
|
|
$id=WPvivid_Setting::add_remote_options($remote_option);
|
|
if($default==1)
|
|
{
|
|
$remote_ids[]=$id;
|
|
$remote_ids=apply_filters('wpvivid_before_add_user_history',$remote_ids);
|
|
WPvivid_Setting::update_user_history('remote_selected',$remote_ids);
|
|
$schedule_data = WPvivid_Setting::get_option('wpvivid_schedule_setting');
|
|
if(!empty($schedule_data['enable'])) {
|
|
if ($schedule_data['enable'] == 1) {
|
|
$schedule_data['backup']['local'] = 0;
|
|
$schedule_data['backup']['remote'] = 1;
|
|
}
|
|
WPvivid_Setting::update_option('wpvivid_schedule_setting', $schedule_data);
|
|
}
|
|
}
|
|
$ret['result']=WPVIVID_SUCCESS;
|
|
}
|
|
else {
|
|
$id = uniqid('wpvivid-');
|
|
$log_file_name = $id . '_add_remote';
|
|
$log = new WPvivid_Log();
|
|
$log->CreateLogFile($log_file_name, 'no_folder', 'Add Remote Test Connection');
|
|
$log->WriteLog('Remote Type: '.$remote_option['type'], 'notice');
|
|
if(isset($ret['error'])) {
|
|
$log->WriteLog($ret['error'], 'notice');
|
|
}
|
|
$log->CloseFile();
|
|
WPvivid_error_log::create_error_log($log->log_file);
|
|
}
|
|
}
|
|
|
|
return $ret;
|
|
}
|
|
|
|
public function update_remote($id,$remote_option)
|
|
{
|
|
$remote=$this->get_remote($remote_option);
|
|
|
|
$old_remote=WPvivid_Setting::get_remote_option($id);
|
|
|
|
$ret=$remote->sanitize_options($old_remote['name']);
|
|
if($ret['result']=='success')
|
|
{
|
|
$remote_option=$ret['options'];
|
|
$ret=$remote->test_connect();
|
|
if($ret['result']=='success')
|
|
{
|
|
$ret=array();
|
|
WPvivid_Setting::update_remote_option($id,$remote_option);
|
|
$ret['result']=WPVIVID_SUCCESS;
|
|
}
|
|
}
|
|
|
|
return $ret;
|
|
}
|
|
|
|
public function init_remotes($remote_collection)
|
|
{
|
|
$remote_collection['default'] = 'WPvivid_Remote_Defult';
|
|
$remote_collection['sftp']='WPvivid_SFTPClass';
|
|
$remote_collection['ftp']='WPvivid_FTPClass';
|
|
$remote_collection['amazons3']='WPvivid_AMAZONS3Class';
|
|
$remote_collection[WPVIVID_REMOTE_GOOGLEDRIVE] = 'Wpvivid_Google_drive';
|
|
$remote_collection['dropbox']='WPvivid_Dropbox';
|
|
$remote_collection[WPVIVID_REMOTE_ONEDRIVE] = 'Wpvivid_one_drive';
|
|
$remote_collection[WPVIVID_REMOTE_S3COMPAT] = 'Wpvivid_S3Compat';
|
|
$remote_collection[WPVIVID_REMOTE_SEND_TO_SITE] = 'WPvivid_Send_to_site';
|
|
return $remote_collection;
|
|
}
|
|
|
|
public function load_hooks()
|
|
{
|
|
foreach ($this->remote_collection as $class_name)
|
|
{
|
|
$object = new $class_name();
|
|
}
|
|
}
|
|
} |