2003-06-12 00:59:14 +02:00
< ? php
$title = 'Options' ;
2003-12-11 01:22:36 +01:00
$this_file = 'options.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 ()) {
$HTTP_GET_VARS = add_magic_quotes ( $HTTP_GET_VARS );
$HTTP_POST_VARS = add_magic_quotes ( $HTTP_POST_VARS );
$HTTP_COOKIE_VARS = add_magic_quotes ( $HTTP_COOKIE_VARS );
}
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 )) {
if ( empty ( $HTTP_POST_VARS [ " $wpvar " ])) {
if ( empty ( $HTTP_GET_VARS [ " $wpvar " ])) {
$$wpvar = '' ;
2003-06-12 00:59:14 +02:00
} else {
2003-12-18 10:36:13 +01:00
$$wpvar = $HTTP_GET_VARS [ " $wpvar " ];
2003-06-12 00:59:14 +02:00
}
} else {
2003-12-18 10:36:13 +01:00
$$wpvar = $HTTP_POST_VARS [ " $wpvar " ];
2003-06-12 00:59:14 +02:00
}
}
}
require_once ( " optionhandler.php " );
2003-12-17 02:07:40 +01:00
$non_was_selected = 0 ;
2003-06-12 00:59:14 +02:00
if ( $option_group_id == '' ) {
$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 ;
2003-12-11 01:22:36 +01: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
}
$options = $wpdb -> get_results ( " SELECT $tableoptions .option_id, option_name, option_type, option_value, option_admin_level FROM $tableoptions 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 ) {
$query = " UPDATE $tableoptions SET option_value = ' $new_val ' WHERE option_id = $option->option_id " ;
$result = $wpdb -> query ( $query );
//if( in_array($option->option_name, $nonbools)) die('boo'.$query);
if ( ! $result ) {
$db_errors .= " SQL error while saving $this_name . " ;
} 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 ) {
$message = $any_changed . ' setting(s) saved... ' ;
2003-06-12 00:59:14 +02:00
}
2003-06-13 00:48:52 +02:00
if (( $dB_errors != '' ) || ( $validation_message != '' )) {
if ( $message != '' ) {
$message .= '<br />and ' ;
}
$message .= $dB_errors . '<br />' . $validation_message ;
}
2004-02-13 10:59:47 +01:00
header ( 'Location: ' . $_SERVER [ 'HTTP_REFERER' ]);
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 " );
2003-06-12 00:59:14 +02:00
if ( $user_level <= 3 ) {
2004-03-01 20:55:45 +01: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.
$option_groups = $wpdb -> get_results ( " SELECT group_id, group_name, group_desc, group_longdesc FROM $tableoptiongroups ORDER BY group_id " );
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 == '' ) {
$current_long_desc = 'No help for this group of options.' ;
}
echo ( " <dd> { $option_group -> group_desc } : $current_long_desc </dd> \n " );
} // end for each group
?>
< dt >< a href = " options-permalink.php " > Permalinks </ a ></ dt >
< dd > 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.
?>
2003-06-12 00:59:14 +02:00
< ul id = " adminmenu2 " >
2004-02-13 10:59:47 +01:00
< li >< a href = " options-general.php " > General </ a ></ li >
2004-03-11 09:51:50 +01:00
< li >< a href = " options-writing.php " > Writing </ a ></ li >
< li >< a href = " options-reading.php " > Reading </ a ></ li >
< li >< a href = " options-discussion.php " > Discussion </ a ></ li >
2003-06-12 00:59:14 +02:00
< ? php
2003-12-17 02:07:40 +01:00
//Iterate through the available option groups.
2003-06-12 00:59:14 +02:00
$option_groups = $wpdb -> get_results ( " SELECT group_id, group_name, group_desc, group_longdesc FROM $tableoptiongroups ORDER BY group_id " );
2003-06-13 00:48:52 +02:00
foreach ( $option_groups as $option_group ) {
if ( $option_group -> group_id == $option_group_id ) {
2003-06-12 00:59:14 +02:00
$current_desc = $option_group -> group_desc ;
$current_long_desc = $option_group -> group_longdesc ;
2003-12-17 01:36:29 +01:00
echo ( " <li><a class= \" current \" href= \" $this_file ?option_group_id= { $option_group -> group_id } \" title= \" { $option_group -> group_desc } \" > { $option_group -> group_name } </a></li> \n " );
2003-06-13 00:48:52 +02:00
} else {
2003-06-12 00:59:14 +02:00
echo ( " <li><a href= \" $this_file ?option_group_id= { $option_group -> group_id } \" title= \" { $option_group -> group_desc } \" > { $option_group -> group_name } </a></li> \n " );
}
} // end for each group
?>
2003-12-17 02:07:40 +01:00
< li class = " last " >< a href = " options-permalink.php " > Permalinks </ a ></ li >
2003-06-12 00:59:14 +02:00
</ ul >
2003-12-17 02:07:40 +01:00
< br clear = " all " />
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
//Now display all the options for the selected group.
$options = $wpdb -> get_results ( " SELECT $tableoptions .option_id, option_name, option_type, option_value, option_width, option_height, option_description, option_admin_level "
. " FROM $tableoptions "
. " LEFT JOIN $tableoptiongroup_options ON $tableoptions .option_id = $tableoptiongroup_options .option_id "
. " WHERE group_id = $option_group_id "
. " ORDER BY seq " );
2003-06-13 00:48:52 +02:00
if ( $options ) {
foreach ( $options as $option ) {
2003-12-17 02:07:40 +01:00
echo ( ' <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 ( " </td><td valign='top' class='helptext'> $option->option_description </td></tr> \n " );
2003-06-12 00:59:14 +02:00
}
}
?>
< tr >< td colspan = " 3 " >& nbsp ; </ td ></ tr >
< tr >< td align = " center " colspan = " 3 " >< input type = " submit " name = " Update " value = " Update Settings " /></ td ></ tr >
< tr >< td colspan = " 3 " >< ? php echo $message ; ?> </td></tr>
</ table >
2003-12-17 02:07:40 +01:00
</ form >
2003-06-12 00:59:14 +02:00
</ div >
< div class = " wrap " >
< ? php
2003-12-17 02:07:40 +01:00
if ( $current_long_desc != '' ) {
echo ( $current_long_desc );
} else {
2003-06-12 00:59:14 +02:00
?>
2003-12-17 02:07:40 +01:00
< p > No help for this group of options .</ p >
2003-06-12 00:59:14 +02:00
< ? php
2003-12-17 02:07:40 +01:00
}
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
2003-12-11 01:22:36 +01:00
include ( " admin-footer.php " ) ?>