* @link http://Admail.net
* @since 1.0.0
* @package Admail
* @subpackage Admail/admin
* @copyright 2019 Admail.net All Rights Reserved
*/
class Admail_Admin {
/** @var string Constants for the SiteWide Model fields names and database entries */
const SITEWIDE_MODAL_ENABLE_ELEMENT_ID = 'admail-admin-sitewide-modal-enable';
const SITEWIDE_MODAL_ACCOUNT_ELEMENT_ID = 'admail-admin-sitewide-modal-account';
const SITEWIDE_MODAL_FORM_ELEMENT_ID = 'admail-admin-sitewide-modal-form';
const USE_MINIFIED_VERSIONS = 'admail-admin-minification';
/**
* The ID of this plugin.
*
* @since 1.0.0
* @access private
* @var string $admail The ID of this plugin.
*/
private $admail;
/**
* The version of this plugin.
*
* @since 1.0.0
* @access private
* @var string $version The current version of this plugin.
*/
private $version;
/**
* Is the site wide form enabled?
*
* @return mixed|null|boolean|string
* @access public
*/
public static function site_wide() {
return get_option( self::SITEWIDE_MODAL_ENABLE_ELEMENT_ID, FALSE );
}
/**
* Get the Wordpress stored Form ID for the site_wide form
*
* @return mixed|null|int|string
* @access public
*/
public static function site_wide_form() {
return get_option( self::SITEWIDE_MODAL_FORM_ELEMENT_ID, NULL );
}
/**
* Get the Wrodpress stored setting Account ID for the site_wide.
*
* @return mixed|null|int|string
* @access public
*/
public static function site_wide_account() {
return get_option( self::SITEWIDE_MODAL_ACCOUNT_ELEMENT_ID, NULL );
}
/**
* Do we display the Site Wide Form
*
* includes is_admin();
*
* @return bool
* @access public
*/
public static function display_site_wide() {
return self::site_wide() && ! is_admin();
}
/**
* Initialize the class and set its properties.
*
* @since 1.0.0
*
* @param string $admail The name of this plugin.
* @param string $version The version of this plugin.
*
* @access public
*/
public function __construct( $admail, $version ) {
$this->admail = $admail;
$this->version = $version;
}
/**
* Admail Admin Settings Init
*
* Adds Admin Settings.
*
* @access public
*/
public function settings_init() {
// Add the Admail section
add_settings_section( 'admail-admin-section', // Section ID
'Admail Settings', // Section title
array( $this, 'settings_section_description' ), // Section callback function
'general' // Settings page slug
);
register_setting( 'general', // Options group
self::USE_MINIFIED_VERSIONS, // Option name/database
array( $this, 'settings_sanitize_bool' ) // Sanitize callback function
);
/* Register Settings */
//Adds the site wide checkbox.
register_setting( 'general', // Options group
self::SITEWIDE_MODAL_ENABLE_ELEMENT_ID, // Option name/database
array( $this, 'settings_sanitize_bool' ) // Sanitize callback function
);
$args = array(
'type' => 'string',
'sanitize_callback' => array( $this, 'settings_sanitize_int' ),
);
/* Register Settings */
//Adds the site wide popup Account number field.
register_setting( 'general', // Options group
self::SITEWIDE_MODAL_ACCOUNT_ELEMENT_ID, // Option name/database
$args // Sanitize callback function
);
/* Register Settings */
//Adds the site wide popup form number field
register_setting( 'general', // Options group
self::SITEWIDE_MODAL_FORM_ELEMENT_ID, // Option name/database
$args // Sanitize callback function
);
$this->add_admin_section_setting( self::USE_MINIFIED_VERSIONS,
__( 'Use Minified Versions of JS and CSS (Recommended)' ),
'field_minified' );
//Add the site form fields and sections to the Settings page.
$this->add_admin_section_setting( self::SITEWIDE_MODAL_ENABLE_ELEMENT_ID,
__( 'Include Admail On Page' ),
'field_enable' );
$this->add_admin_section_setting( self::SITEWIDE_MODAL_ACCOUNT_ELEMENT_ID,
__( 'Account Number' ),
'field_account' );
$this->add_admin_section_setting( self::SITEWIDE_MODAL_FORM_ELEMENT_ID, __( 'Form Number' ), 'field_form' );
}
/**
* Sanitize Callback Function
*
* @access public
*
* @param $input
*
* @return bool
*/
public function settings_sanitize_bool( $input ) {
return isset( $input ) ? TRUE : FALSE;
}
/** Sanitize Callback Function
*
* @param $input
*
* @access public
* @return mixed
*/
public function settings_sanitize_int( $input ) {
//die( 'Made it!' . $input );
return filter_var( $input, FILTER_SANITIZE_NUMBER_INT );
}
/** Setting Section Description
*
* @access public
*/
public function settings_section_description() {
echo wpautop( __( "Show the Admail Lightbox to new users on every page of the site." ) );
}
/**
* Register the stylesheets for the admin area.
*
* @since 1.0.0
* @access public
*/
public function enqueue_styles() {
/** An instance of this class is passed to the run() function
* defined in Admail_Loader as all of the hooks are defined
* in that particular class.
*
* The Admail_Loader will then create the relationship
* between the defined hooks and the functions defined in this
* class.
*/
wp_enqueue_style( $this->admail,
plugin_dir_url( __FILE__ ) . 'css/class-admail-admin.css',
array(),
$this->version,
'all' );
}
/**
* Register the JavaScript for the admin area.
*
* @since 1.0.0
* @access public
*/
public function enqueue_scripts() {
/**
* Enquire the java script.
*/
wp_enqueue_script( $this->admail,
plugin_dir_url( __FILE__ ) . 'js/class-admail-admin.js',
array( 'jquery' ),
$this->version,
FALSE );
}
/**
* Output the checkbox for the sitewide lightnox admin form field.
*
* @since 1.0.0
* @access public
*/
public function field_minified() {
$value = get_option( self::USE_MINIFIED_VERSIONS, FALSE );
$this->field_input_checkbox( self::USE_MINIFIED_VERSIONS, $value );
}
/**
* Output the checkbox for the sitewide lightnox admin form field.
*
* @since 1.0.0
* @access public
*/
public function field_enable() {
$value = get_option( self::SITEWIDE_MODAL_ENABLE_ELEMENT_ID, FALSE );
$this->field_input_checkbox( self::SITEWIDE_MODAL_ENABLE_ELEMENT_ID, $value );
}
/**
* Output the textbox for the sitewide lightbox admin form field.
*
* Handles the Account number. This should be found on the Admail site information.
*
* @since 1.0.0
* @access public
*/
public function field_account() {
$value = get_option( self::SITEWIDE_MODAL_ACCOUNT_ELEMENT_ID, NULL );
$this->field_input_text( self::SITEWIDE_MODAL_ACCOUNT_ELEMENT_ID, $value );
}
/**
* Output the textbox for the sitewide lightbox admin form field.
*
* Handles the Account number. This should be found on the Admail site information.
*
* @since 1.0.0
* @access public
*/
public function field_form() {
$value = get_option( self::SITEWIDE_MODAL_FORM_ELEMENT_ID, NULL );
$this->field_input_text( self::SITEWIDE_MODAL_FORM_ELEMENT_ID, $value );
}
/**
* Adds a settings field for the admin section. Places it in the general, admail-admin-section. Utilizes internal
* class method $method
*
* @param int|string $element_ID
* @param string $label
* @param string $method Name of method in this $this to generate the field.
*
* @since 1.0.0
* @access protected
*/
protected function add_admin_section_setting( $element_ID, $label, $method ) {
add_settings_field( $element_ID,
'',
array( $this, $method ),
'general',
'admail-admin-section' );
}
/**
* Construct the input tag and field
*
* @param int|string $SITEWIDE_MODAL_ELEMENT_ID Sets the input types name and id (which is this value plus "-ID"
* @param $value
*
* @since 1.0.0
* @access public
*/
protected function field_input_text( $SITEWIDE_MODAL_ELEMENT_ID, $value ) {
echo '';
}
/**
* Construct a checkbox field tag.
*
* @param int|string $SITEWIDE_MODAL_ENABLE_ELEMENT_ID Sets the input types name and id (which is this value
* plus "-ID"
* @param bool|int|string $value
*
* @since 1.0.0
* @access public
*/
public function field_input_checkbox( $SITEWIDE_MODAL_ENABLE_ELEMENT_ID, $value ) {
echo '';
}
}