$value) { unset($this->$key); } } public function __set($key, $value) { if (property_exists($this, $key)) { switch ($key) { /* // Read-only properties case 'readonly': break; */ default: $options = get_option('obfuscation_options'); $options['obfuscation_settings_' . $key] = $value; update_option('obfuscation_options', $options); break; } } return $this; } public function __get($key) { if (property_exists($this, $key)) { switch ($key) { // Constant properties case 'defaults': return array( 'email_enabled' => '1', ); break; default: $options = get_option('obfuscation_options'); if (isset($options['obfuscation_settings_' . $key]) && !empty($options['obfuscation_settings_' . $key])) { return $options['obfuscation_settings_' . $key]; } else if (isset($this->defaults[$key])) { return $this->defaults[$key]; } else { return false; } break; } } return null; } } final class SettingsPage { use Singleton; protected function __construct() { add_action('admin_init', array($this, 'init')); add_action('admin_menu', array($this, 'menu')); } public function menu() { if (!current_user_can('manage_options')) return; $page = add_options_page(__('Ogre Obfuscation Settings', 'obfuscation'), __('Ogre Obfuscation', 'obfuscation'), 'manage_options', 'obfuscation_settings', array($this, 'page')); add_action('load-' . $page, array($this, 'load')); } public function load() { if (!current_user_can('manage_options')) return; add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts')); } public function admin_enqueue_scripts() { //wp_enqueue_script('obfuscation-admin', Settings::instance()->dir . 'assets/js/obfuscation.admin.js', array('jquery'), Settings::instance()->version, true); } public function init() { register_setting('obfuscation', 'obfuscation_options'); //, array($this, 'validate_options')); // Message Settings add_settings_section('obfuscation_section_obfuscation', __('Obfuscation', 'obfuscation'), array($this, 'section'), 'obfuscation'); add_settings_field('obfuscation_email_enabled', __('Email Obfuscation Enabled', 'obfuscation'), array($this, 'field_checkbox'), 'obfuscation', 'obfuscation_section_obfuscation', array( 'id' => 'obfuscation_settings_email_enabled', 'default' => Settings::instance()->defaults['email_enabled'], )); } public function page() { if (!current_user_can('manage_options')) return; // Check if the user has submitted the settings if (isset($_GET['settings-updated'])) { // Show update message //add_settings_error('obfuscation_messages', 'obfuscation_message', __('Settings Saved', 'obfuscation'), 'updated'); } // Show error/update messages settings_errors('obfuscation_messages'); ?>

Description

} // Fields public function field_text($args) { $value = ''; $options = get_option('obfuscation_options'); if (isset($args['default'])) $value = $args['default']; if (isset($args['id']) && !empty($args['id']) && isset($options[$args['id']]) && !empty($options[$args['id']])) $value = $options[$args['id']]; $type = 'text'; if (isset($args['type']) && !empty($args['type'])) { $type = $args['type']; } echo ''; if (isset($args['description']) && !empty($args['description'])) { echo '

'; _e($args['description'], 'obfuscation'); echo '

'; } } public function field_checkbox($args) { $value = false; $options = get_option('obfuscation_options'); if (isset($args['default'])) $value = $args['default']; if (isset($args['id']) && !empty($args['id']) && isset($options[$args['id']]) && !empty($options[$args['id']])) $value = $options[$args['id']]; echo ''; if (isset($args['description']) && !empty($args['description'])) { echo '

'; esc_html_e($args['description'], 'obfuscation'); echo '

'; } } public function validate_options($fields) { $valid_fields = array(); foreach ($fields as $id => $field) { if (!isset($input[$id])) continue; } return apply_filters('validate_options', $valid_fields, $fields); } } SettingsPage::instance();