|
Server IP : 89.107.187.42 / Your IP : 216.73.216.104 Web Server : Apache System : Linux sa4.serverdomain.org 6.1.0-48-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.172-1 (2026-05-15) x86_64 User : web86 ( 5140) PHP Version : 8.4.23 Disable Function : os,disk_total_space,sys_getloadavg,apache_child_terminate,apache_get_modules,apache_get_version,apache_getenv,apache_note,apache_setenv,disk_free_space,diskfreespace,dl,passthru,show_source,system,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF Directory (0755) : /var/www/clients/client40/web86/web/hp/wp-content/plugins/duplicator/ctrls/ |
| [ Home ] | [ C0mmand ] | [ Upload File ] |
|---|
<?php
use Duplicator\Libs\Snap\SnapUtil;
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
// Exit if accessed directly
if (! defined('DUPLICATOR_VERSION')) {
exit;
}
require_once(DUPLICATOR_PLUGIN_PATH . '/ctrls/ctrl.base.php');
require_once(DUPLICATOR_PLUGIN_PATH . '/classes/ui/class.ui.viewstate.php');
/**
* Controller for Tools
*
* @package Duplicator\ctrls
*/
class DUP_CTRL_UI extends DUP_CTRL_Base
{
public function __construct()
{
add_action('wp_ajax_DUP_CTRL_UI_SaveViewState', array($this, 'SaveViewState'));
}
/**
* Calls the SaveViewState and returns a JSON result
*
* @param string $_POST['key'] A unique key that identifies the state of the UI element
* @param bool $_POST['value'] The value to store for the state of the UI element
*
* @notes: Testing: See Testing Interface
* URL = /wp-admin/admin-ajax.php?action=DUP_CTRL_UI_SaveViewState
*
* <code>
* //JavaScript Ajax Request
* Duplicator.UI.SaveViewState('dup-pack-archive-panel', 1);
*
* //Call PHP Code
* $view_state = DUP_UI_ViewState::getValue('dup-pack-archive-panel');
* $ui_css_archive = ($view_state == 1) ? 'display:block' : 'display:none';
* </code>
*/
public function SaveViewState()
{
DUP_Handler::init_error_handler();
check_ajax_referer('DUP_CTRL_UI_SaveViewState', 'nonce');
DUP_Util::hasCapability('export');
$payload = array(
'success' => false,
'message' => '',
'key' => '',
'value' => ''
);
$isValid = true;
$states = false;
if (isset($_POST['states'])) {
$states = is_scalar($_POST['states']) ? [$_POST['states']] : $_POST['states'];
}
$mainKey = SnapUtil::sanitizeTextInput(INPUT_POST, 'key', false);
$mainValue = SnapUtil::sanitizeTextInput(INPUT_POST, 'value', false);
if ($states !== false) {
foreach ($states as $index => $state) {
$key = isset($state['key']) ? SnapUtil::sanitizeNSCharsNewline($state['key']) : false;
$value = isset($state['value']) ? SnapUtil::sanitizeNSCharsNewline($state['value']) : false;
if ($key == false && $value == false) {
$isValid = false;
break;
}
$states[$index] = [
'key' => $key,
'value' => $value,
];
}
}
if ($states === false && ($mainKey === false || $mainValue === false)) {
$isValid = false;
}
$result = new DUP_CTRL_Result($this);
try {
if (!$isValid) {
throw new Exception(__('Invalid Request.', 'duplicator'));
}
if ($states !== false && count($states) > 0) {
$view_state = DUP_UI_ViewState::getArray();
$last_key = '';
foreach ($states as $state) {
$view_state[$state['key']] = $state['value'];
$last_key = $state['key'];
}
$payload['success'] = DUP_UI_ViewState::setArray($view_state);
$payload['key'] = esc_html($last_key);
$payload['value'] = esc_html($view_state[$last_key]);
} else {
$payload['success'] = DUP_UI_ViewState::save($mainKey, $mainValue);
$payload['key'] = esc_html($mainKey);
$payload['value'] = esc_html($mainValue);
}
//RETURN RESULT
$test = ($payload['success'])
? DUP_CTRL_Status::SUCCESS
: DUP_CTRL_Status::FAILED;
return $result->process($payload, $test);
} catch (Exception $exc) {
$result->processError($exc);
}
}
/**
* Returns a JSON list of all saved view state items
*
* <code>
* See SaveViewState()
* </code>
*/
public function GetViewStateList()
{
$result = new DUP_CTRL_Result($this);
try {
//CONTROLLER LOGIC
$payload = DUP_UI_ViewState::getArray();
//RETURN RESULT
$test = (is_array($payload) && count($payload))
? DUP_CTRL_Status::SUCCESS
: DUP_CTRL_Status::FAILED;
return $result->process($payload, $test);
} catch (Exception $exc) {
$result->processError($exc);
}
}
}