| 959 | | function wp_get_sidebars_widgets($update = true) { |
| 960 | | global $wp_registered_widgets, $wp_registered_sidebars, $_wp_sidebars_widgets; |
| 961 | | |
| 962 | | // If loading from front page, consult $_wp_sidebars_widgets rather than options |
| 963 | | // to see if wp_convert_widget_settings() has made manipulations in memory. |
| 964 | | if ( is_admin() ) { |
| 965 | | $sidebars_widgets = get_option('sidebars_widgets', array()); |
| 966 | | } else { |
| 967 | | if ( empty($_wp_sidebars_widgets) ) |
| 968 | | $sidebars_widgets = get_option('sidebars_widgets', array()); |
| 969 | | else |
| 970 | | $sidebars_widgets = &$_wp_sidebars_widgets; |
| 971 | | } |
| 972 | | $_sidebars_widgets = array(); |
| 973 | | |
| 974 | | if ( !isset($sidebars_widgets['array_version']) ) |
| 975 | | $sidebars_widgets['array_version'] = 1; |
| 976 | | |
| 977 | | switch ( $sidebars_widgets['array_version'] ) { |
| 978 | | case 1 : |
| 979 | | foreach ( (array) $sidebars_widgets as $index => $sidebar ) |
| 980 | | if ( is_array($sidebar) ) |
| 981 | | foreach ( (array) $sidebar as $i => $name ) { |
| 982 | | $id = strtolower($name); |
| 983 | | if ( isset($wp_registered_widgets[$id]) ) { |
| 984 | | $_sidebars_widgets[$index][$i] = $id; |
| 985 | | continue; |
| 986 | | } |
| 987 | | $id = sanitize_title($name); |
| 988 | | if ( isset($wp_registered_widgets[$id]) ) { |
| 989 | | $_sidebars_widgets[$index][$i] = $id; |
| 990 | | continue; |
| 991 | | } |
| 992 | | |
| 993 | | $found = false; |
| 994 | | |
| 995 | | foreach ( $wp_registered_widgets as $widget_id => $widget ) { |
| 996 | | if ( strtolower($widget['name']) == strtolower($name) ) { |
| 997 | | $_sidebars_widgets[$index][$i] = $widget['id']; |
| 998 | | $found = true; |
| 999 | | break; |
| 1000 | | } elseif ( sanitize_title($widget['name']) == sanitize_title($name) ) { |
| 1001 | | $_sidebars_widgets[$index][$i] = $widget['id']; |
| 1002 | | $found = true; |
| 1003 | | break; |
| 1004 | | } |
| 1005 | | } |
| 1006 | | |
| 1007 | | if ( $found ) |
| 1008 | | continue; |
| 1009 | | |
| 1010 | | unset($_sidebars_widgets[$index][$i]); |
| 1011 | | } |
| 1012 | | $_sidebars_widgets['array_version'] = 2; |
| 1013 | | $sidebars_widgets = $_sidebars_widgets; |
| 1014 | | unset($_sidebars_widgets); |
| 1015 | | |
| 1016 | | case 2 : |
| 1017 | | $sidebars = array_keys( $wp_registered_sidebars ); |
| 1018 | | if ( !empty( $sidebars ) ) { |
| 1019 | | // Move the known-good ones first |
| 1020 | | foreach ( (array) $sidebars as $id ) { |
| 1021 | | if ( array_key_exists( $id, $sidebars_widgets ) ) { |
| 1022 | | $_sidebars_widgets[$id] = $sidebars_widgets[$id]; |
| 1023 | | unset($sidebars_widgets[$id], $sidebars[$id]); |
| 1024 | | } |
| 1025 | | } |
| 1026 | | |
| 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; |
| 1031 | | |
| 1032 | | $_sidebars_widgets['array_version'] = 3; |
| 1033 | | $sidebars_widgets = $_sidebars_widgets; |
| 1034 | | unset($_sidebars_widgets); |
| 1035 | | } |
| 1036 | | |
| 1037 | | if ( $update && is_admin() ) |
| 1038 | | update_option('sidebars_widgets', $sidebars_widgets); |
| 1039 | | } |
| 1040 | | |
| 1041 | | if ( isset($sidebars_widgets['array_version']) ) |
| 1042 | | unset($sidebars_widgets['array_version']); |
| 1043 | | |
| 1044 | | $sidebars_widgets = apply_filters('sidebars_widgets', $sidebars_widgets); |
| 1045 | | return $sidebars_widgets; |
| | 958 | function wp_get_sidebars_widgets($deprecated = true) { |
| | 959 | $sidebars_widgets = get_option('sidebars_widgets', array()); |
| | 960 | $sidebars_widgets['array_version']; // deprecated |
| | 961 | return apply_filters('sidebars_widgets', $sidebars_widgets); |