public function settings_sanitize_section($sections, $input, $output, $stored = array()) { foreach ($sections as $section => $section_args) { foreach ($section_args['fields'] as $field => $field_args) { if (isset($field_args['constant']) && $field_args['constant'] && defined($field_args['constant'])) { // do nothing // new value } else { if (isset($input[$field])) { // callback if (isset($field_args['filter']) && $field_args['filter'] && is_callable($field_args['filter'])) { $output[$field] = call_user_func_array($field_args['filter'], array($input[$field])); } else { if (isset($field_args['values']) && FALSE === $field_args['values']) { $output[$field] = $field_args['default']; } else { if (is_array($input[$field])) { $output[$field] = gPluginUtils::getKeys($input[$field]); } else { $output[$field] = $input[$field]; } } } // empty multiple checkboxes } else { if (isset($field_args['values']) && FALSE !== $field_args['values']) { $output[$field] = array(); // custom multiple checkboxes } else { if (in_array($field_args['type'], array('posttypes'))) { $output[$field] = array(); // previously stored value } else { if (isset($stored[$field])) { $output[$field] = $stored[$field]; // default value } else { $output[$field] = $field_args['default']; } } } } } } } return $output; }