WordPress.org

Make WordPress Core

Ticket #10300: 10300.5.diff

File 10300.5.diff, 5.1 KB (added by Denis-de-Bernardy, 6 years ago)

deprecate the array version

  • wp-includes/widgets.php

     
    953953 * @since 2.2.0 
    954954 * @access private 
    955955 * 
    956  * @param bool $update Optional, default is true. Whether to save upgrade of widget array list. 
    957  * @return array Upgraded list of widgets to version 2 array format. 
     956 * @return array filtered sidebars_widgets. 
    958957 */ 
    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; 
     958function 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); 
    1046962} 
    1047963 
    1048964/** 
     
    1054970 * @param array $sidebars_widgets Sidebar widgets and their settings. 
    1055971 */ 
    1056972function wp_set_sidebars_widgets( $sidebars_widgets ) { 
    1057         if ( !isset( $sidebars_widgets['array_version'] ) ) 
    1058                 $sidebars_widgets['array_version'] = 3; 
     973        unset($sidebars_widgets['array_version']); // deprecated 
    1059974        update_option( 'sidebars_widgets', $sidebars_widgets ); 
    1060975} 
    1061976 
     
    10861001 * @return array 
    10871002 */ 
    10881003function wp_convert_widget_settings($base_name, $option_name, $settings) { 
    1089         global $_wp_sidebars_widgets; 
    10901004        // This test may need expanding. 
    1091         $single = false; 
     1005        $single = $changed = false; 
    10921006        if ( empty($settings) ) { 
    10931007                $single = true; 
    10941008        } else { 
     
    11071021 
    11081022                // If loading from the front page, update sidebar in memory but don't save to options 
    11091023                if ( is_admin() ) { 
    1110                         $sidebars_widgets = get_option('sidebars_widgets'); 
     1024                        $sidebars_widgets = get_option('sidebars_widgets', array()); 
    11111025                } else { 
    11121026                        if ( empty($GLOBALS['_wp_sidebars_widgets']) ) 
    1113                                 $GLOBALS['_wp_sidebars_widgets'] = get_option('sidebars_widgets'); 
     1027                                $GLOBALS['_wp_sidebars_widgets'] = get_option('sidebars_widgets', array()); 
    11141028                        $sidebars_widgets = &$GLOBALS['_wp_sidebars_widgets']; 
    11151029                } 
    11161030 
     
    11191033                                foreach ( $sidebar as $i => $name ) { 
    11201034                                        if ( $base_name == $name ) { 
    11211035                                                $sidebars_widgets[$index][$i] = "$name-2"; 
     1036                                                $changed = true; 
    11221037                                                break 2; 
    11231038                                        } 
    11241039                                } 
    11251040                        } 
    11261041                } 
    11271042 
    1128                 if ( is_admin() ) 
    1129                         update_option('sidebars_widgets', $sidebars_widgets); 
     1043                if ( is_admin() && $changed ) 
     1044                        wp_set_sidebars_widgets('sidebars_widgets'); 
    11301045        } 
    11311046 
    11321047        $settings['_multiwidget'] = 1;