File "class-wpvivid-remote-collection.php"
Full Path: /home/safaelji/blog.automotomaroc.com/wp-content/plugins/wpvivid-backuprestore/includes/class-wpvivid-remote-collection.php
File size: 5.11 KB
MIME-type: text/x-php
Charset: utf-8
<?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();
}
}
}