Ticket #10300: 10300.4.patch
File 10300.4.patch, 2.7 KB (added by , 16 years ago) |
---|
-
wp-includes/widgets.php
965 965 $sidebars_widgets = get_option('sidebars_widgets', array()); 966 966 } else { 967 967 if ( empty($_wp_sidebars_widgets) ) 968 $ sidebars_widgets = get_option('sidebars_widgets', array());969 else 970 $sidebars_widgets = &$_wp_sidebars_widgets;968 $_wp_sidebars_widgets = get_option('sidebars_widgets', array()); 969 970 $sidebars_widgets = $_wp_sidebars_widgets; 971 971 } 972 972 $_sidebars_widgets = array(); 973 973 974 if ( !isset($sidebars_widgets['array_version']) ) 974 if ( isset($sidebars_widgets['wp_inactive_widgets']) ) 975 $sidebars_widgets['array_version'] = 3; 976 elseif ( !isset($sidebars_widgets['array_version']) ) 975 977 $sidebars_widgets['array_version'] = 1; 976 978 977 979 switch ( $sidebars_widgets['array_version'] ) { … … 1024 1026 } 1025 1027 } 1026 1028 1027 // Assign to each unmatched registered sidebar the first available orphan 1028 unset( $sidebars_widgets[ 'array_version' ] ); 1029 while ( ( $sidebar = array_shift( $sidebars ) ) && $widgets = array_shift( $sidebars_widgets ) ) 1030 $_sidebars_widgets[ $sidebar ] = $widgets; 1029 // move the rest to wp_inactive_widgets 1030 if ( !isset($_sidebars_widgets['wp_inactive_widgets']) ) 1031 $_sidebars_widgets['wp_inactive_widgets'] = array(); 1032 1033 if ( !empty($sidebars_widgets) ) { 1034 foreach ( $sidebars_widgets as $lost => $val ) { 1035 if ( is_array($val) ) 1036 $_sidebars_widgets['wp_inactive_widgets'] = array_merge( (array) $_sidebars_widgets['wp_inactive_widgets'], $val ); 1037 } 1038 } 1031 1039 1032 $_sidebars_widgets['array_version'] = 3;1033 1040 $sidebars_widgets = $_sidebars_widgets; 1034 1041 unset($_sidebars_widgets); 1035 1042 } 1036 1043 1044 $sidebars_widgets['array_version'] = 3; 1037 1045 if ( $update && is_admin() ) 1038 1046 update_option('sidebars_widgets', $sidebars_widgets); 1039 1047 } 1040 1048 1049 if ( !is_admin() ) 1050 $_wp_sidebars_widgets = $sidebars_widgets; 1051 1041 1052 if ( isset($sidebars_widgets['array_version']) ) 1042 1053 unset($sidebars_widgets['array_version']); 1043 1054 … … 1086 1097 * @return array 1087 1098 */ 1088 1099 function wp_convert_widget_settings($base_name, $option_name, $settings) { 1089 global $_wp_sidebars_widgets;1090 1100 // This test may need expanding. 1091 $single = false;1101 $single = $changed = false; 1092 1102 if ( empty($settings) ) { 1093 1103 $single = true; 1094 1104 } else { … … 1119 1129 foreach ( $sidebar as $i => $name ) { 1120 1130 if ( $base_name == $name ) { 1121 1131 $sidebars_widgets[$index][$i] = "$name-2"; 1132 $changed = true; 1122 1133 break 2; 1123 1134 } 1124 1135 } 1125 1136 } 1126 1137 } 1127 1138 1128 if ( is_admin() )1139 if ( is_admin() && $changed ) 1129 1140 update_option('sidebars_widgets', $sidebars_widgets); 1130 1141 } 1131 1142