File "WPDA_Settings_Plugin.php"
Full Path: /home/vantageo/public_html/cache/cache/cache/.wp-cli/wp-content/plugins/wp-data-access/WPDataAccess/Settings/WPDA_Settings_Plugin.php
File size: 42.31 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace WPDataAccess\Settings;
use WPDataAccess\Connection\WPDADB;
use WPDataAccess\Utilities\WPDA_Message_Box;
use WPDataAccess\WPDA;
class WPDA_Settings_Plugin extends WPDA_Settings {
protected function add_content() {
// Add datetimepicker
wp_enqueue_style( 'datetimepicker' );
wp_enqueue_script( 'datetimepicker' );
if ( isset( $_REQUEST['action'] ) ) {
$action = sanitize_text_field( wp_unslash( $_REQUEST['action'] ) );
// input var okay.
// Security check.
if ( 'delete_remote_database' === $action ) {
$wp_nonce = ( isset( $_REQUEST['_wpnoncedelrdb'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['_wpnoncedelrdb'] ) ) : '' );
// input var okay.
if ( !wp_verify_nonce( $wp_nonce, 'wpda-delete-remote-database-' . WPDA::get_current_user_login() ) ) {
wp_die( __( 'ERROR: Not authorized', 'wp-data-access' ) );
}
if ( isset( $_REQUEST['remote_database_name'] ) ) {
$remote_database_name = sanitize_text_field( wp_unslash( $_REQUEST['remote_database_name'] ) );
// input var okay.
WPDADB::del_remote_database( $remote_database_name );
}
} elseif ( 'update_remote_database' === $action ) {
$wp_nonce = ( isset( $_REQUEST['_wpnonceupdrdb'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['_wpnonceupdrdb'] ) ) : '' );
// input var okay.
if ( !wp_verify_nonce( $wp_nonce, 'wpda-update-remote-database-' . WPDA::get_current_user_login() ) ) {
wp_die( __( 'ERROR: Not authorized', 'wp-data-access' ) );
}
$database_old = ( isset( $_REQUEST['remote_database_old'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['remote_database_old'] ) ) : '' );
// input var okay.
$database = ( isset( $_REQUEST['remote_database'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['remote_database'] ) ) : '' );
// input var okay.
$host = ( isset( $_REQUEST['remote_host'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['remote_host'] ) ) : '' );
// input var okay.
$username = ( isset( $_REQUEST['remote_user'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['remote_user'] ) ) : '' );
// input var okay.
$password = ( isset( $_REQUEST['remote_passwd'] ) ? wp_unslash( $_REQUEST['remote_passwd'] ) : '' );
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
$port = ( isset( $_REQUEST['remote_port'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['remote_port'] ) ) : '' );
// input var okay.
$schema = ( isset( $_REQUEST['remote_schema'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['remote_schema'] ) ) : '' );
// input var okay.
$enabled = ( isset( $_REQUEST['remote_enabled'] ) ? true : false );
// Add ssl
$remote_ssl = ( isset( $_REQUEST['remote_ssl'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['remote_ssl'] ) ) : 'off' );
// input var okay.
$remote_client_key = ( isset( $_REQUEST['remote_client_key'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['remote_client_key'] ) ) : '' );
// input var okay.
$remote_client_certificate = ( isset( $_REQUEST['remote_client_certificate'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['remote_client_certificate'] ) ) : '' );
// input var okay.
$remote_ca_certificate = ( isset( $_REQUEST['remote_ca_certificate'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['remote_ca_certificate'] ) ) : '' );
// input var okay.
$remote_certificate_path = ( isset( $_REQUEST['remote_certificate_path'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['remote_certificate_path'] ) ) : '' );
// input var okay.
$remote_specified_cipher = ( isset( $_REQUEST['remote_specified_cipher'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['remote_specified_cipher'] ) ) : '' );
// input var okay.
if ( '' === $database_old || '' === $database || '' === $host || '' === $username || '' === $password || '' === $port || '' === $schema || '' === $enabled ) {
$msg = new WPDA_Message_Box(array(
'message_text' => sprintf( __( 'Cannot save remote database connection [missing arguments]', 'wp-data-access' ) ),
'message_type' => 'error',
'message_is_dismissible' => false,
));
$msg->box();
} else {
WPDADB::upd_remote_database(
$database,
$host,
$username,
$password,
$port,
$schema,
!$enabled,
$database_old,
$remote_ssl,
$remote_client_key,
$remote_client_certificate,
$remote_ca_certificate,
$remote_certificate_path,
$remote_specified_cipher
);
}
} else {
$wp_nonce = ( isset( $_REQUEST['_wpnonce'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['_wpnonce'] ) ) : '' );
// input var okay.
if ( !wp_verify_nonce( $wp_nonce, 'wpda-plugin-settings-' . WPDA::get_current_user_login() ) ) {
wp_die( __( 'ERROR: Not authorized', 'wp-data-access' ) );
}
if ( 'save' === $action ) {
WPDA::set_option( WPDA::OPTION_PLUGIN_HIDE_NOTICES, ( isset( $_REQUEST['hide_foreign_notices'] ) ? 'on' : 'off' ) );
WPDA::set_option( WPDA::OPTION_PLUGIN_HIDE_ADMIN_MENU, ( isset( $_REQUEST['hide_admin_menu'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['hide_admin_menu'] ) ) : 'off' ) );
if ( isset( $_REQUEST['panel_cookies'] ) ) {
WPDA::set_option( WPDA::OPTION_PLUGIN_PANEL_COOKIES, sanitize_text_field( wp_unslash( $_REQUEST['panel_cookies'] ) ) );
}
if ( !isset( $_REQUEST['secret_key'] ) || !isset( $_REQUEST['secret_iv'] ) ) {
// Leave both values untouched
} else {
$secret_key_old = WPDA::get_option( WPDA::OPTION_PLUGIN_SECRET_KEY );
$secret_iv_old = WPDA::get_option( WPDA::OPTION_PLUGIN_SECRET_IV );
$secret_key_new = sanitize_text_field( wp_unslash( $_REQUEST['secret_key'] ) );
// input var okay.
$secret_iv_new = sanitize_text_field( wp_unslash( $_REQUEST['secret_iv'] ) );
// input var okay.
if ( $secret_key_old !== $secret_key_new || $secret_iv_old !== $secret_iv_new ) {
// Update existing remote databases
WPDADB::load_remote_databases();
// load remote databases with old secret key and iv
WPDA::set_option( WPDA::OPTION_PLUGIN_SECRET_KEY, $secret_key_new );
// update secret key
WPDA::set_option( WPDA::OPTION_PLUGIN_SECRET_IV, $secret_iv_new );
// update secret iv
WPDADB::save_remote_databases();
// save remote databases with new secret key and iv
}
}
if ( isset( $_REQUEST['remote_database_name'] ) && isset( $_REQUEST['remote_database_enabled'] ) ) {
if ( is_array( $_REQUEST['remote_database_name'] ) && is_array( $_REQUEST['remote_database_enabled'] ) && count( $_REQUEST['remote_database_name'] ) === count( $_REQUEST['remote_database_enabled'] ) ) {
$i = 0;
while ( $i < count( $_REQUEST['remote_database_name'] ) ) {
//phpcs:ignore - 8.1 proof
$rdb_name = sanitize_text_field( wp_unslash( $_REQUEST['remote_database_name'][$i] ) );
$dbs = WPDADB::get_remote_database( $rdb_name, true );
if ( !$dbs ) {
$msg = new WPDA_Message_Box(array(
'message_text' => __( 'Remote database connection not found', 'wp-data-access' ),
'message_type' => 'error',
'message_is_dismissible' => false,
));
$msg->box();
} else {
WPDADB::upd_remote_database(
$rdb_name,
$dbs['host'],
$dbs['username'],
$dbs['password'],
$dbs['port'],
$dbs['database'],
$_REQUEST['remote_database_enabled'][$i] === 'FALSE',
false,
$dbs['ssl'],
$dbs['ssl_key'],
$dbs['ssl_cert'],
$dbs['ssl_ca'],
$dbs['ssl_path'],
$dbs['ssl_cipher']
);
}
$i++;
}
WPDADB::save_remote_databases();
// save changes
}
}
WPDA::set_option( WPDA::OPTION_PLUGIN_WPDATAACCESS_POST, ( isset( $_REQUEST['wpdataaccess_post'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['wpdataaccess_post'] ) ) : 'off' ) );
WPDA::set_option( WPDA::OPTION_PLUGIN_WPDATAACCESS_PAGE, ( isset( $_REQUEST['wpdataaccess_page'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['wpdataaccess_page'] ) ) : 'off' ) );
WPDA::set_option( WPDA::OPTION_PLUGIN_WPDADIEHARD_POST, ( isset( $_REQUEST['wpdadiehard_post'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['wpdadiehard_post'] ) ) : 'off' ) );
WPDA::set_option( WPDA::OPTION_PLUGIN_WPDADIEHARD_PAGE, ( isset( $_REQUEST['wpdadiehard_page'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['wpdadiehard_page'] ) ) : 'off' ) );
WPDA::set_option( WPDA::OPTION_PLUGIN_WPDADATAFORMS_POST, ( isset( $_REQUEST['wpdadataforms_post'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['wpdadataforms_post'] ) ) : 'off' ) );
WPDA::set_option( WPDA::OPTION_PLUGIN_WPDADATAFORMS_PAGE, ( isset( $_REQUEST['wpdadataforms_page'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['wpdadataforms_page'] ) ) : 'off' ) );
WPDA::set_option( WPDA::OPTION_PLUGIN_DEBUG, ( isset( $_REQUEST['debug'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['debug'] ) ) : 'off' ) );
if ( isset( $_REQUEST['date_format'] ) ) {
WPDA::set_option( WPDA::OPTION_PLUGIN_DATE_FORMAT, sanitize_text_field( wp_unslash( $_REQUEST['date_format'] ) ) );
}
if ( isset( $_REQUEST['date_placeholder'] ) ) {
WPDA::set_option( WPDA::OPTION_PLUGIN_DATE_PLACEHOLDER, sanitize_text_field( wp_unslash( $_REQUEST['date_placeholder'] ) ) );
}
if ( isset( $_REQUEST['time_format'] ) ) {
WPDA::set_option( WPDA::OPTION_PLUGIN_TIME_FORMAT, sanitize_text_field( wp_unslash( $_REQUEST['time_format'] ) ) );
}
if ( isset( $_REQUEST['time_placeholder'] ) ) {
WPDA::set_option( WPDA::OPTION_PLUGIN_TIME_PLACEHOLDER, sanitize_text_field( wp_unslash( $_REQUEST['time_placeholder'] ) ) );
}
if ( isset( $_REQUEST['set_format'] ) ) {
WPDA::set_option( WPDA::OPTION_PLUGIN_SET_FORMAT, sanitize_text_field( wp_unslash( $_REQUEST['set_format'] ) ) );
}
} elseif ( 'setdefaults' === $action ) {
// Set all back-end settings back to default.
WPDA::get_option( WPDA::OPTION_PLUGIN_HIDE_NOTICES );
WPDA::set_option( WPDA::OPTION_PLUGIN_HIDE_ADMIN_MENU );
WPDA::set_option( WPDA::OPTION_PLUGIN_PANEL_COOKIES );
// DO NOT RESET SECRET KEY AND IV
// DO NOT RESET RDBs
WPDA::set_option( WPDA::OPTION_PLUGIN_WPDATAACCESS_POST );
WPDA::set_option( WPDA::OPTION_PLUGIN_WPDATAACCESS_PAGE );
WPDA::set_option( WPDA::OPTION_PLUGIN_WPDADIEHARD_POST );
WPDA::set_option( WPDA::OPTION_PLUGIN_WPDADIEHARD_PAGE );
WPDA::set_option( WPDA::OPTION_PLUGIN_WPDADATAFORMS_POST );
WPDA::set_option( WPDA::OPTION_PLUGIN_WPDADATAFORMS_PAGE );
WPDA::set_option( WPDA::OPTION_PLUGIN_DEBUG );
WPDA::set_option( WPDA::OPTION_PLUGIN_DATE_FORMAT );
WPDA::set_option( WPDA::OPTION_PLUGIN_DATE_PLACEHOLDER );
WPDA::set_option( WPDA::OPTION_PLUGIN_TIME_FORMAT );
WPDA::set_option( WPDA::OPTION_PLUGIN_TIME_PLACEHOLDER );
WPDA::set_option( WPDA::OPTION_PLUGIN_SET_FORMAT );
}
}
$msg = new WPDA_Message_Box(array(
'message_text' => __( 'Settings saved', 'wp-data-access' ),
));
$msg->box();
} elseif ( isset( $_REQUEST['msg'] ) && 'ok' === $_REQUEST['msg'] ) {
$msg = new WPDA_Message_Box(array(
'message_text' => __( 'Settings saved', 'wp-data-access' ),
));
$msg->box();
}
// Get options.
$hide_foreign_notices = WPDA::get_option( WPDA::OPTION_PLUGIN_HIDE_NOTICES );
$hide_admin_menu = WPDA::get_option( WPDA::OPTION_PLUGIN_HIDE_ADMIN_MENU );
$panel_cookies = WPDA::get_option( WPDA::OPTION_PLUGIN_PANEL_COOKIES );
$secret_key = WPDA::get_option( WPDA::OPTION_PLUGIN_SECRET_KEY );
$secret_iv = WPDA::get_option( WPDA::OPTION_PLUGIN_SECRET_IV );
$wpdataaccess_post = WPDA::get_option( WPDA::OPTION_PLUGIN_WPDATAACCESS_POST );
$wpdataaccess_page = WPDA::get_option( WPDA::OPTION_PLUGIN_WPDATAACCESS_PAGE );
$wpdadiehard_post = WPDA::get_option( WPDA::OPTION_PLUGIN_WPDADIEHARD_POST );
$wpdadiehard_page = WPDA::get_option( WPDA::OPTION_PLUGIN_WPDADIEHARD_PAGE );
$wpdadataforms_post = WPDA::get_option( WPDA::OPTION_PLUGIN_WPDADATAFORMS_POST );
$wpdadataforms_page = WPDA::get_option( WPDA::OPTION_PLUGIN_WPDADATAFORMS_PAGE );
$debug = WPDA::get_option( WPDA::OPTION_PLUGIN_DEBUG );
$date_format = WPDA::get_option( WPDA::OPTION_PLUGIN_DATE_FORMAT );
$date_placeholder = WPDA::get_option( WPDA::OPTION_PLUGIN_DATE_PLACEHOLDER );
$time_format = WPDA::get_option( WPDA::OPTION_PLUGIN_TIME_FORMAT );
$time_placeholder = WPDA::get_option( WPDA::OPTION_PLUGIN_TIME_PLACEHOLDER );
$set_format = WPDA::get_option( WPDA::OPTION_PLUGIN_SET_FORMAT );
$remote_databases = WPDADB::get_remote_databases( true );
?>
<style type="text/css">
.settings_line {
line-height: 2.4;
}
.settings_label {
display: inline-block;
width: 7em;
font-weight: bold;
}
.item_width {
width: 14em;
}
.item_label {
width: 14.9em;
display: inline-block;
padding-left: 0.3em;
}
.item_label_text {
width: 7em;
display: inline-block;
}
.item_label_format {
width: 5em;
padding: 0.6em;
border-radius: 4px;
}
.item_label_align {
float: right;
}
#wpda_update_database_popup {
display: none;
padding: 10px;
position: absolute;
top: 30px;
left: 10px;
color: black;
overflow-y: auto;
background-color: white;
border: 1px solid #ccc;
width: max-content;
}
#wpda_update_database_popup_header {
background-color: #ccc;
height: 30px;
padding: 10px;
margin-bottom: 10px;
}
</style>
<script type='text/javascript'>
jQuery(function () {
jQuery('.radio_date_format').on('click', function() {
jQuery('#date_format').val(jQuery(this).val());
});
jQuery('.radio_time_format').on('click', function() {
jQuery('#time_format').val(jQuery(this).val());
});
jQuery.datetimepicker.setLocale('<?php
echo esc_attr( substr( get_locale(), 0, 2 ) );
?>');
jQuery('#test_datetime').attr('autocomplete', 'off');
jQuery('#init_datetime').on('click', function() {
jQuery('#test_datetime').datetimepicker({
format: jQuery('#date_format').val() + ' ' + jQuery('#time_format').val(),
datepicker: true,
timepicker: true
});
jQuery('#init_datetime').toggle();
jQuery('#test_datetime').toggle();
jQuery('#test_datetime').val('');
jQuery('#test_datetime').attr('placeholder', jQuery('#date_placeholder').val() + ' ' + jQuery('#time_placeholder').val());
});
jQuery('#test_datetime').on('blur', function() {
jQuery('#test_datetime').toggle();
jQuery('#init_datetime').toggle();
});
});
function delete_remote_database(id) {
remote_database_name = jQuery('#remote_database_name' + id).val();
if (confirm("<?php
echo __( 'Delete remote database connection from plugin repository?', 'wp-data-access' );
?>")) {
jQuery('#delete_remote_database_name').val(remote_database_name);
jQuery('#wpda_delete_database').submit();
}
}
function update_rdb_setting(id) {
if (jQuery('#remote_database' + id).is(':checked')) {
jQuery('#remote_database_enabled' + id).val('TRUE');
} else {
jQuery('#remote_database_enabled' + id).val('FALSE');
}
}
function edit_rdb_setting(id) {
jQuery('#wpda_update_database_popup').show();
jQuery('#remote_database_old').val(id);
jQuery('#remote_database').val(id);
jQuery('#remote_host').val(remote_databases[id].host);
jQuery('#remote_user').val(remote_databases[id].username);
jQuery('#remote_passwd').val(remote_databases[id].password);
jQuery('#remote_port').val(remote_databases[id].port);
jQuery('#remote_schema').val(remote_databases[id].database);
jQuery('#remote_enabled').prop('checked', !remote_databases[id].disabled);
jQuery('#remote_ssl').prop('checked', remote_databases[id].ssl==="on");//.val(remote_databases[id].ssl);
jQuery('#remote_client_key').val(remote_databases[id].ssl_key);
jQuery('#remote_client_certificate').val(remote_databases[id].ssl_cert);
jQuery('#remote_ca_certificate').val(remote_databases[id].ssl_ca);
jQuery('#remote_certificate_path').val(remote_databases[id].ssl_path);
jQuery('#remote_specified_cipher').val(remote_databases[id].ssl_cipher);
if (remote_databases[id].ssl==="on") {
jQuery('#remote_database_block_ssl').show();
} else {
jQuery('#remote_database_block_ssl').hide();
}
}
function test_remote_clear(mode = '') {
jQuery('#' + mode + 'remote_database_block_test_content').html('');
jQuery('#' + mode + 'remote_database_block_test').hide();
jQuery('#' + mode + 'remote_clear_button').hide();
}
function test_remote_connection(mode = '') {
host = jQuery('#remote_host').val();
user = jQuery('#remote_user').val();
pass = jQuery('#remote_passwd').val();
port = jQuery('#remote_port').val();
dbs = jQuery('#remote_schema').val();
url = '//' + window.location.host + window.location.pathname.replace('options-general','admin') +
'?action=wpda_check_remote_database_connection';
jQuery('#remote_test_button').val('Testing...');
jQuery.ajax({
method: 'POST',
url: url,
data: {
host: host,
user: user,
passwd: pass,
port: port,
schema: dbs
}
}).done(
function (msg) {
jQuery('#remote_database_block_test_content').html(msg);
jQuery('#remote_database_block_test').show();
}
).fail(
function () {
jQuery('#remote_database_block_test_content').html('Preparing connection...<br/>Establishing connection...<br/><br/><strong>Remote database connection invalid</strong>');
jQuery('#remote_database_block_test').show();
}
).always(
function () {
jQuery('#remote_test_button').val('Test');
jQuery('#remote_clear_button').show();
}
);
}
jQuery(function () {
jQuery('#remote_database').keydown(function(e) {
var field = this;
setTimeout(function () {
if (field.value.indexOf('rdb:') !== 0) {
jQuery(field).val('rdb:');
}
}, 1);
});
});
var remote_databases = new Object();
<?php
foreach ( $remote_databases as $key => $value ) {
echo "remote_databases['{$key}'] = " . json_encode( $value ) . ';';
// phpcs:ignore WordPress.Security.EscapeOutput
}
?>
</script>
<div id="wpda_update_database_popup">
<div id="wpda_update_database_popup_header">
<span style="display:inline-block;margin-top:5px;">
<strong>
<?php
echo __( 'Edit Remote Database Connection', 'wp-data-access' );
?>
</strong>
</span>
<span class="button" style="float:right;height:10px;"
onclick="jQuery('#wpda_update_database_popup').hide()">x</span><br/>
</div>
<form id="wpda_update_database" method="post"
action="?page=<?php
echo esc_attr( $this->page );
?>&tab=plugin">
<div>
<label for="remote_database" style="vertical-align:baseline;"
class="database_item_label">Database name:</label>
<input type="text" name="remote_database" id="remote_database" value="rdb:">
<span>(local WordPress dashboard)</span>
<div style="height:10px;"></div>
<label for="remote_host" style="vertical-align:baseline;" class="database_item_label">MySQL host:</label>
<input type="text" name="remote_host" id="remote_host">
<span>(ip address or hostname)</span>
<br/>
<label for="remote_user" style="vertical-align:baseline;" class="database_item_label">MySQL username:</label>
<input type="text" name="remote_user" id="remote_user">
<br/>
<label for="remote_passwd" style="vertical-align:baseline;" class="database_item_label">MySQL password:</label>
<input type="password" name="remote_passwd" id="remote_passwd" autocomplete="new-password">
<i class="fas fa-eye" onclick="wpda_toggle_password('remote_passwd', event)" style="cursor:pointer"></i>
<br/>
<label for="remote_port" style="vertical-align:baseline;" class="database_item_label">MySQL port:</label>
<input type="text" name="remote_port" id="remote_port" value="3306">
<br/>
<label for="remote_schema" style="vertical-align:baseline;" class="database_item_label">MySQL schema:</label>
<input type="text" name="remote_schema" id="remote_schema">
<br/>
<label for="remote_schema" style="vertical-align:baseline;line-height:30px;" class="database_item_label">
Enabled:
</label>
<input type="checkbox" name="remote_enabled" id="remote_enabled">
<br/>
<label style="line-height:30px;" for="remote_ssl" style="vertical-align:baseline;" class="database_item_label">SSL:</label>
<input type="checkbox" name="remote_ssl" id="remote_ssl" unchecked onclick="jQuery('#remote_database_block_ssl').toggle()">
<div id="remote_database_block_ssl">
<label for="remote_client_key" style="vertical-align:baseline;" class="database_item_label">Client key:</label>
<input type="text" name="remote_client_key" id="remote_client_key">
<br/>
<label for="remote_client_certificate" style="vertical-align:baseline;" class="database_item_label">Client certificate:</label>
<input type="text" name="remote_client_certificate" id="remote_client_certificate">
<br/>
<label for="remote_ca_certificate" style="vertical-align:baseline;" class="database_item_label">CA certificate:</label>
<input type="text" name="remote_ca_certificate" id="remote_ca_certificate">
<br/>
<label for="remote_certificate_path" style="vertical-align:baseline;" class="database_item_label">Certificate path:</label>
<input type="text" name="remote_certificate_path" id="remote_certificate_path">
<br/>
<label for="remote_specified_cipher" style="vertical-align:baseline;" class="database_item_label">Specified Cipher:</label>
<input type="text" name="remote_specified_cipher" id="remote_specified_cipher">
</div>
<div style="height:10px;"></div>
<label class="database_item_label"></label>
<input type="button" value="Test" onclick="test_remote_connection(); return false;"
id="remote_test_button" class="button">
<input type="button" value="Clear" onclick="test_remote_clear(); return false;"
id="remote_clear_button" class="button" style="display:none;">
<div style="height:10px;"></div>
</div>
<div id="remote_database_block_test" style="display:none;">
<div id="remote_database_block_test_content"
class="remote_database_block_test_content"></div>
<div style="height:10px;"></div>
</div>
<input type="hidden" name="remote_database_old" id="remote_database_old" value=""">
<input type="hidden" name="action" value="update_remote_database"/>
<input type="submit" class="button button-secondary" value="<?php
echo __( 'Save', 'wp-data-access' );
?>">
<a href="javascript:void(0)"
onclick="jQuery('#wpda_update_database_popup').hide()"
class="button button-secondary">
<?php
echo __( 'Cancel', 'wp-data-access' );
?>
</a>
<?php
$rdb_wp_nonce_action = 'wpda-update-remote-database-' . WPDA::get_current_user_login();
$rdb_wp_nonce = wp_create_nonce( $rdb_wp_nonce_action );
?>
<input type="hidden" name="_wpnonceupdrdb" value="<?php
echo esc_attr( $rdb_wp_nonce );
?>"/>
</form>
</div>
<form id="wpda_delete_database" method="post" style="display:none;"
action="?page=<?php
echo esc_attr( $this->page );
?>&tab=plugin">
<input type="hidden" name="remote_database_name" id="delete_remote_database_name" value=""/>
<input type="hidden" name="action" value="delete_remote_database"/>
<?php
$rdb_wp_nonce_action = 'wpda-delete-remote-database-' . WPDA::get_current_user_login();
$rdb_wp_nonce = wp_create_nonce( $rdb_wp_nonce_action );
?>
<input type="hidden" name="_wpnoncedelrdb" value="<?php
echo esc_attr( $rdb_wp_nonce );
?>"/>
</form>
<form id="wpda_settings_plugin" method="post"
action="?page=<?php
echo esc_attr( $this->page );
?>&tab=plugin">
<table class="wpda-table-settings" id="wpda_table_plugin">
<tr>
<th><?php
echo __( 'Plugin menu', 'wp-data-access' );
?></th>
<td>
<label>
<input type="checkbox" name="hide_admin_menu" <?php
echo ( 'on' === $hide_admin_menu ? 'checked="checked"' : '' );
?>/>
<?php
echo __( 'Hide plugin menu in admin panel', 'wp-data-access' );
?>
</label>
</td>
</tr>
<tr>
<th><?php
echo __( 'Notices', 'wp-data-access' );
?></th>
<td>
<label>
<input type="checkbox" name="hide_foreign_notices" <?php
echo ( $hide_foreign_notices === 'on' ? 'checked' : '' );
?> />
<?php
echo __( 'Hide notices of other themes and plugins on WP Data Access admin pages', 'wp-data-access' );
?>
</label>
</td>
</tr>
<tr>
<th><?php
echo __( 'Panel cookies', 'wp-data-access' );
?></th>
<td>
<label>
<input
type="radio"
name="panel_cookies"
value="clear"
<?php
echo ( 'clear' === $panel_cookies ? 'checked' : '' );
?>
><?php
echo __( 'Clear when switching panels', 'wp-data-access' );
?>
</label>
<br/>
<label>
<input
type="radio"
name="panel_cookies"
value="keep"
<?php
echo ( 'keep' === $panel_cookies ? 'checked' : '' );
?>
><?php
echo __( 'Keep when switching panels', 'wp-data-access' );
?>
</label>
</td>
</tr>
<tr>
<th><?php
echo __( 'Secret key and IV' );
?></th>
<td>
<input type="text" name="secret_key" value="<?php
echo esc_attr( $secret_key );
?>"/>
<br/>
<input type="text" name="secret_iv" value="<?php
echo esc_attr( $secret_iv );
?>"/>
<br/><br/>
<span class="dashicons dashicons-info"></span><?php
echo __( 'Existing remote database connection settings will be converted', 'wp-data-access' );
?>
</td>
</tr>
<tr>
<th><?php
echo __( 'Remote database connections' );
?></th>
<td>
<?php
$i = 0;
foreach ( $remote_databases as $remote_database => $remote_database_settings ) {
$checked = ( isset( $remote_database_settings['disabled'] ) && $remote_database_settings['disabled'] ? '' : 'checked' );
$enabled = ( isset( $remote_database_settings['disabled'] ) && $remote_database_settings['disabled'] ? 'FALSE' : 'TRUE' );
?>
<a href="javascript:void(0)"
onclick="delete_remote_database('<?php
echo esc_attr( $i );
?>')"
style="text-decoration:none;"
class="wpda_tooltip"
title="<?php
echo __( 'Delete remote database connection from plugin repository', 'wp-data-access' );
?>">
<span class="dashicons dashicons-trash" style="font-size:18px;"></span>
</a>
<label class="wpda_tooltip" title="<?php
echo __( 'Disable remote database connection', 'wp-data-access' );
?>">
<input type="checkbox" name="remote_database[]" id="remote_database<?php
echo esc_attr( $i );
?>" onclick="update_rdb_setting('<?php
echo esc_attr( $i );
?>')" <?php
echo esc_attr( $checked );
?>>
<input type="hidden" name="remote_database_name[]" id="remote_database_name<?php
echo esc_attr( $i );
?>" value="<?php
echo esc_attr( $remote_database );
?>">
<input type="hidden" name="remote_database_enabled[]" id="remote_database_enabled<?php
echo esc_attr( $i );
?>" value="<?php
echo esc_attr( $enabled );
?>">
<?php
echo esc_attr( $remote_database );
?>
</label>
<a href="javascript:void(0)"
onclick="edit_rdb_setting('<?php
echo esc_attr( $remote_database );
?>')"
style="text-decoration:none;"
class="wpda_tooltip"
title="<?php
echo __( 'Edit remote database connection', 'wp-data-access' );
?>">
<span class="dashicons dashicons-edit" style="font-size:18px;"></span>
</a><br/>
<?php
$i++;
}
?>
</td>
</tr>
<tr>
<th><?php
echo __( 'Shortcode [wpdataaccess]' );
?></th>
<td>
<label>
<input type="checkbox" name="wpdataaccess_post" <?php
echo ( 'on' === $wpdataaccess_post ? 'checked="checked"' : '' );
?>/>
Allow in posts
</label>
<br/>
<label>
<input type="checkbox" name="wpdataaccess_page" <?php
echo ( 'on' === $wpdataaccess_page ? 'checked="checked"' : '' );
?>/>
Allow in pages
</label>
</td>
</tr>
<tr>
<th><?php
echo __( 'Shortcode [wpdadiehard]' );
?></th>
<td>
<label>
<input type="checkbox" name="wpdadiehard_post" <?php
echo ( 'on' === $wpdadiehard_post ? 'checked="checked"' : '' );
?>/>
Allow in posts
</label>
<br/>
<label>
<input type="checkbox" name="wpdadiehard_page" <?php
echo ( 'on' === $wpdadiehard_page ? 'checked="checked"' : '' );
?>/>
Allow in pages
</label>
</td>
</tr>
<?php
?>
<tr>
<th><?php
echo __( 'Debug mode', 'wp-data-access' );
?></th>
<td>
<label>
<input
type="checkbox"
name="debug" <?php
echo ( 'on' === $debug ? 'checked' : '' );
?>
><?php
echo __( 'Enable debug mode', 'wp-data-access' );
?>
</label>
</td>
</tr>
<tr>
<th><?php
echo __( 'Date format' );
?></th>
<td>
<span class="settings_label"><?php
echo __( 'Output', 'wp-data-access' );
?></span>
<input type="text" value="<?php
echo esc_attr( get_option( 'date_format' ) );
?>" class="item_width"
readonly/>
<?php
echo __( '(WordPress format)', 'wp-data-access' );
?>
<br/>
<span class="settings_line">
<span class="settings_label"><?php
echo __( 'Input', 'wp-data-access' );
?></span>
<label class="item_label">
<input type="radio" name="radio_date_format" class="radio_date_format"
value="Y-m-d" <?php
echo ( 'Y-m-d' === $date_format ? 'checked="checked"' : '' );
?>/>
<span class="item_label_text"><?php
echo esc_attr( ( new \DateTime() )->format( 'Y-m-d' ) );
?></span>
<span class="item_label_align">
<input type="text" class="item_label_format" value="Y-m-d" readonly/>
</span>
</label>
</span>
<?php
echo __( '(JavaScript format)', 'wp-data-access' );
?>
<br/>
<span class="settings_line">
<span class="settings_label"></span>
<label class="item_label">
<input type="radio" name="radio_date_format" class="radio_date_format"
value="m/d/Y" <?php
echo ( 'm/d/Y' === $date_format ? 'checked="checked"' : '' );
?>/>
<span class="item_label_text"><?php
echo esc_attr( ( new \DateTime() )->format( 'm/d/Y' ) );
?></span>
<span class="item_label_align">
<input type="text" class="item_label_format" value="m/d/Y" readonly/>
</span>
</label>
</span>
<br/>
<span class="settings_line">
<span class="settings_label"></span>
<label class="item_label">
<input type="radio" name="radio_date_format" class="radio_date_format"
value="d/m/Y" <?php
echo ( 'd/m/Y' === $date_format ? 'checked="checked"' : '' );
?>/>
<span class="item_label_text"><?php
echo esc_attr( ( new \DateTime() )->format( 'd/m/Y' ) );
?></span>
<span class="item_label_align">
<input type="text" class="item_label_format" value="d/m/Y" readonly/>
</span>
</label>
</span>
<br/>
<span class="settings_line">
<span class="settings_label"></span>
<label class="item_label">
<input type="radio" name="radio_date_format" name="date_format"
value="custom" <?php
echo ( 'Y-m-d' !== $date_format && 'd/m/Y' !== $date_format && 'm/d/Y' !== $date_format ? 'checked="checked"' : '' );
?>/>
<span class="item_label_text"><?php
echo __( 'Custom:', 'wp-data-access' );
?></span>
<span class="item_label_align">
<input class="item_label_format" type="text" name="date_format" id="date_format"
value="<?php
echo esc_attr( $date_format );
?>" class="item_label_format"/>
</span>
</label>
</span>
<br/>
<span class="settings_label"><?php
echo __( 'Placeholder', 'wp-data-access' );
?></span>
<input type="text" name="date_placeholder" id="date_placeholder"
value="<?php
echo esc_attr( $date_placeholder );
?>" class="item_width"/>
<?php
echo __( '(user info)', 'wp-data-access' );
?>
</td>
</tr>
<tr>
<th><?php
echo __( 'Time format' );
?></th>
<td>
<span class="settings_label"><?php
echo __( 'Output', 'wp-data-access' );
?></span>
<input type="text" value="<?php
echo esc_attr( get_option( 'time_format' ) );
?>" class="item_width"
readonly/>
<?php
echo __( '(WordPress format)', 'wp-data-access' );
?>
<br/>
<span class="settings_line">
<span class="settings_label"><?php
echo __( 'Input', 'wp-data-access' );
?></span>
<label class="item_label">
<input type="radio" name="radio_time_format" class="radio_time_format"
value="H:i" <?php
echo ( 'H:i' === $time_format ? 'checked="checked"' : '' );
?>/>
<span class="item_label_text"><?php
echo esc_attr( ( new \DateTime() )->format( 'H:i' ) );
?></span>
<span class="item_label_align">
<input type="text" class="item_label_format" value="H:i" readonly/>
</span>
</label>
</span>
<?php
echo __( '(JavaScript format)', 'wp-data-access' );
?>
<br/>
<span class="settings_line">
<span class="settings_label"></span>
<label class="item_label">
<input type="radio" name="radio_time_format" name="time_format"
value="custom" <?php
echo ( 'H:i' !== $time_format ? 'checked="checked"' : '' );
?>/>
<span class="item_label_text"><?php
echo __( 'Custom:', 'wp-data-access' );
?></span>
<span class="item_label_align">
<input class="item_label_format" type="text" name="time_format" id="time_format"
value="<?php
echo esc_attr( $time_format );
?>" class="item_label_format"/>
</span>
</label>
</span>
<br/>
<span class="settings_label"><?php
echo __( 'Placeholder', 'wp-data-access' );
?></span>
<input type="text" name="time_placeholder" id="time_placeholder"
value="<?php
echo esc_attr( $time_placeholder );
?>" class="item_width"/>
</td>
</tr>
<tr>
<th><?php
echo __( 'Date/time test' );
?></th>
<td>
<input type="button" id="init_datetime" value="Test DateTimePicker" class="button item_width"/>
<input type="text" class="item_width" id="test_datetime" style="display:none;" />
</td>
</tr>
<tr>
<th><?php
echo __( 'Set format' );
?></th>
<td>
<span><?php
echo __( 'Show columns of data type set in list table as' );
?></span>
<select name="set_format">
<option value="csv" <?php
echo ( 'csv' === $set_format ? 'selected' : '' );
?>>Comma separated values</option>
<option value="ul" <?php
echo ( 'ul' === $set_format ? 'selected' : '' );
?>>Unordered list</option>
<option value="ol" <?php
echo ( 'ol' === $set_format ? 'selected' : '' );
?>>Ordered list</option>
</select>
</td>
</tr>
<tr>
<th><span class="dashicons dashicons-info" style="float:right;font-size:300%;"></span></th>
<td>
<span class="dashicons dashicons-yes"></span>
<?php
echo __( 'The plugin uses your WordPress general settings to format your date and time output', 'wp-data-access' );
?>
<br/>
<span class="dashicons dashicons-yes"></span>
<a href="<?php
echo admin_url( 'options-general.php' );
// phpcs:ignore WordPress.Security.EscapeOutput
?>?page=wpdataaccess">
<?php
echo __( 'Output formats can be changed in WordPress general settings', 'wp-data-access' );
?>
</a>
<br/>
<span class="dashicons dashicons-yes"></span>
<?php
echo __( 'The plugin uses the jQuery DateTimePicker plugin for data entry validation', 'wp-data-access' );
?>
<br/>
<span class="dashicons dashicons-yes"></span>
<a href="https://xdsoft.net/jqplugins/datetimepicker/" target="_blank">
<?php
echo __( 'Input formats can be found on the XDSoft DateTimePicker page', 'wp-data-access' );
?>
</a>
</td>
</tr>
</table>
<div class="wpda-table-settings-button">
<input type="hidden" name="action" value="save"/>
<button type="submit" class="button button-primary">
<i class="fas fa-check wpda_icon_on_button"></i>
<?php
echo __( 'Save Plugin Settings', 'wp-data-access' );
?>
</button>
<a href="javascript:void(0)"
onclick="if (confirm('<?php
echo __( 'Reset to defaults?', 'wp-data-access' );
?>')) {
jQuery('input[name="action"]').val('setdefaults');
jQuery('#wpda_settings_plugin').trigger('submit')
}"
class="button">
<i class="fas fa-times-circle wpda_icon_on_button"></i>
<?php
echo __( 'Reset Plugin Settings To Defaults', 'wp-data-access' );
?>
</a>
</div>
<?php
wp_nonce_field( 'wpda-plugin-settings-' . WPDA::get_current_user_login(), '_wpnonce', false );
?>
</form>
<?php
}
}