Make WordPress Core


Ignore:
Timestamp:
09/29/2011 09:41:22 PM (14 years ago)
Author:
ryan
Message:
  • Move the old sidebars_widgets array upgrade code to wp-admin/includes/upgrade.php
  • Avoid infinite loop with wp_get_sidebars_widgets()
  • Remove two unneeded wp_get_sidebars_widgets() calls
  • Remove unused $wp_registered_sidebars variable from wp_get_sidebars_widgets().
  • Combine a couple of !empty( $sidebars_widgets ) checks in retrieve_widgets()

Props SergeyBiryukov, lancewillett. fixes #17979 #18598

File:
1 edited

Legend:

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

    r18678 r18821  
    999999        _deprecated_argument( __FUNCTION__, '2.8.1' );
    10001000
    1001     global $wp_registered_widgets, $wp_registered_sidebars, $_wp_sidebars_widgets;
     1001    global $wp_registered_widgets, $_wp_sidebars_widgets, $sidebars_widgets;
    10021002
    10031003    // If loading from front page, consult $_wp_sidebars_widgets rather than options
     
    10101010    } else {
    10111011        $sidebars_widgets = get_option('sidebars_widgets', array());
    1012         $_sidebars_widgets = array();
    1013 
    1014         if ( isset($sidebars_widgets['wp_inactive_widgets']) || empty($sidebars_widgets) )
    1015             $sidebars_widgets['array_version'] = 3;
    1016         elseif ( !isset($sidebars_widgets['array_version']) )
    1017             $sidebars_widgets['array_version'] = 1;
    1018 
    1019         switch ( $sidebars_widgets['array_version'] ) {
    1020             case 1 :
    1021                 foreach ( (array) $sidebars_widgets as $index => $sidebar )
    1022                 if ( is_array($sidebar) )
    1023                 foreach ( (array) $sidebar as $i => $name ) {
    1024                     $id = strtolower($name);
    1025                     if ( isset($wp_registered_widgets[$id]) ) {
    1026                         $_sidebars_widgets[$index][$i] = $id;
    1027                         continue;
    1028                     }
    1029                     $id = sanitize_title($name);
    1030                     if ( isset($wp_registered_widgets[$id]) ) {
    1031                         $_sidebars_widgets[$index][$i] = $id;
    1032                         continue;
    1033                     }
    1034 
    1035                     $found = false;
    1036 
    1037                     foreach ( $wp_registered_widgets as $widget_id => $widget ) {
    1038                         if ( strtolower($widget['name']) == strtolower($name) ) {
    1039                             $_sidebars_widgets[$index][$i] = $widget['id'];
    1040                             $found = true;
    1041                             break;
    1042                         } elseif ( sanitize_title($widget['name']) == sanitize_title($name) ) {
    1043                             $_sidebars_widgets[$index][$i] = $widget['id'];
    1044                             $found = true;
    1045                             break;
    1046                         }
    1047                     }
    1048 
    1049                     if ( $found )
    1050                         continue;
    1051 
    1052                     unset($_sidebars_widgets[$index][$i]);
    1053                 }
    1054                 $_sidebars_widgets['array_version'] = 2;
    1055                 $sidebars_widgets = $_sidebars_widgets;
    1056                 unset($_sidebars_widgets);
    1057 
    1058             case 2 :
    1059                 $sidebars_widgets = retrieve_widgets();
    1060         }
    10611012    }
    10621013
     
    12201171        remove_theme_mod( 'sidebars_widgets' );
    12211172    } else {
    1222         if ( ! is_array( $sidebars_widgets ) )
    1223             $sidebars_widgets = wp_get_sidebars_widgets();
     1173        if ( empty( $sidebars_widgets ) )
     1174            return;
    12241175
    12251176        $sidebars = array_keys($wp_registered_sidebars);
     
    12351186
    12361187        $_sidebars_widgets = array(
    1237             'wp_inactive_widgets' => $sidebars_widgets['wp_inactive_widgets']
     1188            'wp_inactive_widgets' => !empty( $sidebars_widgets['wp_inactive_widgets'] ) ? $sidebars_widgets['wp_inactive_widgets'] : array()
    12381189        );
    12391190
    12401191        unset( $sidebars_widgets['wp_inactive_widgets'] );
    12411192
    1242         foreach ( $wp_registered_sidebars as $id => $settings ) {
    1243             if ( ! empty( $sidebars_widgets ) )
    1244                 $_sidebars_widgets[$id] = array_shift( $sidebars_widgets );
    1245         }
    1246 
    1247         if ( !empty($sidebars_widgets) ) {
    1248             $orphaned = 0;
    1249 
    1250             foreach ( $sidebars_widgets as $val ) {
    1251                 if ( is_array($val) && ! empty( $val ) )
    1252                     $_sidebars_widgets['orphaned_widgets_' . ++$orphaned] = $val;
    1253             }
     1193        foreach ( $wp_registered_sidebars as $id => $settings )
     1194            $_sidebars_widgets[$id] = array_shift( $sidebars_widgets );
     1195
     1196        $orphaned = 0;
     1197
     1198        foreach ( $sidebars_widgets as $val ) {
     1199            if ( is_array($val) && ! empty( $val ) )
     1200                $_sidebars_widgets['orphaned_widgets_' . ++$orphaned] = $val;
    12541201        }
    12551202    }
Note: See TracChangeset for help on using the changeset viewer.