diff -r be944660c56a -r 3d72ae0968f4 wp/wp-includes/cache-compat.php --- a/wp/wp-includes/cache-compat.php Wed Sep 21 18:19:35 2022 +0200 +++ b/wp/wp-includes/cache-compat.php Tue Sep 27 16:37:53 2022 +0200 @@ -2,12 +2,72 @@ /** * Object Cache API functions missing from 3rd party object caches. * - * @link https://codex.wordpress.org/Class_Reference/WP_Object_Cache + * @link https://developer.wordpress.org/reference/classes/wp_object_cache/ * * @package WordPress * @subpackage Cache */ +if ( ! function_exists( 'wp_cache_add_multiple' ) ) : + /** + * Adds multiple values to the cache in one call, if the cache keys don't already exist. + * + * Compat function to mimic wp_cache_add_multiple(). + * + * @ignore + * @since 6.0.0 + * + * @see wp_cache_add_multiple() + * + * @param array $data Array of keys and values to be added. + * @param string $group Optional. Where the cache contents are grouped. Default empty. + * @param int $expire Optional. When to expire the cache contents, in seconds. + * Default 0 (no expiration). + * @return bool[] Array of return values, grouped by key. Each value is either + * true on success, or false if cache key and group already exist. + */ + function wp_cache_add_multiple( array $data, $group = '', $expire = 0 ) { + $values = array(); + + foreach ( $data as $key => $value ) { + $values[ $key ] = wp_cache_add( $key, $value, $group, $expire ); + } + + return $values; + } +endif; + +if ( ! function_exists( 'wp_cache_set_multiple' ) ) : + /** + * Sets multiple values to the cache in one call. + * + * Differs from wp_cache_add_multiple() in that it will always write data. + * + * Compat function to mimic wp_cache_set_multiple(). + * + * @ignore + * @since 6.0.0 + * + * @see wp_cache_set_multiple() + * + * @param array $data Array of keys and values to be set. + * @param string $group Optional. Where the cache contents are grouped. Default empty. + * @param int $expire Optional. When to expire the cache contents, in seconds. + * Default 0 (no expiration). + * @return bool[] Array of return values, grouped by key. Each value is either + * true on success, or false on failure. + */ + function wp_cache_set_multiple( array $data, $group = '', $expire = 0 ) { + $values = array(); + + foreach ( $data as $key => $value ) { + $values[ $key ] = wp_cache_set( $key, $value, $group, $expire ); + } + + return $values; + } +endif; + if ( ! function_exists( 'wp_cache_get_multiple' ) ) : /** * Retrieves multiple values from the cache in one call. @@ -23,7 +83,8 @@ * @param string $group Optional. Where the cache contents are grouped. Default empty. * @param bool $force Optional. Whether to force an update of the local cache * from the persistent cache. Default false. - * @return array Array of values organized into groups. + * @return array Array of return values, grouped by key. Each value is either + * the cache contents on success, or false on failure. */ function wp_cache_get_multiple( $keys, $group = '', $force = false ) { $values = array(); @@ -35,3 +96,48 @@ return $values; } endif; + +if ( ! function_exists( 'wp_cache_delete_multiple' ) ) : + /** + * Deletes multiple values from the cache in one call. + * + * Compat function to mimic wp_cache_delete_multiple(). + * + * @ignore + * @since 6.0.0 + * + * @see wp_cache_delete_multiple() + * + * @param array $keys Array of keys under which the cache to deleted. + * @param string $group Optional. Where the cache contents are grouped. Default empty. + * @return bool[] Array of return values, grouped by key. Each value is either + * true on success, or false if the contents were not deleted. + */ + function wp_cache_delete_multiple( array $keys, $group = '' ) { + $values = array(); + + foreach ( $keys as $key ) { + $values[ $key ] = wp_cache_delete( $key, $group ); + } + + return $values; + } +endif; + +if ( ! function_exists( 'wp_cache_flush_runtime' ) ) : + /** + * Removes all cache items from the in-memory runtime cache. + * + * Compat function to mimic wp_cache_flush_runtime(). + * + * @ignore + * @since 6.0.0 + * + * @see wp_cache_flush_runtime() + * + * @return bool True on success, false on failure. + */ + function wp_cache_flush_runtime() { + return wp_using_ext_object_cache() ? false : wp_cache_flush(); + } +endif;