WordPress.org

Make WordPress Core

Changeset 38786


Ignore:
Timestamp:
10/13/16 22:27:15 (10 months ago)
Author:
jeremyfelt
Message:

Multisite: Maintain switched state in site icon/logo functions.

Adjusts get_custom_logo(), get_site_icon_url(), and has_custom_logo() so that when called in a switched state, the original switched stack is not adjusted.

Props achbed, flixos90.
Fixes #38253.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/general-template.php

    r38764 r38786  
    784784 */ 
    785785function get_site_icon_url( $size = 512, $url = '', $blog_id = 0 ) { 
    786     if ( is_multisite() && (int) $blog_id !== get_current_blog_id() ) { 
     786    $switched_blog = false; 
     787 
     788    if ( is_multisite() && ! empty( $blog_id ) && (int) $blog_id !== get_current_blog_id() ) { 
    787789        switch_to_blog( $blog_id ); 
     790        $switched_blog = true; 
    788791    } 
    789792 
     
    799802    } 
    800803 
    801     if ( is_multisite() && ms_is_switched() ) { 
     804    if ( $switched_blog ) { 
    802805        restore_current_blog(); 
    803806    } 
     
    849852 */ 
    850853function has_custom_logo( $blog_id = 0 ) { 
    851     if ( is_multisite() && (int) $blog_id !== get_current_blog_id() ) { 
     854    $switched_blog = false; 
     855 
     856    if ( is_multisite() && ! empty( $blog_id ) && (int) $blog_id !== get_current_blog_id() ) { 
    852857        switch_to_blog( $blog_id ); 
     858        $switched_blog = true; 
    853859    } 
    854860 
    855861    $custom_logo_id = get_theme_mod( 'custom_logo' ); 
    856862 
    857     if ( is_multisite() && ms_is_switched() ) { 
     863    if ( $switched_blog ) { 
    858864        restore_current_blog(); 
    859865    } 
     
    872878function get_custom_logo( $blog_id = 0 ) { 
    873879    $html = ''; 
    874  
    875     if ( is_multisite() && (int) $blog_id !== get_current_blog_id() ) { 
     880    $switched_blog = false; 
     881 
     882    if ( is_multisite() && ! empty( $blog_id ) && (int) $blog_id !== get_current_blog_id() ) { 
    876883        switch_to_blog( $blog_id ); 
     884        $switched_blog = true; 
    877885    } 
    878886 
     
    897905    } 
    898906 
    899     if ( is_multisite() && ms_is_switched() ) { 
     907    if ( $switched_blog ) { 
    900908        restore_current_blog(); 
    901909    } 
  • trunk/tests/phpunit/tests/general/template.php

    r38355 r38786  
    489489        $this->assertEquals( $expected, $actual ); 
    490490    } 
     491 
     492    /** 
     493     * @ticket 38253 
     494     */ 
     495    function test_get_site_icon_url_preserves_switched_state() { 
     496        if ( ! is_multisite() ) { 
     497            $this->markTestSkipped( 'This test requires multisite.' ); 
     498        } 
     499 
     500        $blog_id = $this->factory->blog->create(); 
     501        switch_to_blog( $blog_id ); 
     502 
     503        $expected = $GLOBALS['_wp_switched_stack']; 
     504 
     505        get_site_icon_url( 512, '', $blog_id ); 
     506 
     507        $result = $GLOBALS['_wp_switched_stack']; 
     508 
     509        restore_current_blog(); 
     510 
     511        $this->assertSame( $expected, $result ); 
     512    } 
     513 
     514    /** 
     515     * @ticket 38253 
     516     */ 
     517    function test_has_custom_logo_preserves_switched_state() { 
     518        if ( ! is_multisite() ) { 
     519            $this->markTestSkipped( 'This test requires multisite.' ); 
     520        } 
     521 
     522        $blog_id = $this->factory->blog->create(); 
     523        switch_to_blog( $blog_id ); 
     524 
     525        $expected = $GLOBALS['_wp_switched_stack']; 
     526 
     527        has_custom_logo( $blog_id ); 
     528 
     529        $result = $GLOBALS['_wp_switched_stack']; 
     530 
     531        restore_current_blog(); 
     532 
     533        $this->assertSame( $expected, $result ); 
     534    } 
     535 
     536    /** 
     537     * @ticket 38253 
     538     */ 
     539    function test_get_custom_logo_preserves_switched_state() { 
     540        if ( ! is_multisite() ) { 
     541            $this->markTestSkipped( 'This test requires multisite.' ); 
     542        } 
     543 
     544        $blog_id = $this->factory->blog->create(); 
     545        switch_to_blog( $blog_id ); 
     546 
     547        $expected = $GLOBALS['_wp_switched_stack']; 
     548 
     549        get_custom_logo( $blog_id ); 
     550 
     551        $result = $GLOBALS['_wp_switched_stack']; 
     552 
     553        restore_current_blog(); 
     554 
     555        $this->assertSame( $expected, $result ); 
     556    } 
    491557} 
Note: See TracChangeset for help on using the changeset viewer.