File "WPDA_Settings_FrontEnd.php"
Full Path: /home/vantageo/public_html/cache/cache/cache/.wp-cli/wp-content/plugins/wp-data-access/WPDataAccess/Settings/WPDA_Settings_FrontEnd.php
File size: 11.69 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace WPDataAccess\Settings;
use WPDataAccess\Data_Dictionary\WPDA_Dictionary_Exist;
use WPDataAccess\Data_Dictionary\WPDA_Dictionary_Lists;
use WPDataAccess\Utilities\WPDA_Message_Box;
use WPDataAccess\WPDA;
class WPDA_Settings_FrontEnd extends WPDA_Settings {
/**
* Available UI themes
*/
const UI_THEMES = array(
'ui-darkness',
'ui-lightness',
'swanky-purse',
'sunny',
'start',
'smoothness',
'black-tie',
'blitzer',
'cupertino',
'dark-hive',
'dot-luv',
'eggplant',
'excite-bike',
'flick',
'hot-sneaks',
'humanity',
'le-frog',
'mint-choc',
'overcast',
'pepper-grinder',
'redmond',
'south-street',
'trontastic',
'vader'
);
/**
* Add front-end tab content
*
* See class documentation for flow explanation.
*
* @since 1.0.0
*/
protected function add_content() {
global $wpdb;
if ( isset( $_REQUEST['database'] ) ) {
$database = sanitize_text_field( wp_unslash( $_REQUEST['database'] ) );
// input var okay.
} else {
$database = $wpdb->dbname;
}
$is_wp_database = $database === $wpdb->dbname;
if ( isset( $_REQUEST['action'] ) ) {
$action = sanitize_text_field( wp_unslash( $_REQUEST['action'] ) );
// input var okay.
// Security check.
$wp_nonce = ( isset( $_REQUEST['_wpnonce'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['_wpnonce'] ) ) : '' );
// input var okay.
if ( !wp_verify_nonce( $wp_nonce, 'wpda-front-end-settings-' . WPDA::get_current_user_login() ) ) {
wp_die( __( 'ERROR: Not authorized', 'wp-data-access' ) );
}
if ( 'save' === $action ) {
if ( $is_wp_database ) {
WPDA::set_option( WPDA::OPTION_FE_TABLE_ACCESS, ( isset( $_REQUEST['table_access'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['table_access'] ) ) : null ) );
} else {
update_option( WPDA::FRONTEND_OPTIONNAME_DATABASE_ACCESS . $database, ( isset( $_REQUEST['table_access'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['table_access'] ) ) : null ) );
}
$table_access_selected_new_value = ( isset( $_REQUEST['table_access_selected'] ) ? WPDA::sanitize_text_field_array( $_REQUEST['table_access_selected'] ) : null );
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput
if ( is_array( $table_access_selected_new_value ) ) {
// Check the requested table names for sql injection. This is simply done by checking if the table
// name exists in our WordPress database.
$table_access_selected_new_value_checked = array();
foreach ( $table_access_selected_new_value as $key => $value ) {
$wpda_dictionary_checks = new WPDA_Dictionary_Exist($database, $value);
if ( $wpda_dictionary_checks->table_exists( false, false ) ) {
// Add existing table to list.
$table_access_selected_new_value_checked[$key] = $value;
} else {
// An invalid table name was provided. Might be an sql injection attack or an invalid state.
wp_die( __( 'ERROR: Table not found', 'wp-data-access' ) );
}
}
} else {
$table_access_selected_new_value_checked = '';
}
if ( $is_wp_database ) {
WPDA::set_option( WPDA::OPTION_FE_TABLE_ACCESS_SELECTED, $table_access_selected_new_value_checked );
} else {
update_option( WPDA::FRONTEND_OPTIONNAME_DATABASE_SELECTED . $database, $table_access_selected_new_value_checked );
}
WPDA::set_option( WPDA::OPTION_FE_PAGINATION, ( isset( $_REQUEST['pagination'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['pagination'] ) ) : null ) );
if ( isset( $_REQUEST['ui_theme'] ) ) {
WPDA::set_option( WPDA::WPDA_DT_UI_THEME_DEFAULT, sanitize_text_field( wp_unslash( $_REQUEST['ui_theme'] ) ) );
}
WPDA::set_option( WPDA::OPTION_FE_ADD_PROJECTS_TO_TOOLBAR, ( isset( $_REQUEST['add_projects_to_toolbar'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['add_projects_to_toolbar'] ) ) : 'off' ) );
} elseif ( 'setdefaults' === $action ) {
// Set all front-end settings back to default
if ( $is_wp_database ) {
WPDA::set_option( WPDA::OPTION_FE_TABLE_ACCESS );
WPDA::set_option( WPDA::OPTION_FE_TABLE_ACCESS_SELECTED );
} else {
update_option( WPDA::FRONTEND_OPTIONNAME_DATABASE_ACCESS . $database, 'select' );
update_option( WPDA::FRONTEND_OPTIONNAME_DATABASE_SELECTED . $database, '' );
}
WPDA::set_option( WPDA::OPTION_FE_PAGINATION );
WPDA::set_option( WPDA::WPDA_DT_UI_THEME_DEFAULT );
WPDA::set_option( WPDA::OPTION_FE_ADD_PROJECTS_TO_TOOLBAR );
}
$msg = new WPDA_Message_Box(array(
'message_text' => __( 'Settings saved', 'wp-data-access' ),
));
$msg->box();
}
// Get options
if ( $is_wp_database ) {
$table_access = WPDA::get_option( WPDA::OPTION_FE_TABLE_ACCESS );
$table_access_selected = WPDA::get_option( WPDA::OPTION_FE_TABLE_ACCESS_SELECTED );
} else {
$table_access = get_option( WPDA::FRONTEND_OPTIONNAME_DATABASE_ACCESS . $database );
if ( false === $table_access ) {
$table_access = 'select';
}
$table_access_selected = get_option( WPDA::FRONTEND_OPTIONNAME_DATABASE_SELECTED . $database );
if ( false === $table_access_selected ) {
$table_access_selected = '';
}
}
if ( is_array( $table_access_selected ) ) {
// Convert table for simple access.
$table_access_selected_by_name = array();
foreach ( $table_access_selected as $key => $value ) {
$table_access_selected_by_name[$value] = true;
}
}
$pagination = WPDA::get_option( WPDA::OPTION_FE_PAGINATION );
$ui_theme_default = WPDA::get_option( WPDA::WPDA_DT_UI_THEME_DEFAULT );
$add_projects_to_toolbar = WPDA::get_option( WPDA::OPTION_FE_ADD_PROJECTS_TO_TOOLBAR );
?>
<form id="wpda_settings_frontend" method="post"
action="?page=<?php
echo esc_attr( $this->page );
?>&tab=frontend">
<table class="wpda-table-settings">
<?php
?>
<tr>
<th><?php
echo __( 'Default pagination value', 'wp-data-access' );
?></th>
<td>
<input
type="number" step="1" min="1" max="999" name="pagination" maxlength="3"
value="<?php
echo esc_attr( $pagination );
?>">
<div style="padding-top:10px">
Only for shortcode <strong>wpdadiehard</strong>
</div>
</td>
</tr>
<tr>
<th><?php
echo __( 'Table access', 'wp-data-access' );
?></th>
<td>
<select name="database" id="schema_name">
<?php
$schema_names = WPDA_Dictionary_Lists::get_db_schemas();
foreach ( $schema_names as $schema_name ) {
$selected = ( $database === $schema_name['schema_name'] ? ' selected' : '' );
echo "<option value='{$schema_name['schema_name']}'{$selected}>{$schema_name['schema_name']}</option>";
// phpcs:ignore WordPress.Security.EscapeOutput
}
?>
</select>
<br/><br/>
<label>
<input
type="radio"
name="table_access"
value="show"
<?php
echo ( 'show' === $table_access ? 'checked' : '' );
?>
><?php
echo ( $is_wp_database ? __( 'Show WordPress tables', 'wp-data-access' ) : __( 'Show all tables', 'wp-data-access' ) );
?>
</label>
<br/>
<?php
if ( $is_wp_database ) {
?>
<label>
<input
type="radio"
name="table_access"
value="hide"
<?php
echo ( 'hide' === $table_access ? 'checked' : '' );
?>
><?php
echo __( 'Hide WordPress tables', 'wp-data-access' );
?>
</label>
<br/>
<?php
}
?>
<label>
<input
type="radio"
name="table_access"
value="select"
<?php
echo ( 'select' === $table_access ? 'checked' : '' );
?>
><?php
echo __( 'Show only selected tables', 'wp-data-access' );
?>
</label>
<div id="tables_selected" <?php
echo ( 'select' === $table_access ? '' : 'style="display:none"' );
?>>
<br/>
<select name="table_access_selected[]" multiple size="10">
<?php
$tables = WPDA_Dictionary_Lists::get_tables( true, $database );
foreach ( $tables as $table ) {
$table_name = $table['table_name'];
?>
<option value="<?php
echo esc_attr( $table_name );
?>" <?php
echo ( isset( $table_access_selected_by_name[$table_name] ) ? 'selected' : '' );
?>><?php
echo esc_attr( $table_name );
?></option>
<?php
}
?>
</select>
</div>
<script type='text/javascript'>
jQuery(function () {
jQuery("input[name='table_access']").on("click", function () {
if (this.value == 'select') {
jQuery("#tables_selected").show();
} else {
jQuery("#tables_selected").hide();
}
});
jQuery('#schema_name').on('change', function() {
window.location = '?page=<?php
echo esc_attr( $this->page );
?>&tab=frontend&database=' + jQuery(this).val();
});
});
</script>
</td>
</tr>
<tr>
<th><?php
echo __( 'Admin toolbar', 'wp-data-access' );
?></th>
<td>
<label>
<input type="checkbox" name="add_projects_to_toolbar"
<?php
echo ( 'on' === $add_projects_to_toolbar ? 'checked' : '' );
?>
/>
<?php
echo __( 'Add projects to toolbar', 'wp-data-access' );
?>
</label>
</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 Front-end 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_frontend').trigger('submit')
}"
class="button">
<i class="fas fa-times-circle wpda_icon_on_button"></i>
<?php
echo __( 'Reset Front-end Settings To Defaults', 'wp-data-access' );
?>
</a>
</div>
<?php
wp_nonce_field( 'wpda-front-end-settings-' . WPDA::get_current_user_login(), '_wpnonce', false );
?>
</form>
<?php
}
}