Ticket #2591: optionsphp-serialize.diff

File optionsphp-serialize.diff, 1.7 kB (added by random, 2 years ago)

options.php magic serialization example

  • options.php

    old new  
    5050                foreach ($options as $option) { 
    5151                        $option = trim($option); 
    5252                        $value = trim(stripslashes($_POST[$option])); 
     53                        $type = trim(stripslashes($_POST['type'][$option])); 
    5354                                if( in_array($option, $nonbools) && ( $value == '0' || $value == '') ) 
    5455                                $value = 'closed'; 
    5556 
    5657                        if( $option == 'blogdescription' || $option == 'blogname' ) 
    5758                                if (current_user_can('unfiltered_html') == false) 
    5859                                        $value = wp_filter_post_kses( $value ); 
    59  
     60                         
     61                        if ('array' != $type && 'object' != $type) 
     62                                $value = serialize($value); 
     63                         
    6064                        if (update_option($option, $value) ) { 
    6165                                $any_changed++; 
    6266                        } 
     
    9599$options = $wpdb->get_results("SELECT * FROM $wpdb->options ORDER BY option_name"); 
    96100 
    97101foreach ($options as $option) : 
    98         $value = wp_specialchars($option->option_value); 
     102        $value = maybe_unserialize($option->option_value); 
     103        $type = gettype($value); 
     104         
     105        if ('array' == $type || 'object' == $type) 
     106                $value = $option->option_value; 
     107         
     108        $value = wp_specialchars($value); 
    99109        echo " 
    100110<tr> 
    101111        <th scope='row'><label for='$option->option_name'>$option->option_name</label></th> 
    102         <td><input type='text' name='$option->option_name' id='$option->option_name' size='30' value='" . $value . "' /></td> 
     112        <td> 
     113                <input type='text' name='$option->option_name' id='$option->option_name' size='30' value='" . $value . "' /> 
     114                <input type='hidden' name='type[$option->option_name]' id='type[$option->option_name]' size='30' value='" . $type . "' /> 
     115        </td> 
    103116        <td>$option->option_description</td> 
    104117</tr>"; 
    105118endforeach;