WordPress.org

Make WordPress Core

Ticket #24921: 24921.2.patch

File 24921.2.patch, 2.1 KB (added by azaozz, 9 months ago)
  • wp-includes/option.php

     
    543543        if ( ! $user = wp_get_current_user() ) 
    544544                return; 
    545545 
    546         if ( is_super_admin( $user->ID ) && 
    547                 ! in_array( get_current_blog_id(), array_keys( get_blogs_of_user( $user->ID ) ) ) 
    548                 ) 
     546        if ( is_super_admin() && ! is_user_member_of_blog() ) 
    549547                return; 
    550548 
    551         $settings = get_user_option( 'user-settings', $user->ID ); 
     549        $settings = (string) get_user_option( 'user-settings', $user->ID ); 
    552550 
    553551        if ( isset( $_COOKIE['wp-settings-' . $user->ID] ) ) { 
    554552                $cookie = preg_replace( '/[^A-Za-z0-9=&_]/', '', $_COOKIE['wp-settings-' . $user->ID] ); 
    555553 
    556                 if ( ! empty( $cookie ) && strpos( $cookie, '=' ) ) { 
    557                         if ( $cookie == $settings ) 
    558                                 return; 
     554                // No change or both empty 
     555                if ( $cookie == $settings ) 
     556                        return; 
    559557 
    560                         $last_time = (int) get_user_option( 'user-settings-time', $user->ID ); 
    561                         $saved = isset( $_COOKIE['wp-settings-time-' . $user->ID]) ? preg_replace( '/[^0-9]/', '', $_COOKIE['wp-settings-time-' . $user->ID] ) : 0; 
     558                $last_time = (int) get_user_option( 'user-settings-time', $user->ID ); 
     559                $saved = isset( $_COOKIE['wp-settings-time-' . $user->ID]) ? preg_replace( '/[^0-9]/', '', $_COOKIE['wp-settings-time-' . $user->ID] ) : 0; 
    562560 
    563                         if ( $saved > $last_time ) { 
    564                                 update_user_option( $user->ID, 'user-settings', $cookie, false ); 
    565                                 update_user_option( $user->ID, 'user-settings-time', time() - 5, false ); 
    566                                 return; 
    567                         } 
     561                // The cookie is newer than the saved value. Update the user_option and leave the cookie as-is 
     562                if ( $saved > $last_time ) { 
     563                        update_user_option( $user->ID, 'user-settings', $cookie, false ); 
     564                        update_user_option( $user->ID, 'user-settings-time', time() - 5, false ); 
     565                        return; 
    568566                } 
    569567        } 
    570568 
     569        // The cookie is not set in the current browser or the saved value is newer. 
    571570        setcookie( 'wp-settings-' . $user->ID, $settings, time() + YEAR_IN_SECONDS, SITECOOKIEPATH ); 
    572571        setcookie( 'wp-settings-time-' . $user->ID, time(), time() + YEAR_IN_SECONDS, SITECOOKIEPATH ); 
    573572        $_COOKIE['wp-settings-' . $user->ID] = $settings;