$value) { $option_names[] = "'$key'"; } $option_names = implode(',', $option_names); } else { $option_names = stripslashes($_POST['page_options']); } $options = $wpdb->get_results("SELECT $wpdb->options.option_id, option_name, option_type, option_value, option_admin_level FROM $wpdb->options WHERE option_name IN ($option_names)"); // Save for later. $old_siteurl = get_settings('siteurl'); $old_home = get_settings('home'); // HACK // Options that if not there have 0 value but need to be something like "closed" $nonbools = array('default_ping_status', 'default_comment_status'); if ($options) { foreach ($options as $option) { // should we even bother checking? if ($user_level >= $option->option_admin_level) { $old_val = $option->option_value; $new_val = trim($_POST[$option->option_name]); if ( !$new_val && $old_val != 0 ) $new_val = ''; if( in_array($option->option_name, $nonbools) && ( $new_val == '0' || $new_val == '') ) $new_val = 'closed'; if ($new_val !== $old_val) { $result = $wpdb->query("UPDATE $wpdb->options SET option_value = '$new_val' WHERE option_name = '$option->option_name'"); $any_changed++; } } } unset($cache_settings); // so they will be re-read get_settings('siteurl'); // make it happen now } // end if options if ($any_changed) { // If siteurl or home changed, reset cookies. if ( get_settings('siteurl') != $old_siteurl || get_settings('home') != $old_home ) { // Get currently logged in user and password. get_currentuserinfo(); // Clear cookies for old paths. wp_clearcookie(); // Set cookies for new paths. wp_setcookie($user_login, $user_pass_md5, true, get_settings('home'), get_settings('siteurl')); } //$message = sprintf(__('%d setting(s) saved... '), $any_changed); } $referred = remove_query_arg('updated' , $_SERVER['HTTP_REFERER']); $goback = add_query_arg('updated', 'true', $_SERVER['HTTP_REFERER']); $goback = preg_replace('|[^a-z0-9-~+_.?#=&;,/:]|i', '', $goback); wp_redirect($goback); break; default: include('admin-header.php'); ?>