Make WordPress Core


Ignore:
Timestamp:
03/13/2009 10:27:38 PM (17 years ago)
Author:
azaozz
Message:

WP_Widgets: make save_settings() and get_settings() separate methods, convert defined single widgets settings to multi-widget format, small fixes for the Links widget, see #8441

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/widgets.php

    r10774 r10781  
    656656
    657657        return $defaults;
     658}
     659
     660/**
     661 * Convert the widget settings from single to multi-widget format.
     662 *
     663 * @since 2.8.0
     664 *
     665 * @return array
     666 */
     667function wp_convert_widget_settings($base_name, $option_name, $settings) {
     668        // This test may need expanding.
     669        $single = false;
     670        foreach ( array_keys($settings) as $number ) {
     671                if ( !is_numeric($number) ) {
     672                        $single = true;
     673                        break;
     674                }
     675        }
     676
     677        if ( $single ) {
     678                $settings = array( 2 => $settings );
     679               
     680                $sidebars_widgets = get_option('sidebars_widgets');
     681                foreach ( (array) $sidebars_widgets as $index => $sidebar ) {
     682                        if ( is_array($sidebar) ) {
     683                                foreach ( $sidebar as $i => $name ) {
     684                                        if ( $base_name == $name ) {
     685                                                $sidebars_widgets[$index][$i] = "$name-2";
     686                                                break 2;
     687                                        }
     688                                }
     689                        }
     690                }
     691
     692                update_option('sidebars_widgets', $sidebars_widgets);
     693        }
     694
     695        $settings['_multiwidget'] = 1;
     696        update_option( $option_name, $settings );
     697       
     698        return $settings;
    658699}
    659700
     
    768809                        return false;
    769810
    770                 return $new_instance;
     811                $new_instance = (array) $new_instance;
     812                $instance = array( 'images' => 0, 'name' => 0, 'description' => 0, 'rating' => 0);
     813                foreach ( $instance as $field => $val ) {
     814                        if ( isset($new_instance[$field]) )
     815                                $instance[$field] = 1;
     816                }
     817       
     818                return $instance;
    771819        }
    772820       
     
    775823                //Defaults
    776824                $instance = wp_parse_args( (array) $instance, array( 'images' => true, 'name' => true, 'description' => false, 'rating' => false) );
    777 /*
    778                 if ( isset($_POST['links-submit']) ) {
    779                         $newoptions = array();
    780                         $newoptions['description'] = isset($_POST['links-description']);
    781                         $newoptions['name'] = isset($_POST['links-name']);
    782                         $newoptions['rating'] = isset($_POST['links-rating']);
    783                         $newoptions['images'] = isset($_POST['links-images']);
    784 
    785                         if ( $instance != $newoptions ) {
    786                                 $instance = $newoptions;
    787                                 update_option('widget_links', $instance);
    788                         }
    789                 }
    790 */
    791825?>
    792826                <p>
     
    19762010        $widget_ops = array('description' => __( "Your blogroll" ) );
    19772011        $wp_widget_links = new WP_Widget_Links('links', __('Links'), $widget_ops);
    1978         $wp_widget_links->register();
     2012        //$wp_widget_links->register();
    19792013
    19802014        $widget_ops = array('classname' => 'widget_meta', 'description' => __( "Log in/out, admin, feed and WordPress links") );
Note: See TracChangeset for help on using the changeset viewer.