Make WordPress Core

Changeset 5358


Ignore:
Timestamp:
04/30/2007 08:02:02 PM (19 years ago)
Author:
ryan
Message:

Widget registration fixes from Andy. For 2.3. see #4169

File:
1 edited

Legend:

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

    r5356 r5358  
    4444
    4545        $defaults = array(
    46                 'name' => sprintf(__('Sidebar %d'), count($wp_registered_sidebars) + 1 ),
     46                'name' => sprintf(__('Sidebar %d'), $i ),
     47                'id' => "sidebar-$i",
    4748                'before_widget' => '<li id="%1$s" class="widget %2$s">',
    4849                'after_widget' => "</li>\n",
    … …  
    5354        $sidebar = array_merge($defaults, $args);
    5455
    55         if ( ! isset($sidebar['id']) ) $sidebar['id'] = sanitize_title($sidebar['name']);
    5656        $wp_registered_sidebars[$sidebar['id']] = $sidebar;
    5757
    … …  
    221221
    222222function wp_get_sidebars_widgets($update = true) {
    223         global $wp_registered_widgets;
     223        global $wp_registered_widgets, $wp_registered_sidebars;
    224224
    225225        $sidebars_widgets = get_option('sidebars_widgets');
    … …  
    247247                        }
    248248                        $_sidebars_widgets['array_version'] = 2;
     249                        $sidebars_widgets = $_sidebars_widgets;
     250                        unset($_sidebars_widgets);
     251
     252                case 2 :
     253                        $sidebars = array_keys( $wp_registered_sidebars );
     254                        if ( !empty( $sidebars ) ) {
     255                                // Move the known-good ones first
     256                                foreach ( $sidebars as $id ) {
     257                                        if ( array_key_exists( $id, $sidebars_widgets ) ) {
     258                                                $_sidebars_widgets[$id] = $sidebars_widgets[$id];
     259                                                unset($sidebars_widgets[$id], $sidebars[$id]);
     260                                        }
     261                                }
     262
     263                                // Assign to each unmatched registered sidebar the first available orphan
     264                                unset( $sidebars_widgets[ 'array_version' ] );
     265                                while ( ( $sidebar = array_shift( $sidebars ) ) && $widgets = array_shift( $sidebars_widgets ) )
     266                                        $_sidebars_widgets[ $sidebar ] = $widgets;
     267
     268                                $_sidebars_widgets['array_version'] = 3;
     269                                $sidebars_widgets = $_sidebars_widgets;
     270                                unset($_sidebars_widgets);
     271                        }
     272
    249273                        if ( $update )
    250                                 update_option('sidebars_widgets', $_sidebars_widgets);
    251                         break;
    252                 case 2 :
    253                         $_sidebars_widgets = $sidebars_widgets;
    254                         break;
    255         }
    256 
    257         unset($_sidebars_widgets['array_version']);
    258 
    259         return $_sidebars_widgets;
     274                                update_option('sidebars_widgets', $sidebars_widgets);
     275        }
     276
     277        unset($sidebars_widgets['array_version']);
     278
     279        return $sidebars_widgets;
    260280}
    261281
    … …  
    544564    var dropdown = document.getElementById("cat");
    545565    function onCatChange() {
    546         location.href = "?cat="+dropdown.options[dropdown.selectedIndex].value;
     566        location.href = "<?php echo get_option('siteurl'); ?>/?cat="+dropdown.options[dropdown.selectedIndex].value;
    547567    }
    548568    dropdown.onchange = onCatChange;
Note: See TracChangeset for help on using the changeset viewer.