WordPress.org

Make WordPress Core

Ticket #2591: optionsphp-serialize.diff

File optionsphp-serialize.diff, 1.7 KB (added by random, 14 years ago)

options.php magic serialization example

  • options.php

     
    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;