2003-06-12 00:59:14 +02:00
< ? php
$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
function add_magic_quotes ( $array ) {
foreach ( $array as $k => $v ) {
if ( is_array ( $v )) {
$array [ $k ] = add_magic_quotes ( $v );
} else {
$array [ $k ] = addslashes ( $v );
}
}
return $array ;
2003-06-13 00:48:52 +02:00
}
2003-06-12 00:59:14 +02:00
if ( ! get_magic_quotes_gpc ()) {
2004-04-21 00:56:47 +02:00
$_GET = add_magic_quotes ( $_GET );
$_POST = add_magic_quotes ( $_POST );
$_COOKIE = add_magic_quotes ( $_COOKIE );
2003-06-12 00:59:14 +02:00
}
2003-12-18 10:36:13 +01:00
$wpvarstoreset = array ( 'action' , 'standalone' , 'option_group_id' );
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
}
}
}
2004-04-28 22:31:41 +02:00
if ( isset ( $_GET [ 'option_group_id' ])) $option_group_id = ( int ) $_GET [ 'option_group_id' ];
2004-04-14 23:23:52 +02:00
require_once ( './optionhandler.php' );
2003-12-17 02:07:40 +01:00
$non_was_selected = 0 ;
2004-04-24 23:21:19 +02:00
if ( '' == $_GET [ 'option_group_id' ]) {
2003-06-12 00:59:14 +02:00
$option_group_id = 1 ;
2003-12-17 02:07:40 +01:00
$non_was_selected = 1 ;
2003-06-12 00:59:14 +02:00
}
2003-06-13 00:48:52 +02:00
2003-06-12 00:59:14 +02:00
switch ( $action ) {
2004-02-26 15:37:15 +01:00
case 'update' :
2004-02-16 01:44:07 +01:00
$standalone = 1 ;
2004-04-14 23:23:52 +02:00
include_once ( './admin-header.php' );
2003-06-13 00:48:52 +02:00
$any_changed = 0 ;
2003-06-12 00:59:14 +02:00
// iterate through the list of options in this group
// pull the vars from the post
2003-12-17 02:07:40 +01:00
// validate ranges etc.
2003-06-12 00:59:14 +02:00
// update the values
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-02-26 15:37:15 +01:00
// die(var_dump($options));
2004-03-11 09:51:50 +01:00
// HACK
// Options that if not there have 0 value but need to be something like "closed"
$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 ) {
$old_val = stripslashes ( $option -> option_value );
2004-02-26 15:37:15 +01:00
$new_val = $_POST [ $option -> option_name ];
2004-03-16 18:36:56 +01:00
if ( ! $new_val ) {
if ( 3 == $option -> option_type )
$new_val = '' ;
else
$new_val = 0 ;
}
2004-03-11 09:51:50 +01:00
if ( in_array ( $option -> option_name , $nonbools ) && $new_val == 0 ) $new_value = 'closed' ;
if ( $new_val !== $old_val ) {
2004-05-24 10:22:18 +02:00
$query = " UPDATE $wpdb->options SET option_value = ' $new_val ' WHERE option_name = ' $option->option_name ' " ;
2004-03-11 09:51:50 +01:00
$result = $wpdb -> query ( $query );
//if( in_array($option->option_name, $nonbools)) die('boo'.$query);
if ( ! $result ) {
2004-04-25 22:04:40 +02:00
$db_errors .= sprintf ( __ ( " SQL error while saving %s. " ), $this_name );
2004-03-11 09:51:50 +01:00
} else {
++ $any_changed ;
}
2003-06-12 00:59:14 +02:00
}
}
} // end foreach
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 ) {
2004-04-25 22:04:40 +02:00
$message = sprintf ( __ ( '%d setting(s) saved... ' ), $any_changed );
2003-06-12 00:59:14 +02:00
}
2003-06-13 00:48:52 +02:00
if (( $dB_errors != '' ) || ( $validation_message != '' )) {
if ( $message != '' ) {
2004-04-25 22:04:40 +02:00
$message .= '<br />' ;
2003-06-13 00:48:52 +02:00
}
$message .= $dB_errors . '<br />' . $validation_message ;
}
2004-04-11 10:15:10 +02:00
2004-05-14 10:38:34 +02:00
$referred = str_replace ( array ( '&updated=true' , '?updated=true' ) , '' , $_SERVER [ 'HTTP_REFERER' ]);
if ( strstr ( $referred , '?' )) $goback = $referred . '&updated=true' ;
2004-04-28 22:31:41 +02:00
else $goback = str_replace ( '?updated=true' , '' , $_SERVER [ 'HTTP_REFERER' ]) . '?updated=true' ;
2004-04-11 10:15:10 +02:00
header ( 'Location: ' . $goback );
2004-02-13 10:59:47 +01:00
break ;
2003-06-12 00:59:14 +02:00
default :
2003-06-13 00:48:52 +02:00
$standalone = 0 ;
2003-12-11 01:22:36 +01:00
include_once ( " ./admin-header.php " );
2004-04-11 10:15:10 +02:00
if ( $user_level <= 6 ) {
2004-04-25 22:04:40 +02:00
die ( __ ( " You have do not have sufficient permissions to edit the options for this blog. " ));
2003-06-12 00:59:14 +02:00
}
?>
2003-12-17 02:07:40 +01:00
< ? php
if ( $non_was_selected ) { // no group pre-selected, display opening page
?>
< div class = " wrap " >
2003-12-23 01:47:01 +01:00
< dl >
2003-12-17 02:07:40 +01:00
< ? php
//iterate through the available option groups. output them as a definition list.
2004-05-24 10:22:18 +02:00
$option_groups = $wpdb -> get_results ( " SELECT group_id, group_name, group_desc, group_longdesc FROM $wpdb->optiongroups ORDER BY group_id " );
2003-12-17 02:07:40 +01:00
foreach ( $option_groups as $option_group ) {
echo ( " <dt><a href= \" $this_file ?option_group_id= { $option_group -> group_id } \" title= \" { $option_group -> group_desc } \" > { $option_group -> group_name } </a></dt> \n " );
$current_long_desc = $option_group -> group_longdesc ;
if ( $current_long_desc == '' ) {
2004-04-25 22:04:40 +02:00
$current_long_desc = __ ( 'No help for this group of options.' );
2003-12-17 02:07:40 +01:00
}
echo ( " <dd> { $option_group -> group_desc } : $current_long_desc </dd> \n " );
} // end for each group
?>
2004-04-25 22:04:40 +02:00
< dt >< a href = " options-permalink.php " >< ? php _e ( 'Permalinks' ) ?> </a></dt>
< dd >< ? php _e ( 'Permanent link configuration' ) ?> </dd>
2003-12-23 01:47:01 +01:00
</ dl >
2003-12-17 02:07:40 +01:00
</ div >
< ? php
} else { //there was a group selected.
2004-04-11 10:15:10 +02:00
include ( 'options-head.php' );
2003-12-17 02:07:40 +01:00
?>
2004-04-11 10:15:10 +02:00
2003-06-12 00:59:14 +02:00
< div class = " wrap " >
2003-12-17 02:07:40 +01:00
< h2 >< ? php echo $current_desc ; ?> </h2>
< form name = " form " action = " <?php echo $this_file ; ?> " method = " post " >
< input type = " hidden " name = " action " value = " update " />
< input type = " hidden " name = " option_group_id " value = " <?php echo $option_group_id ; ?> " />
2003-06-12 00:59:14 +02:00
< table width = " 90% " cellpadding = " 2 " cellspacing = " 2 " border = " 0 " >
< ? php
2004-04-24 23:21:19 +02:00
//Now display all the options for the selected group.
if ( 'all' == $_GET [ 'option_group_id' ]) :
2004-05-24 10:22:18 +02:00
$options = $wpdb -> get_results ( " SELECT * FROM $wpdb->options LEFT JOIN $wpdb->optiongroup_options ON $wpdb->options .option_id = $wpdb->optiongroup_options .option_id ORDER BY option_name " );
2004-04-24 23:21:19 +02:00
else :
$options = $wpdb -> get_results ( "
SELECT
2004-05-24 10:22:18 +02:00
$wpdb -> options . option_id , option_name , option_type , option_value , option_width , option_height , option_description , option_admin_level
FROM $wpdb -> options LEFT JOIN $wpdb -> optiongroup_options ON $wpdb -> options . option_id = $wpdb -> optiongroup_options . option_id
2004-04-24 23:21:19 +02:00
WHERE group_id = $option_group_id
ORDER BY seq
" );
endif ;
foreach ( $options as $option ) :
if ( 'all' == $_GET [ 'option_group_id' ]) $option -> option_type = 3 ;
echo " \t <tr><td width='10%' valign='top'> " . get_option_widget ( $option , ( $user_level >= $option -> option_admin_level ), '</td><td width="15%" valign="top" style="border: 1px solid #ccc">' );
echo " \t </td><td valign='top' class='helptext'> $option->option_description </td></tr> \n " ;
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 >
< div class = " wrap " >
< ? php
2004-04-11 10:15:10 +02:00
if ( $current_long_desc != '' ) {
echo $current_long_desc ;
}
2003-06-12 00:59:14 +02:00
?>
</ div >
< ? php
2003-12-17 02:07:40 +01:00
} // end else a group was selected
2003-06-12 00:59:14 +02:00
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-04-25 22:04:40 +02:00
?>