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