Make WordPress Core


Ignore:
Timestamp:
04/24/2009 06:27:06 AM (17 years ago)
Author:
azaozz
Message:

Upgrade widget options only from admin, props ryan, fixes #9629

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/widgets.php

    r11045 r11074  
    341341$wp_registered_widget_updates = array();
    342342
     343/**
     344 * Private
     345 */
     346$_wp_sidebars_widgets = array();
     347
    343348/* Template tags & API functions */
    344349
     
    837842 */
    838843function wp_get_sidebars_widgets($update = true) {
    839         global $wp_registered_widgets, $wp_registered_sidebars;
    840 
    841         $sidebars_widgets = get_option('sidebars_widgets', array());
     844        global $wp_registered_widgets, $wp_registered_sidebars, $_wp_sidebars_widgets;
     845
     846        // If loading from front page, consult $_wp_sidebars_widgets rather than options
     847        // to see if wp_convert_widget_settings() has made manipulations in memory.
     848        if ( is_admin() ) {
     849                $sidebars_widgets = get_option('sidebars_widgets', array());
     850        } else {
     851                if ( empty($_wp_sidebars_widgets) )
     852                        $sidebars_widgets = get_option('sidebars_widgets', array());
     853                else
     854                        $sidebars_widgets = &$_wp_sidebars_widgets;
     855        }
    842856        $_sidebars_widgets = array();
    843857
     
    905919                        }
    906920
    907                         if ( $update )
     921                        if ( $update && is_admin() )
    908922                                update_option('sidebars_widgets', $sidebars_widgets);
    909923        }
     
    957971 */
    958972function wp_convert_widget_settings($base_name, $option_name, $settings) {
     973        global $_wp_sidebars_widgets;
    959974        // This test may need expanding.
    960975        $single = false;
     
    975990                $settings = array( 2 => $settings );
    976991
    977                 $sidebars_widgets = get_option('sidebars_widgets');
     992                // If loading from the front page, update sidebar in memory but don't save to options
     993                if ( is_admin() ) {
     994                        $sidebars_widgets = get_option('sidebars_widgets');
     995                } else {
     996                        if ( empty($GLOBALS['_wp_sidebars_widgets']) )
     997                                $GLOBALS['_wp_sidebars_widgets'] = get_option('sidebars_widgets');
     998                        $sidebars_widgets = &$GLOBALS['_wp_sidebars_widgets'];
     999                }
     1000               
    9781001                foreach ( (array) $sidebars_widgets as $index => $sidebar ) {
    9791002                        if ( is_array($sidebar) ) {
     
    9871010                }
    9881011
    989                 update_option('sidebars_widgets', $sidebars_widgets);
     1012                if ( is_admin() )
     1013                        update_option('sidebars_widgets', $sidebars_widgets);
    9901014        }
    9911015
    9921016        $settings['_multiwidget'] = 1;
    993         update_option( $option_name, $settings );
     1017        if ( is_admin() )
     1018                update_option( $option_name, $settings );
    9941019
    9951020        return $settings;
Note: See TracChangeset for help on using the changeset viewer.