<?php
/**
* Suppress "error - 0 - No summary was found for this file" on phpdoc generation
*
* @package WPDataAccess\Settings
*/
namespace WPDataAccess\Settings;
use WPDataAccess\Utilities\WPDA_Import;
/**
* Class WPDA_Settings
*
* All tabs have the following similar structure:
* + If form was posted save options (show success or error message)
* + Read options
* + Show form with options for selected tab
*
* Tabs Back-end Settings, Front-end Settings, Data Backup Settings and Uninstall Settings have reset buttons. When
* the reset button on a specific tab is clicked, the default values for the settings on that tab are taken from
* WPDA and stored in $pwdb->options.
*
* When the users clicks on tab Manage Repository, the repository is validated and the status of the repository
* is shown. If the repository has errors, a button is offered to recreate the repository.
*
* @author Peter Schulz
* @since 1.0.0
*/
class WPDA_Settings {
/**
* Menu slug of the current page
*
* @var string
*/
protected $page;
/**
* Available tabs on the page
*
* @var array
*/
protected $tabs;
/**
* Current tab name
*
* @var string
*/
protected $current_tab;
/**
* Reference to wpda import object
*
* @var WPDA_Import
*/
protected $wpda_import;
/**
* URL to help page on plugin website
*
* @var string
*/
protected $help_url;
/**
* WPDA_Settings constructor
*
* Member $this->tabs is filled in the constructor to support i18n.
*
* If a request was send for recreation of the repository, this is done in the constructor. This action must
* be performed before checking the user menu model, which is part of the constructor as well, necessary to
* inform the user if any errors were reported.
*
* @param $current_tab Current tab label
* @param $help_url URL help page plugin website
*
* @since 1.0.0
*/
public function __construct( $current_tab, $help_url ) {
// Get menu slag of current page.
if ( isset( $_REQUEST['page'] ) ) {
$this->page = sanitize_text_field( wp_unslash( $_REQUEST['page'] ) );
// input var okay.
} else {
// In order to show a list table we need a page.
wp_die( __( 'ERROR: Wrong arguments [missing page argument]', 'wp-data-access' ) );
}
$this->current_tab = $current_tab;
$this->help_url = $help_url;
// Tabs array is filled in constructor to add i18n.
$this->tabs = array(
'plugin' => 'Plugin',
'backend' => 'Back-end',
'frontend' => 'Front-end',
'datatables' => 'Data Tables',
'databackup' => 'Data Backup',
'uninstall' => 'Uninstall',
'repository' => 'Repository',
'roles' => 'Roles',
'system' => 'System Info',
);
}
/**
* Show setting page
*
* Consists of tabs {@see WPDA_Settings::add_tabs()} and the content of the selected tab
* {@see \WPDataAccess\API\WPDA_Settings::add_content()}.
*
* @since 1.0.0
*
* @see WPDA_Settings::add_tabs()
* @see \WPDataAccess\API\WPDA_Settings::add_content()
*/
public function show() {
?>
<div class="wrap">
<h1>
<?php
echo __( 'WP Data Access Settings', 'wp-data-access' );
?>
</h1>
<?php
$this->add_tabs();
$this->add_content();
?>
</div>
<script>
jQuery(function() {
jQuery( '.wpda_tooltip' ).tooltip();
});
</script>
<?php
}
/**
* Add tabs to page
*
* @since 1.0.0
*/
protected function add_tabs() {
?>
<h2 class="nav-tab-wrapper">
<?php
foreach ( $this->tabs as $tab => $name ) {
$class = ( $tab === $this->current_tab ? ' nav-tab-active' : '' );
echo '<a class="nav-tab' . esc_attr( $class ) . '" href="?page=' . esc_attr( $this->page ) . '&tab=' . esc_attr( $tab ) . '">' . esc_attr( $name ) . '</a>';
}
?>
</h2>
<?php
}
}