WordPress.org

Make WordPress Core

Ticket #10300: 10300.7.diff

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

same as previous without the typo

  • wp-includes/widgets.php

     
    957957 * @return array Upgraded list of widgets to version 2 array format. 
    958958 */ 
    959959function wp_get_sidebars_widgets($update = true) { 
    960         global $wp_registered_widgets, $wp_registered_sidebars, $_wp_sidebars_widgets; 
    961  
     960        global $_wp_sidebars_widgets; 
     961         
    962962        // If loading from front page, consult $_wp_sidebars_widgets rather than options 
    963963        // to see if wp_convert_widget_settings() has made manipulations in memory. 
    964964        if ( is_admin() ) { 
    965965                $sidebars_widgets = get_option('sidebars_widgets', array()); 
    966966        } else { 
    967967                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; 
    971971        } 
    972         $_sidebars_widgets = array(); 
    973972 
    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); 
     973        if ( !isset($sidebars_widgets['array_version']) || $sidebars_widgets['array_version'] != 3 ) { 
     974                $sidebars_widgets = array('array_version' => 3 ); 
     975                if ( $update && is_admin() ) 
     976                        update_option('sidebars_widgets', array()); 
    1039977        } 
    1040978 
    1041         if ( isset($sidebars_widgets['array_version']) ) 
    1042                 unset($sidebars_widgets['array_version']); 
     979        if ( !is_admin() ) 
     980                $_wp_sidebars_widgets = $sidebars_widgets; 
     981         
     982        unset($sidebars_widgets['array_version']); 
    1043983 
    1044984        $sidebars_widgets = apply_filters('sidebars_widgets', $sidebars_widgets); 
    1045985        return $sidebars_widgets; 
     
    10861026 * @return array 
    10871027 */ 
    10881028function wp_convert_widget_settings($base_name, $option_name, $settings) { 
    1089         global $_wp_sidebars_widgets; 
    10901029        // This test may need expanding. 
    1091         $single = false; 
     1030        $single = $changed = false; 
    10921031        if ( empty($settings) ) { 
    10931032                $single = true; 
    10941033        } else { 
     
    11131052                                $GLOBALS['_wp_sidebars_widgets'] = get_option('sidebars_widgets'); 
    11141053                        $sidebars_widgets = &$GLOBALS['_wp_sidebars_widgets']; 
    11151054                } 
     1055                 
     1056                if ( !isset($sidebars_widgets['array_version']) || $sidebars_widgets['array_version'] != 3 ) { 
     1057                        $sidebars_widgets = array('array_version' => 3 ); 
     1058                } 
    11161059 
    11171060                foreach ( (array) $sidebars_widgets as $index => $sidebar ) { 
    11181061                        if ( is_array($sidebar) ) { 
    11191062                                foreach ( $sidebar as $i => $name ) { 
    11201063                                        if ( $base_name == $name ) { 
    11211064                                                $sidebars_widgets[$index][$i] = "$name-2"; 
     1065                                                $changed = true; 
    11221066                                                break 2; 
    11231067                                        } 
    11241068                                } 
    11251069                        } 
    11261070                } 
    11271071 
    1128                 if ( is_admin() ) 
     1072                if ( is_admin() && $changed ) 
    11291073                        update_option('sidebars_widgets', $sidebars_widgets); 
    11301074        } 
    11311075