2003-06-11 18:59:14 -04:00
< ? php
2004-10-18 23:03:06 -04:00
require_once ( 'admin.php' );
2004-06-13 12:14:58 -04:00
$title = __ ( 'Options' );
2003-12-10 19:22:36 -05:00
$this_file = 'options.php' ;
2004-04-19 04:09:27 -04:00
$parent_file = 'options-general.php' ;
2003-06-11 18:59:14 -04:00
2004-10-18 23:03:06 -04:00
$wpvarstoreset = array ( 'action' );
2003-12-18 04:36:13 -05:00
for ( $i = 0 ; $i < count ( $wpvarstoreset ); $i += 1 ) {
$wpvar = $wpvarstoreset [ $i ];
if ( ! isset ( $$wpvar )) {
2004-04-20 18:56:47 -04:00
if ( empty ( $_POST [ " $wpvar " ])) {
if ( empty ( $_GET [ " $wpvar " ])) {
2003-12-18 04:36:13 -05:00
$$wpvar = '' ;
2003-06-11 18:59:14 -04:00
} else {
2004-04-20 18:56:47 -04:00
$$wpvar = $_GET [ " $wpvar " ];
2003-06-11 18:59:14 -04:00
}
} else {
2004-04-20 18:56:47 -04:00
$$wpvar = $_POST [ " $wpvar " ];
2003-06-11 18:59:14 -04:00
}
}
}
2003-06-12 18:48:52 -04:00
2005-07-14 22:16:45 -04:00
if ( ! current_user_can ( 'manage_options' ) )
2004-12-07 15:12:34 -05:00
die ( __ ( 'Cheatin’ uh?' ) );
2003-06-11 18:59:14 -04:00
switch ( $action ) {
2004-02-26 09:37:15 -05:00
case 'update' :
2005-01-19 23:56:24 -05:00
$any_changed = 0 ;
2005-08-07 23:28:37 -04:00
check_admin_referer ();
2003-06-12 18:48:52 -04:00
2004-02-26 09:37:15 -05:00
if ( ! $_POST [ 'page_options' ]) {
foreach ( $_POST as $key => $value ) {
$option_names [] = " ' $key ' " ;
}
$option_names = implode ( ',' , $option_names );
} else {
$option_names = stripslashes ( $_POST [ 'page_options' ]);
2004-02-13 04:59:47 -05:00
}
2004-05-24 04:22:18 -04:00
$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 ) " );
2004-03-11 03:51:50 -05:00
2005-02-13 18:58:45 -05:00
// Save for later.
$old_siteurl = get_settings ( 'siteurl' );
$old_home = get_settings ( 'home' );
2005-01-19 23:56:24 -05:00
2004-03-11 03:51:50 -05:00
// HACK
// Options that if not there have 0 value but need to be something like "closed"
2004-09-17 09:05:06 -04:00
$nonbools = array ( 'default_ping_status' , 'default_comment_status' );
2003-06-12 18:48:52 -04:00
if ( $options ) {
2005-06-10 04:51:40 -04:00
$options = apply_filters ( 'options_to_update' , $options );
2003-06-12 18:48:52 -04:00
foreach ( $options as $option ) {
2005-07-14 22:16:45 -04:00
$old_val = $option -> option_value ;
$new_val = trim ( $_POST [ $option -> option_name ]);
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 ' " );
2005-11-09 13:15:55 -05:00
wp_cache_set ( $option -> option_name , $new_val , 'options' );
2005-07-14 22:16:45 -04:00
$any_changed ++ ;
}
2004-09-17 09:05:06 -04:00
}
2003-06-12 18:48:52 -04:00
unset ( $cache_settings ); // so they will be re-read
get_settings ( 'siteurl' ); // make it happen now
} // end if options
if ( $any_changed ) {
2005-01-19 23:56:24 -05:00
// If siteurl or home changed, reset cookies.
if ( get_settings ( 'siteurl' ) != $old_siteurl || get_settings ( 'home' ) != $old_home ) {
2005-03-29 11:36:08 -05:00
// If home changed, write rewrite rules to new location.
save_mod_rewrite_rules ();
2005-01-19 23:56:24 -05:00
// 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);
2003-06-11 18:59:14 -04:00
}
2003-06-12 18:48:52 -04:00
2004-10-20 17:28:37 -04:00
$referred = remove_query_arg ( 'updated' , $_SERVER [ 'HTTP_REFERER' ]);
$goback = add_query_arg ( 'updated' , 'true' , $_SERVER [ 'HTTP_REFERER' ]);
2005-01-19 23:56:24 -05:00
$goback = preg_replace ( '|[^a-z0-9-~+_.?#=&;,/:]|i' , '' , $goback );
2005-03-13 11:36:09 -05:00
wp_redirect ( $goback );
2004-02-13 04:59:47 -05:00
break ;
2003-06-11 18:59:14 -04:00
default :
2004-10-18 23:03:06 -04:00
include ( 'admin-header.php' ); ?>
2004-04-11 04:15:10 -04:00
2003-06-11 18:59:14 -04:00
< div class = " wrap " >
2005-04-23 13:36:33 -04:00
< h2 >< ? php _e ( 'All options' ); ?> </h2>
2004-09-04 20:24:28 -04:00
< form name = " form " action = " options.php " method = " post " >
2003-12-16 20:07:40 -05:00
< input type = " hidden " name = " action " value = " update " />
2004-09-04 20:24:28 -04:00
< table width = " 98% " >
2003-06-11 18:59:14 -04:00
< ? php
2004-09-04 18:15:46 -04:00
$options = $wpdb -> get_results ( " SELECT * FROM $wpdb->options ORDER BY option_name " );
2004-04-24 17:21:19 -04:00
foreach ( $options as $option ) :
2004-12-12 15:41:19 -05:00
$value = wp_specialchars ( $option -> option_value );
2004-09-04 20:24:28 -04:00
echo "
< tr >
< th scope = 'row' >< label for = '$option->option_name' > $option -> option_name </ label ></ th >
2005-03-22 01:34:23 -05:00
< td >< input type = 'text' name = '$option->option_name' id = '$option->option_name' size = '30' value = '" . $value . "' /></ td >
2004-09-04 20:24:28 -04:00
< td > $option -> option_description </ td >
</ tr > " ;
2004-04-24 17:21:19 -04:00
endforeach ;
2003-06-11 18:59:14 -04:00
?>
</ table >
2004-04-28 00:56:29 -04:00
< p class = " submit " >< input type = " submit " name = " Update " value = " <?php _e('Update Settings »') ?> " /></ p >
2003-12-16 20:07:40 -05:00
</ form >
2003-06-11 18:59:14 -04:00
</ div >
2004-09-04 20:24:28 -04:00
2003-06-11 18:59:14 -04:00
< ? php
break ;
2003-12-16 20:07:40 -05:00
} // end switch
2003-06-11 18:59:14 -04:00
2004-04-11 04:15:10 -04:00
include ( 'admin-footer.php' );
2004-09-17 09:05:06 -04:00
?>