diff -r c7c34916027a -r 177826044cd9 wp/wp-includes/ms-network.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wp/wp-includes/ms-network.php Mon Oct 14 18:28:13 2019 +0200 @@ -0,0 +1,138 @@ +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 ); + } +}