diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 07:56:49 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 07:56:49 +0000 |
commit | a415c29efee45520ae252d2aa28f1083a521cd7b (patch) | |
tree | f4ade4b6668ecc0765de7e1424f7c1427ad433ff /wp-includes/ms-network.php | |
parent | Initial commit. (diff) | |
download | wordpress-a415c29efee45520ae252d2aa28f1083a521cd7b.tar.xz wordpress-a415c29efee45520ae252d2aa28f1083a521cd7b.zip |
Adding upstream version 6.4.3+dfsg1.upstream/6.4.3+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'wp-includes/ms-network.php')
-rw-r--r-- | wp-includes/ms-network.php | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/wp-includes/ms-network.php b/wp-includes/ms-network.php new file mode 100644 index 0000000..8ab8819 --- /dev/null +++ b/wp-includes/ms-network.php @@ -0,0 +1,141 @@ +<?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; + } + + $network_ids = (array) $ids; + wp_cache_delete_multiple( $network_ids, 'networks' ); + + foreach ( $network_ids as $id ) { + /** + * 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( '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 ) { + $data = array(); + foreach ( (array) $networks as $network ) { + $data[ $network->id ] = $network; + } + wp_cache_add_multiple( $data, 'networks' ); +} + +/** + * Adds any networks from the given IDs to the cache that do not already exist in cache. + * + * @since 4.6.0 + * @since 6.1.0 This function is no longer marked as "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)", implode( ',', array_map( 'intval', $non_cached_ids ) ) ) ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared + + update_network_cache( $fresh_networks ); + } +} |