| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 | <?php/** * Network API * * @package WordPress * @subpackage Multisite * @since 5.1.0 *//** * Retrieves network data given a network ID or network object. * * Network data will be cached and returned after being passed through a filter. * If the provided network is empty, the current network global will be used. * * @since 4.6.0 * * @global WP_Network $current_site * * @param WP_Network|int|null $network Optional. Network to retrieve. Default is the current network. * @return WP_Network|null The network object or null if not found. */function get_network( $network = null ) {	global $current_site;	if ( empty( $network ) && isset( $current_site ) ) {		$network = $current_site;	}	if ( $network instanceof WP_Network ) {		$_network = $network;	} elseif ( is_object( $network ) ) {		$_network = new WP_Network( $network );	} else {		$_network = WP_Network::get_instance( $network );	}	if ( ! $_network ) {		return null;	}	/**	 * Fires after a network is retrieved.	 *	 * @since 4.6.0	 *	 * @param WP_Network $_network Network data.	 */	$_network = apply_filters( 'get_network', $_network );	return $_network;}/** * Retrieves a list of networks. * * @since 4.6.0 * * @param string|array $args Optional. Array or string of arguments. See WP_Network_Query::parse_query() *                           for information on accepted arguments. Default empty array. * @return array|int List of WP_Network objects, a list of network ids when 'fields' is set to 'ids', *                   or the number of networks when 'count' is passed as a query var. */function get_networks( $args = array() ) {	$query = new WP_Network_Query();	return $query->query( $args );}/** * Removes a network from the object cache. * * @since 4.6.0 * * @global bool $_wp_suspend_cache_invalidation * * @param int|array $ids Network ID or an array of network IDs to remove from cache. */function clean_network_cache( $ids ) {	global $_wp_suspend_cache_invalidation;	if ( ! empty( $_wp_suspend_cache_invalidation ) ) {		return;	}	foreach ( (array) $ids as $id ) {		wp_cache_delete( $id, 'networks' );		/**		 * Fires immediately after a network has been removed from the object cache.		 *		 * @since 4.6.0		 *		 * @param int $id Network ID.		 */		do_action( 'clean_network_cache', $id );	}	wp_cache_set( 'last_changed', microtime(), 'networks' );}/** * Updates the network cache of given networks. * * Will add the networks in $networks to the cache. If network ID already exists * in the network cache then it will not be updated. The network is added to the * cache using the network group with the key using the ID of the networks. * * @since 4.6.0 * * @param array $networks Array of network row objects. */function update_network_cache( $networks ) {	foreach ( (array) $networks as $network ) {		wp_cache_add( $network->id, $network, 'networks' );	}}/** * Adds any networks from the given IDs to the cache that do not already exist in cache. * * @since 4.6.0 * @access private * * @see update_network_cache() * @global wpdb $wpdb WordPress database abstraction object. * * @param array $network_ids Array of network IDs. */function _prime_network_caches( $network_ids ) {	global $wpdb;	$non_cached_ids = _get_non_cached_ids( $network_ids, 'networks' );	if ( ! empty( $non_cached_ids ) ) {		$fresh_networks = $wpdb->get_results( sprintf( "SELECT $wpdb->site.* FROM $wpdb->site WHERE id IN (%s)", join( ',', array_map( 'intval', $non_cached_ids ) ) ) ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared		update_network_cache( $fresh_networks );	}}
 |