/** * Get Testimonial Basics Plugin Options * * Array that holds all of the defined values * for Testimonial Basics Plugin Options. If the user * has not specified a value for a given Theme * option, then the option's default value is * used instead. * * @uses katb_get_option_defaults() defined below * * @return array $katb_options current values for all Theme options */ function katb_get_options() { // Get the option defaults $katb_option_defaults = katb_get_option_defaults(); // Globalize the variable that holds the Theme options global $katb_options; // Parse the stored options with the defaults $katb_options = wp_parse_args(get_option('katb_testimonial_basics_options', array()), $katb_option_defaults); // Return the parsed array //var_dump($katb_options); //wp_die(); return $katb_options; }
/** * Plugin register_setting() sanitize callback * * Validate and whitelist user-input data before updating Theme * 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 Theme Settings page * * @uses katb_get_options(); found in /includes/katb_functions.php * @uses katb_get_settings_by_tab() found in this file * @uses katb_get_option_parameters() found in this file * @uses katb_get_option_defaults() found in this file * @uses katb_get_settings_page_tabs() found in this file * * @return $valid_input Sanitized user-input data passed to the database */ function katb_validate_options($input) { // This is the "whitelist": current settings $valid_input = katb_get_options(); // Get the array of Theme settings, by Settings Page tab $settingsbytab = katb_get_settings_by_tab(); // Get the array of option parameters $option_parameters = katb_get_option_parameters(); // Get the array of option defaults $option_defaults = katb_get_option_defaults(); // Get list of tabs $tabs = katb_get_settings_page_tabs(); //array for possible errors $katb_input_error = array(); // Determine what type of submit was input $submittype = 'submit'; foreach ($tabs as $tab) { $resetname = 'reset-' . $tab['name']; if (!empty($input[$resetname])) { $submittype = 'reset'; } } // Determine what tab was input $submittab = 'general'; foreach ($tabs as $tab) { $submitname = 'submit-' . $tab['name']; $resetname = 'reset-' . $tab['name']; if (!empty($input[$submitname]) || !empty($input[$resetname])) { $submittab = $tab['name']; } } // Get settings by tab $tabsettings = $settingsbytab[$submittab]; // Loop through each tab setting foreach ($tabsettings as $setting) { // 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['class']) { // Pass input data through the wp_filter_nohtml_kses filter $valid_input[$setting] = wp_filter_nohtml_kses($input[$setting]); } else { if ('html' == $optiondetails['class']) { // Pass input data through the wp_filter_kses filter $valid_input[$setting] = wp_filter_post_kses($input[$setting]); } else { if ('url' == $optiondetails['class'] || 'img' == $optiondetails['class']) { //eliminate invalid and dangerous characters $valid_input[$setting] = esc_url($valid_input[$setting]); } else { if ('email' == $optiondetails['class']) { if ($valid_input[$setting] !== '') { $valid_input[$setting] = sanitize_email($valid_input[$setting]); if ($valid_input[$setting] == '') { add_settings_error($setting, 'katb_email_error', 'Please enter a valid e-mail - blank returned', 'error'); } } if ($valid_input[$setting] !== '' && !is_email($valid_input[$setting])) { $valid_input[$setting] = ''; add_settings_error($setting, 'katb_email_error', 'Please enter a valid e-mail - blank returned', 'error'); } } else { if ('ka_color' == $optiondetails['class']) { $valid_input[$setting] = trim($valid_input[$setting]); // trim whitespace if ($valid_input[$setting] == "") { $valid_input[$setting] = $option_defaults[$setting]; } if (substr($valid_input[$setting], 0, 1) !== '#') { $valid_input[$setting] = '#' . $valid_input[$setting]; } if (!preg_match('/^#[a-f0-9]{6}$/i', $valid_input[$setting])) { //hex color is valid $valid_input[$setting] = $option_defaults[$setting]; add_settings_error($setting, 'katb_hex_color_error', 'Please enter a valid Hex Color Number-default returned.', 'error'); } } else { if ('css' == $optiondetails['class']) { $valid_input[$setting] = wp_filter_nohtml_kses($valid_input[$setting]); // css validation } else { // Catch all //Pass input data through the wp_filter_kses filter $valid_input[$setting] = wp_filter_kses($input[$setting]); } } } } } } } } } } } elseif ('reset' == $submittype) { // Set $setting to the default value $valid_input[$setting] = $option_defaults[$setting]; } } return $valid_input; }