@ -39,18 +39,47 @@ class Bespokomatic_Ebs_Admin {
*/
private $version;
/**
* Settings for the plugin.
*
* @since 0.1
* @access private
* @var object $plugin_options The options for this plugin.
*/
private $plugin_options;
/**
* Settings name for the plugin.
*
* @since 0.1
* @access private
* @var string $options_name The options name for this plugin.
*/
private $options_name;
/**
* Page name for the plugin settings.
*
* @since 0.1
* @access private
* @var string $page_name The page name for the settings.
*/
private $page_name;
/**
* Initialize the class and set its properties.
*
* @since 0.1
* @param string $plugin_name The name of this plugin.
* @param string $version The version of this plugin.
* @param string $plugin_name The name of this plugin.
* @param string $version The version of this plugin.
*/
public function __construct( $plugin_name, $version ) {
$this->plugin_name = $plugin_name;
$this->version = $version;
$this->plugin_name = $plugin_name;
$this->version = $version;
$this->page_name = $plugin_name . '-settings';
$this->options_name = str_replace( '-', '_', $this->page_name );
$this->plugin_options = array();
}
/**
@ -75,6 +104,62 @@ class Bespokomatic_Ebs_Admin {
}
/**
* Add settings config
*
* @since 0.1
*/
public function settings_setup() {
// General settings
$general_settings_name = $this->options_name . '_general';
register_setting(
$general_settings_name,
$general_settings_name,
array( $this, 'general_settings_sanitizer' )
);
add_settings_section(
$general_settings_name,
'General',
null,
$this->page_name
);
add_settings_field(
'delete_data0',
'Delete data',
array( $this, 'settings_general_delete_cb' ),
$this->page_name,
$general_settings_name
);
}
/**
* Sanitize any incoming settings.
*
* @since 0.1
*/
public function general_settings_sanitizer( $input ) {
$sanitary_values = array();
$sanitary_values['delete_data_0'] = isset( $input['delete_data_0'] ) ? $input['delete_data_0'] : false;
return $sanitary_values;
}
/**
* Delete data callback.
*
* @since 0.1
*/
public function settings_general_delete_cb() {
vprintf(
'< input type = "checkbox" name = "%s[delete_data_0]" id = "delete_data_0" value = "delete_data_0" % s > < label for = "delete_data_0" > Delete data on plugin deactivation< / label > ',
array( $this->options_name . '_general', ( isset( $this->plugin_options['general']['delete_data_0'] ) & & $this->plugin_options['general']['delete_data_0'] === 'delete_data_0' ) ? 'checked' : '' )
);
}
/**
* Add menu links
*
@ -85,23 +170,23 @@ class Bespokomatic_Ebs_Admin {
'Booked Scheduler',
'Booked Scheduler',
'manage_options',
'booked-scheduler'
$this->plugin_name
);
add_submenu_page(
'booked-scheduler' ,
$this->plugin_name ,
'Booked Scheduler',
'Booked Scheduler',
'manage_options',
'booked-scheduler' ,
$this->plugin_name ,
array( $this, 'admin_main' )
);
add_submenu_page(
'booked-scheduler' ,
'Settings',
$this->plugin_name ,
'Booked Scheduler Settings',
'Settings',
'manage_options',
'booked-scheduler-settings' ,
$this->options_name ,
array( $this, 'admin_settings' )
);
}
@ -117,6 +202,7 @@ class Bespokomatic_Ebs_Admin {
* Admin settings page
*/
public function admin_settings() {
$this->plugin_options['general'] = get_option( $this->options_name . '_general' );
require_once plugin_dir_path( __FILE__ ) . 'partials/bespokomatic-ebs-admin-settings.php';
}