Make WordPress Core


Ignore:
Timestamp:
09/29/2011 09:41:22 PM (15 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-admin/includes/upgrade.php

    r18643 r18821  
    452452                upgrade_300();
    453453
     454        if ( $wp_current_db_version < 11548 )
     455                upgrade_old_widgets_order_array();
     456
    454457        maybe_disable_automattic_widgets();
    455458
    … …  
    11301133        }
    11311134
     1135}
     1136
     1137/**
     1138 * Convert the old style widgets order array from 2.2.
     1139 *
     1140 * @since 3.3.0
     1141 */
     1142function upgrade_old_widgets_order_array() {
     1143        global $wp_registered_widgets, $sidebars_widgets;
     1144
     1145        $sidebars_widgets = get_option( 'sidebars_widgets', array() );
     1146        $_sidebars_widgets = array();
     1147
     1148        if ( isset($sidebars_widgets['wp_inactive_widgets']) || empty($sidebars_widgets) )
     1149                $sidebars_widgets['array_version'] = 3;
     1150        elseif ( !isset($sidebars_widgets['array_version']) )
     1151                $sidebars_widgets['array_version'] = 1;
     1152
     1153        switch ( $sidebars_widgets['array_version'] ) {
     1154                case 1 :
     1155                        foreach ( (array) $sidebars_widgets as $index => $sidebar )
     1156                        if ( is_array($sidebar) )
     1157                        foreach ( (array) $sidebar as $i => $name ) {
     1158                                $id = strtolower($name);
     1159                                if ( isset($wp_registered_widgets[$id]) ) {
     1160                                        $_sidebars_widgets[$index][$i] = $id;
     1161                                        continue;
     1162                                }
     1163                                $id = sanitize_title($name);
     1164                                if ( isset($wp_registered_widgets[$id]) ) {
     1165                                        $_sidebars_widgets[$index][$i] = $id;
     1166                                        continue;
     1167                                }
     1168
     1169                                $found = false;
     1170
     1171                                foreach ( $wp_registered_widgets as $widget_id => $widget ) {
     1172                                        if ( strtolower($widget['name']) == strtolower($name) ) {
     1173                                                $_sidebars_widgets[$index][$i] = $widget['id'];
     1174                                                $found = true;
     1175                                                break;
     1176                                        } elseif ( sanitize_title($widget['name']) == sanitize_title($name) ) {
     1177                                                $_sidebars_widgets[$index][$i] = $widget['id'];
     1178                                                $found = true;
     1179                                                break;
     1180                                        }
     1181                                }
     1182
     1183                                if ( $found )
     1184                                        continue;
     1185
     1186                                unset($_sidebars_widgets[$index][$i]);
     1187                        }
     1188                        $_sidebars_widgets['array_version'] = 2;
     1189                        $sidebars_widgets = $_sidebars_widgets;
     1190                        unset($_sidebars_widgets);
     1191
     1192                case 2 :
     1193                        $sidebars_widgets = retrieve_widgets();
     1194                        $sidebars_widgets['array_version'] = 3;
     1195                        update_option( 'sidebars_widgets', $sidebars_widgets );
     1196        }
    11321197}
    11331198
Note: See TracChangeset for help on using the changeset viewer.