Make WordPress Core

Ticket #36935: 36935.9.diff

File 36935.9.diff, 5.9 KB (added by flixos90, 9 years ago)
  • src/wp-includes/class-wp-site.php

     
    218218         * Getter.
    219219         *
    220220         * Allows current multisite naming conventions when getting properties.
     221         * Allows access to extended site properties.
    221222         *
    222223         * @since 4.6.0
    223224         * @access public
     
    235236                                return $this->site_id;
    236237                        case 'network_id':
    237238                                return (int) $this->site_id;
     239                        case 'blogname':
     240                        case 'siteurl':
     241                        case 'post_count':
     242                        case 'home':
     243                                if ( ! did_action( 'ms_loaded' ) ) {
     244                                        return null;
     245                                }
     246                                $details = $this->get_details();
     247                                return $details->$key;
    238248                }
    239249
    240250                return null;
     
    244254         * Isset-er.
    245255         *
    246256         * Allows current multisite naming conventions when checking for properties.
     257         * Checks for extended site properties.
    247258         *
    248259         * @since 4.6.0
    249260         * @access public
     
    258269                        case 'site_id':
    259270                        case 'network_id':
    260271                                return true;
     272                        case 'blogname':
     273                        case 'siteurl':
     274                        case 'post_count':
     275                        case 'home':
     276                                if ( ! did_action( 'ms_loaded' ) ) {
     277                                        return false;
     278                                }
     279                                return true;
    261280                }
    262281
    263282                return false;
     
    288307                                $this->$key = $value;
    289308                }
    290309        }
     310
     311        /**
     312         * Retrieve the details for this site.
     313         *
     314         * This method is used internally to lazy-load the extended properties of a site.
     315         *
     316         * @since 4.6.0
     317         * @access private
     318         *
     319         * @see WP_Site::__get()
     320         *
     321         * @return object A raw site object with all details included.
     322         */
     323        private function get_details() {
     324                $details = wp_cache_get( $this->blog_id, 'site-details' );
     325
     326                if ( false === $details ) {
     327
     328                        switch_to_blog( $this->blog_id );
     329                        // Create a raw copy of the object for backwards compatibility with the filter below.
     330                        $details = new stdClass();
     331                        foreach ( get_object_vars( $this ) as $key => $value ) {
     332                                $details->$key = $value;
     333                        }
     334                        $details->blogname   = get_option( 'blogname' );
     335                        $details->siteurl    = get_option( 'siteurl' );
     336                        $details->post_count = get_option( 'post_count' );
     337                        $details->home       = get_option( 'home' );
     338                        restore_current_blog();
     339
     340                        $cache_details = true;
     341                        foreach ( array( 'blogname', 'siteurl', 'post_count', 'home' ) as $field ) {
     342                                if ( false === $details->$field ) {
     343                                        $cache_details = false;
     344                                        break;
     345                                }
     346                        }
     347
     348                        if ( $cache_details ) {
     349                                wp_cache_set( $this->blog_id, $details, 'site-details' );
     350                        }
     351                }
     352
     353                /**
     354                 * Filters a site's extended properties.
     355                 *
     356                 * @since 4.6.0
     357                 *
     358                 * @param object $details The site details.
     359                 */
     360                $details = apply_filters( 'site_details', $details );
     361
     362                return $details;
     363        }
    291364}
  • src/wp-includes/load.php

     
    509509                wp_cache_init();
    510510
    511511        if ( function_exists( 'wp_cache_add_global_groups' ) ) {
    512                 wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache', 'networks', 'sites' ) );
     512                wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'site-details', 'rss', 'global-posts', 'blog-id-cache', 'networks', 'sites' ) );
    513513                wp_cache_add_non_persistent_groups( array( 'counts', 'plugins' ) );
    514514        }
    515515}
  • src/wp-includes/ms-blogs.php

     
    455455        $domain_path_key = md5( $blog->domain . $blog->path );
    456456
    457457        wp_cache_delete( $blog_id, 'sites' );
     458        wp_cache_delete( $blog_id, 'site-details' );
    458459        wp_cache_delete( $blog_id , 'blog-details' );
    459460        wp_cache_delete( $blog_id . 'short' , 'blog-details' );
    460461        wp_cache_delete(  $domain_path_key, 'blog-lookup' );
     
    822823                        if ( is_array( $global_groups ) ) {
    823824                                wp_cache_add_global_groups( $global_groups );
    824825                        } else {
    825                                 wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache', 'networks', 'sites' ) );
     826                                wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache', 'networks', 'sites', 'site-details' ) );
    826827                        }
    827828                        wp_cache_add_non_persistent_groups( array( 'counts', 'plugins' ) );
    828829                }
     
    893894                        if ( is_array( $global_groups ) ) {
    894895                                wp_cache_add_global_groups( $global_groups );
    895896                        } else {
    896                                 wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache', 'networks', 'sites' ) );
     897                                wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache', 'networks', 'sites', 'site-details' ) );
    897898                        }
    898899                        wp_cache_add_non_persistent_groups( array( 'counts', 'plugins' ) );
    899900                }
  • src/wp-includes/ms-settings.php

     
    104104
    105105// Define upload directory constants
    106106ms_upload_constants();
     107
     108/**
     109 * Fires after the current site and network have been detected and loaded.
     110 *
     111 * @since 4.6.0
     112 */
     113do_action( 'ms_loaded' );