Make WordPress Core

Ticket #36935: 36935.7.diff

File 36935.7.diff, 5.1 KB (added by jeremyfelt, 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                                $details = $this->get_details();
     244                                return $details->$key;
    238245                }
    239246
    240247                return null;
     
    244251         * Isset-er.
    245252         *
    246253         * Allows current multisite naming conventions when checking for properties.
     254         * Checks for extended site properties.
    247255         *
    248256         * @since 4.6.0
    249257         * @access public
     
    257265                        case 'blog_id':
    258266                        case 'site_id':
    259267                        case 'network_id':
     268                        case 'blogname':
     269                        case 'siteurl':
     270                        case 'post_count':
     271                        case 'home':
    260272                                return true;
    261273                }
    262274
     
    288300                                $this->$key = $value;
    289301                }
    290302        }
     303
     304        /**
     305         * Retrieve the details for this site.
     306         *
     307         * This method is used internally to lazy-load the extended properties of a site.
     308         *
     309         * @since 4.6.0
     310         * @access private
     311         *
     312         * @see WP_Site::__get()
     313         *
     314         * @return object A raw site object with all details included.
     315         */
     316        private function get_details() {
     317                $details = wp_cache_get( $this->blog_id, 'site-details' );
     318
     319                if ( false === $details ) {
     320
     321                        switch_to_blog( $this->blog_id );
     322                        // Create a raw copy of the object for backwards compatibility with the filter below.
     323                        $details = new stdClass();
     324                        foreach ( get_object_vars( $this ) as $key => $value ) {
     325                                $details->$key = $value;
     326                        }
     327                        $details->blogname   = get_option( 'blogname' );
     328                        $details->siteurl    = get_option( 'siteurl' );
     329                        $details->post_count = get_option( 'post_count' );
     330                        $details->home       = get_option( 'home' );
     331                        restore_current_blog();
     332
     333                        wp_cache_set( $this->blog_id, $details, 'site-details' );
     334                }
     335
     336                /**
     337                 * Filters a site's extended properties.
     338                 *
     339                 * @since MU
     340                 *
     341                 * @param object $details The site details.
     342                 */
     343                $details = apply_filters( 'site_details', $details );
     344
     345                return $details;
     346        }
    291347}
  • 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                }