'error', 'code' => $response->get_error_code(), 'message' => $response->get_error_message());
} else {
if (isset($response['status'])) {
if ('error' === $response['status']) {
$response = array(
'status' => 'error',
'code' => isset($response['code']) ? $response['code'] : -1,
'message' => isset($response['message']) ? $response['message'] : $this->translate_message('generic'),
'response' => $response,
);
}
} else {
$response = array('status' => 'error', 'message' => $this->translate_message('generic'));
}
}
return $response;
}
/**
* Executes login or registration process. Connects and sends request to the UpdraftClone
* and returns the response coming from the server
*
* @internal
* @param array $data The submitted form data
* @param boolean $register Indicates whether the current call is for a registration process or not. Defaults to false. Currently will always be false.
* @return array - The response from the request
*/
protected function login_or_register($data, $register = false) {
$action = ($register) ? 'updraftplus_clone_register' : 'updraftplus_clone_login';
if (empty($data['site_url'])) $data['site_url'] = trailingslashit(network_site_url());
$response = $this->send_remote_request($data, $action);
return $this->parse_response($response);
}
/**
* The ajax based request point of entry for the create clone process
*
* @param array $data - The submitted form data
*
* @return array - Response of the process
*/
public function ajax_process_clone($data = array()) {
try {
if (isset($data['form_data']) && is_array($data['form_data'])) {
$form_data = $data['form_data'];
}
$response = $this->create_clone($form_data);
} catch (Exception $e) {
$response = array('error' => true, 'message' => $e->getMessage());
}
return $response;
}
/**
* Executes the create clone process. Connects and sends request to the UpdraftClone and returns the response coming from the server
*
* @internal
* @param array $data - The submitted form data
* @return array - The response from the request
*/
public function create_clone($data) {
global $updraftplus, $table_prefix;
$action = 'updraftplus_clone_create';
if (empty($data['site_url'])) $data['site_url'] = trailingslashit(network_site_url());
// translators: %s: site URL with trailing slash
if (empty($data['label'])) $data['label'] = sprintf(__('Clone of %s', 'updraftplus'), trailingslashit(network_site_url()));
if (empty($data['install_info']['table_prefix'])) $data['install_info']['table_prefix'] = $table_prefix;
$subdirectory = parse_url(network_site_url(), PHP_URL_PATH);
if (empty($data['install_info']['package'])) $data['install_info']['package'] = 'starter';
if (empty($data['install_info']['subdirectory'])) $data['install_info']['subdirectory'] = !empty($subdirectory) ? $subdirectory : '/';
if (empty($data['install_info']['locale'])) $data['install_info']['locale'] = get_locale();
if (empty($data['install_info']['owner_id']) && empty($data['install_info']['owner_login'])) {
$user = wp_get_current_user();
$data['install_info']['owner_id'] = $user->ID;
$data['install_info']['owner_login'] = $user->user_login;
}
if (is_multisite()) {
$data['install_info']['multisite'] = true;
$data['install_info']['multisite_type'] = is_subdomain_install() ? 'subdomain' : 'subfolder';
}
if (empty($data['install_info']['requested_by'])) $data['install_info']['requested_by'] = $updraftplus->version;
$response = $this->send_remote_request($data, $action);
return $this->parse_response($response);
}
/**
* Executes the clone status process. Connects and sends request to the UpdraftClone and returns the response coming from the server
*
* @internal
* @param array $data - The submitted form data
* @return array - The response from the request
*/
public function clone_status($data) {
$action = 'updraftplus_clone_status';
if (empty($data['site_url'])) $data['site_url'] = trailingslashit(network_site_url());
$response = $this->send_remote_request($data, $action);
return $this->parse_response($response);
}
/**
* Executes the clone info poll. Connects and sends request to the UpdraftClone and returns the response coming from the server
*
* @internal
* @param array $data - The submitted form data
* @return array - The response from the request
*/
public function clone_info_poll($data) {
$action = 'updraftplus_clone_info_poll';
if (empty($data['site_url'])) $data['site_url'] = trailingslashit(network_site_url());
$response = $this->send_remote_request($data, $action);
return $this->parse_response($response);
}
/**
* Executes the backup checkin. Connects and sends request to UpdraftPlus and returns the response coming from the server
*
* @internal
* @param array $data - The submitted form data
* @return array - The response from the request
*/
public function backup_checkin($data) {
$action = 'updraftplus_backup_checkin';
if (empty($data['site_url'])) $data['site_url'] = trailingslashit(network_site_url());
if (!empty($data['log_contents'])) {
$data['log_contents'] = base64_encode(gzcompress($data['log_contents']));
$data['format'] = 'gzcompress';
}
$response = $this->send_remote_request($data, $action);
return $this->parse_response($response);
}
/**
* Executes the clone failed delete process. Connects and sends request to the UpdraftClone and returns the response coming from the server
*
* @internal
* @param array $data - The submitted form data
* @return array - The response from the request
*/
public function clone_failed_delete($data) {
$action = 'updraftplus_clone_failed_delete';
if (empty($data['site_url'])) $data['site_url'] = trailingslashit(network_site_url());
$response = $this->send_remote_request($data, $action);
return $this->parse_response($response);
}
}