plugin_path . 'vendors/class-settings-api.php'; /** * Class AWB_Settings */ class AWB_Settings { /** * Settings API instance * * @var object */ public $settings_api; /** * AWB_Settings constructor. */ public function __construct() { $this->init_actions(); } /** * Get Option Value * * @param string $option - option name. * @param string $section - section name. * @param mixed $default_value - default option value. * * @return mixed */ public static function get_option( $option, $section, $default_value = '' ) { $options = get_option( $section ); if ( isset( $options[ $option ] ) ) { return 'off' === $options[ $option ] ? false : ( 'on' === $options[ $option ] ? true : $options[ $option ] ); } return $default_value; } /** * Init actions */ public function init_actions() { $this->settings_api = new AWB_Settings_API(); add_action( 'admin_init', array( $this, 'admin_init' ) ); add_action( 'admin_menu', array( $this, 'admin_menu' ) ); } /** * Initialize the settings * * @return void */ public function admin_init() { // set the settings. $this->settings_api->set_sections( $this->get_settings_sections() ); $this->settings_api->set_fields( $this->get_settings_fields() ); // initialize settings. $this->settings_api->admin_init(); } /** * Register the admin settings menu * * @return void */ public function admin_menu() { add_options_page( esc_html__( 'AWB Settings', 'advanced-backgrounds' ), esc_html__( 'AWB', 'advanced-backgrounds' ), 'manage_options', 'advanced-backgrounds-settings', array( $this, 'print_settings_page' ) ); } /** * Plugin settings sections * * @return array */ public function get_settings_sections() { $sections = array( array( 'id' => 'awb_general', 'title' => esc_html__( 'General', 'advanced-backgrounds' ), ), array( 'id' => 'awb_images', 'title' => esc_html__( 'Images', 'advanced-backgrounds' ), ), ); return $sections; } /** * Returns all the settings fields * * @return array settings fields */ public function get_settings_fields() { $settings_fields = array( 'awb_general' => array( array( 'name' => 'disable_parallax', 'label' => esc_html__( 'Disable parallax', 'advanced-backgrounds' ), 'type' => 'multicheck', 'options' => array( 'everywhere' => 'Everywhere', 'mobile' => 'Mobile', 'ie' => 'IE', 'edge' => 'Edge', 'firefox' => 'FireFox', 'safari' => 'Safari', 'chrome' => 'Chrome', 'opera' => 'Opera', ), 'default' => array(), ), array( 'name' => 'disable_videos', 'label' => esc_html__( 'Disable video', 'advanced-backgrounds' ), 'type' => 'multicheck', 'options' => array( 'everywhere' => 'Everywhere', 'mobile' => 'Mobile', 'ie' => 'IE', 'edge' => 'Edge', 'firefox' => 'FireFox', 'safari' => 'Safari', 'chrome' => 'Chrome', 'opera' => 'Opera', ), 'default' => array(), ), ), 'awb_images' => array( array( 'name' => 'register_image_sizes', 'label' => esc_html__( 'Register image sizes', 'advanced-backgrounds' ), 'type' => 'checkbox', 'default' => 'on', ), array( 'name' => 'register_image_sizes_note', 'desc' => '' . esc_html__( 'Uncheck this option if you have already registered sizes or want to save disk space.', 'advanced-backgrounds' ) . '
' . // translators: %s: regenerate thumbnails url. sprintf( __( 'After publishing your changes, new image sizes may not be shown until you Regenerate Thumbnails.', 'advanced-backgrounds' ), 'https://wordpress.org/plugins/regenerate-thumbnails/' ) . '
', 'type' => 'html', ), ), ); return $settings_fields; } /** * The plugin page handler * * @return void */ public function print_settings_page() { echo '
'; echo '

' . esc_html__( 'Advanced WordPress Backgrounds Settings', 'advanced-backgrounds' ) . '

'; $this->settings_api->show_navigation(); $this->settings_api->show_forms(); echo '
'; wp_enqueue_style( 'nk-awb-settings', nk_awb()->plugin_url . 'assets/admin/settings/style.min.css', array(), '1.13.0' ); wp_enqueue_script( 'nk-awb-settings', nk_awb()->plugin_url . 'assets/admin/settings/script.min.js', array( 'jquery' ), '1.13.0', true ); } } new AWB_Settings();