home/wwgoat/public_html/blog/wp-includes/class-wp-site.php 0000644 00000016436 14720640602 0017702 0 ustar 00 get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->blogs} WHERE blog_id = %d LIMIT 1", $site_id ) );
if ( empty( $_site ) || is_wp_error( $_site ) ) {
$_site = -1;
}
wp_cache_add( $site_id, $_site, 'sites' );
}
if ( is_numeric( $_site ) ) {
return false;
}
return new WP_Site( $_site );
}
/**
* Creates a new WP_Site object.
*
* Will populate object properties from the object provided and assign other
* default properties based on that information.
*
* @since 4.5.0
*
* @param WP_Site|object $site A site object.
*/
public function __construct( $site ) {
foreach ( get_object_vars( $site ) as $key => $value ) {
$this->$key = $value;
}
}
/**
* Converts an object to array.
*
* @since 4.6.0
*
* @return array Object as array.
*/
public function to_array() {
return get_object_vars( $this );
}
/**
* Getter.
*
* Allows current multisite naming conventions when getting properties.
* Allows access to extended site properties.
*
* @since 4.6.0
*
* @param string $key Property to get.
* @return mixed Value of the property. Null if not available.
*/
public function __get( $key ) {
switch ( $key ) {
case 'id':
return (int) $this->blog_id;
case 'network_id':
return (int) $this->site_id;
case 'blogname':
case 'siteurl':
case 'post_count':
case 'home':
default: // Custom properties added by 'site_details' filter.
if ( ! did_action( 'ms_loaded' ) ) {
return null;
}
$details = $this->get_details();
if ( isset( $details->$key ) ) {
return $details->$key;
}
}
return null;
}
/**
* Isset-er.
*
* Allows current multisite naming conventions when checking for properties.
* Checks for extended site properties.
*
* @since 4.6.0
*
* @param string $key Property to check if set.
* @return bool Whether the property is set.
*/
public function __isset( $key ) {
switch ( $key ) {
case 'id':
case 'network_id':
return true;
case 'blogname':
case 'siteurl':
case 'post_count':
case 'home':
if ( ! did_action( 'ms_loaded' ) ) {
return false;
}
return true;
default: // Custom properties added by 'site_details' filter.
if ( ! did_action( 'ms_loaded' ) ) {
return false;
}
$details = $this->get_details();
if ( isset( $details->$key ) ) {
return true;
}
}
return false;
}
/**
* Setter.
*
* Allows current multisite naming conventions while setting properties.
*
* @since 4.6.0
*
* @param string $key Property to set.
* @param mixed $value Value to assign to the property.
*/
public function __set( $key, $value ) {
switch ( $key ) {
case 'id':
$this->blog_id = (string) $value;
break;
case 'network_id':
$this->site_id = (string) $value;
break;
default:
$this->$key = $value;
}
}
/**
* Retrieves the details for this site.
*
* This method is used internally to lazy-load the extended properties of a site.
*
* @since 4.6.0
*
* @see WP_Site::__get()
*
* @return stdClass A raw site object with all details included.
*/
private function get_details() {
$details = wp_cache_get( $this->blog_id, 'site-details' );
if ( false === $details ) {
switch_to_blog( $this->blog_id );
// Create a raw copy of the object for backward compatibility with the filter below.
$details = new stdClass();
foreach ( get_object_vars( $this ) as $key => $value ) {
$details->$key = $value;
}
$details->blogname = get_option( 'blogname' );
$details->siteurl = get_option( 'siteurl' );
$details->post_count = get_option( 'post_count' );
$details->home = get_option( 'home' );
restore_current_blog();
wp_cache_set( $this->blog_id, $details, 'site-details' );
}
/** This filter is documented in wp-includes/ms-blogs.php */
$details = apply_filters_deprecated( 'blog_details', array( $details ), '4.7.0', 'site_details' );
/**
* Filters a site's extended properties.
*
* @since 4.6.0
*
* @param stdClass $details The site details.
*/
$details = apply_filters( 'site_details', $details );
return $details;
}
}