Make WordPress Core


Ignore:
Timestamp:
09/29/2011 09:41:22 PM (13 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.