public static function settings_validate($inputs) { // Load current settings from db self::load_settings(TRUE); global $CRAYON_EMAIL; // When reset button is pressed, remove settings so default loads next time if (array_key_exists('reset', $inputs)) { self::clear_cache(); return array(); } // Convert old tags if (array_key_exists('convert', $inputs)) { $encode = array_key_exists('convert_encode', $inputs); CrayonWP::convert_tags($encode); } // Refresh internal tag management if (array_key_exists('refresh_tags', $inputs)) { CrayonWP::refresh_posts(); } // Clear the log if needed if (array_key_exists(self::LOG_CLEAR, $_POST)) { CrayonLog::clear(); } // Send to admin if (array_key_exists(self::LOG_EMAIL_ADMIN, $_POST)) { CrayonLog::email(get_bloginfo('admin_email')); } // Send to developer if (array_key_exists(self::LOG_EMAIL_DEV, $_POST)) { CrayonLog::email($CRAYON_EMAIL, get_bloginfo('admin_email')); } // Clear the cache if (array_key_exists(self::CACHE_CLEAR, $_POST)) { self::clear_cache(); } // If settings don't exist in input, set them to default $global_settings = CrayonSettings::get_defaults(); $ignored = array(CrayonSettings::HIDE_HELP); foreach ($global_settings as $setting) { // XXX Ignore some settings if (in_array($setting->name(), $ignored)) { $inputs[$setting->name()] = CrayonGlobalSettings::val($setting->name()); continue; } // If boolean setting is not in input, then it is set to FALSE in the form if (!array_key_exists($setting->name(), $inputs)) { // For booleans, set to FALSE (unchecked boxes are not sent as POST) if (is_bool($setting->def())) { $inputs[$setting->name()] = FALSE; } else { /* For array settings, set the input as the value, which by default is the default index */ if (is_array($setting->def())) { $inputs[$setting->name()] = $setting->value(); } else { $inputs[$setting->name()] = $setting->def(); } } } } $refresh = array(CrayonSettings::INLINE_TAG => TRUE, CrayonSettings::INLINE_TAG_CAPTURE => TRUE, CrayonSettings::CODE_TAG_CAPTURE => TRUE, CrayonSettings::BACKQUOTE => TRUE, CrayonSettings::CAPTURE_PRE => TRUE, CrayonSettings::CAPTURE_MINI_TAG => TRUE, CrayonSettings::PLAIN_TAG => TRUE); // Validate inputs foreach ($inputs as $input => $value) { // Convert all array setting values to ints $inputs[$input] = $value = CrayonSettings::validate($input, $value); // Clear cache when changed if (CrayonGlobalSettings::has_changed($input, CrayonSettings::CACHE, $value)) { self::clear_cache(); } if (isset($refresh[$input])) { if (CrayonGlobalSettings::has_changed($input, $input, $value)) { // Needs to take place, in case it refresh depends on changed value CrayonGlobalSettings::set($input, $value); CrayonWP::refresh_posts(); } } } return $inputs; }