/** * Plugin register_setting() sanitize callback * * Validate and whitelist user-input data before updating Plugin * Options in the database. Only whitelisted options are passed * back to the database, and user-input data for all whitelisted * options are sanitized. * * @link http://codex.wordpress.org/Data_Validation Codex Reference: Data Validation * * @param array $input Raw user-input data submitted via the Plugin Settings page * @return array $input Sanitized user-input data passed to the database */ function cbnetdppp_options_validate($input) { // This is the "whitelist": current settings $valid_input = cbnetdppp_get_options(); // Get the array of option parameters $option_parameters = cbnetdppp_get_option_parameters(); // Get the array of option defaults $option_defaults = cbnetdppp_get_option_defaults(); // Determine what type of submit was input $submittype = !empty($input['reset']) ? 'reset' : 'submit'; // Loop through each setting foreach ($option_defaults as $setting => $value) { // If no option is selected, set the default //$valid_input[$setting] = ( ! isset( $input[$setting] ) ? $option_defaults[$setting] : $input[$setting] ); // If submit, validate/sanitize $input if ('submit' == $submittype) { // Get the setting details from the defaults array $optiondetails = $option_parameters[$setting]; // Get the array of valid options, if applicable $valid_options = isset($optiondetails['valid_options']) ? $optiondetails['valid_options'] : false; // Validate checkbox fields if ('checkbox' == $optiondetails['type']) { // If input value is set and is true, return true; otherwise return false $valid_input[$setting] = isset($input[$setting]) && true == $input[$setting] ? true : false; } else { if ('radio' == $optiondetails['type']) { // Only update setting if input value is in the list of valid options $valid_input[$setting] = array_key_exists($input[$setting], $valid_options) ? $input[$setting] : $valid_input[$setting]; } else { if ('select' == $optiondetails['type']) { // Only update setting if input value is in the list of valid options $valid_input[$setting] = array_key_exists($input[$setting], $valid_options) ? $input[$setting] : $valid_input[$setting]; } else { if ('text' == $optiondetails['type'] || 'textarea' == $optiondetails['type']) { // Validate no-HTML content if ('nohtml' == $optiondetails['sanitize']) { // Pass input data through the wp_filter_nohtml_kses filter $valid_input[$setting] = wp_filter_nohtml_kses($input[$setting]); } // Validate HTML content if ('html' == $optiondetails['sanitize']) { // Pass input data through the wp_filter_kses filter $valid_input[$setting] = wp_filter_kses($input[$setting]); } // Validate integer content if ('integer' == $optiondetails['sanitize']) { // Verify value is an integer $valid_input[$setting] = is_int((int) $input[$setting]) ? $input[$setting] : $valid_input[$setting]; } } } } } } elseif ('reset' == $submittype) { // Set $setting to the default value $valid_input[$setting] = $option_defaults[$setting]; } } return $valid_input; }
/** * Get cbnetdppp Plugin Options * * Array that holds all of the defined values * for cbnetdppp Plugin options. If the user * has not specified a value for a given Plugin * option, then the option's default value is * used instead. * * @uses cbnetdppp_get_option_defaults() defined in \functions\options.php * * @uses get_option() * @uses wp_parse_args() * * @return array $cbnetdppp_options current values for all Plugin options */ function cbnetdppp_get_options() { // Get option default values $default_options = cbnetdppp_get_option_defaults(); // Get user-configured option values global $cbnetdppp_options; // Use user-configured option value; // if not defined, use the default value $cbnetdppp_options = wp_parse_args(get_option('plugin_cbnetdppp_options', array()), $default_options); // Return option values return $cbnetdppp_options; }