| Server IP : 185.11.201.71 / Your IP : 192.168.7.18 Web Server : Apache/2.4.29 (Ubuntu) System : Linux tech-virtual-machine 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64 User : tech ( 1000) PHP Version : 7.4.28 Disable Function : 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_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /proc/self/cwd/wp-content/plugins/webp-converter-for-media/src/Settings/ |
Upload File : |
<?php
namespace WebpConverter\Settings;
use WebpConverter\Conversion\Format\AvifFormat;
use WebpConverter\Conversion\Format\WebpFormat;
use WebpConverter\Conversion\Method\RemoteMethod;
use WebpConverter\PluginData;
use WebpConverter\Repository\TokenRepository;
use WebpConverter\Service\OptionsAccessManager;
use WebpConverter\Service\TokenValidator;
use WebpConverter\Settings\Option\AccessTokenOption;
use WebpConverter\Settings\Option\ConversionMethodOption;
use WebpConverter\Settings\Option\OutputFormatsOption;
/**
* Supports saving plugin settings on plugin settings page.
*/
class SettingsManager {
const SETTINGS_OPTION = 'webpc_settings';
const FORM_TYPE_PARAM_KEY = 'webpc_form_type';
const NONCE_PARAM_KEY = 'webpc_nonce';
const NONCE_PARAM_VALUE = 'webpc-save';
/**
* @var PluginData
*/
private $plugin_data;
/**
* @var TokenValidator
*/
private $token_validator;
public function __construct(
PluginData $plugin_data,
TokenRepository $token_repository,
TokenValidator $token_validator = null
) {
$this->plugin_data = $plugin_data;
$this->token_validator = $token_validator ?: new TokenValidator( $token_repository );
}
/**
* @param mixed[]|null $post_data .
*
* @return void
*/
public function save_settings( array $post_data = null ) {
$previous_settings = $this->plugin_data->get_plugin_settings();
$posted_settings = ( $post_data !== null )
? $this->plugin_data->validate_plugin_settings( $post_data, $post_data[ self::FORM_TYPE_PARAM_KEY ] ?? null )
: [];
$plugin_settings = array_merge( $previous_settings, $posted_settings );
$token = $this->token_validator->validate_token( $plugin_settings[ AccessTokenOption::OPTION_NAME ] );
if ( $token->get_valid_status() ) {
$plugin_settings[ ConversionMethodOption::OPTION_NAME ] = RemoteMethod::METHOD_NAME;
if ( isset( $posted_settings[ AccessTokenOption::OPTION_NAME ] ) || ! $plugin_settings[ OutputFormatsOption::OPTION_NAME ] ) {
$plugin_settings[ OutputFormatsOption::OPTION_NAME ] = [
AvifFormat::FORMAT_EXTENSION,
WebpFormat::FORMAT_EXTENSION,
];
}
} elseif ( ( $plugin_settings[ ConversionMethodOption::OPTION_NAME ] === RemoteMethod::METHOD_NAME )
&& ! $plugin_settings[ AccessTokenOption::OPTION_NAME ] ) {
$plugin_settings[ ConversionMethodOption::OPTION_NAME ] = '';
}
$plugin_settings = $this->plugin_data->validate_plugin_settings( $plugin_settings );
OptionsAccessManager::update_option( self::SETTINGS_OPTION, $plugin_settings );
$this->plugin_data->invalidate_plugin_settings();
do_action( 'webpc_settings_updated', $plugin_settings, $previous_settings );
}
}