| @@ -1,4 +1,4 @@ | ||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly |
| 4 | 4 | |
| @@ -56,9 +56,9 @@ | ||
| 56 | 56 | * @param mixed $value_to_save value to save -- usually it's result from DB |
| 57 | 57 | * |
| 58 | 58 | * @return mixed return CLONED $value_to_save |
| 59 | 59 | */ |
| 60 | -function wpbc_cache__save( $function_name, $params, $value_to_save ){ | |
| 60 | +function wpbc_cache__save( $function_name, $params, $value_to_save ){ | |
| 61 | 61 | |
| 62 | 62 | global $wpbc_global_cache; |
| 63 | 63 | |
| 64 | 64 | |
| @@ -77,10 +77,33 @@ | ||
| 77 | 77 | |
| 78 | 78 | // CLONING array of objects |
| 79 | 79 | $wpbc_global_cache[ $function_name ][ $params_cache ] = wpbc_clone_array_of_objects( $value_to_save ); |
| 80 | 80 | |
| 81 | - return $wpbc_global_cache[ $function_name ][ $params_cache ]; | |
| 82 | -} | |
| 81 | + return $wpbc_global_cache[ $function_name ][ $params_cache ]; | |
| 82 | +} | |
| 83 | + | |
| 84 | + | |
| 85 | +/** | |
| 86 | + * Clear all request-local cached results for one function namespace. | |
| 87 | + * | |
| 88 | + * Availability validation uses this immediately before and after a protected | |
| 89 | + * booking save so a result loaded earlier in the request cannot outlive the | |
| 90 | + * database state that was serialized by the booking availability guard. | |
| 91 | + * | |
| 92 | + * @param string $function_name Function cache namespace to clear. | |
| 93 | + * | |
| 94 | + * @return void | |
| 95 | + */ | |
| 96 | +function wpbc_cache__clear( $function_name ) { | |
| 97 | + | |
| 98 | + global $wpbc_global_cache; | |
| 99 | + | |
| 100 | + if ( ! is_array( $wpbc_global_cache ) || ! isset( $wpbc_global_cache[ $function_name ] ) ) { | |
| 101 | + return; | |
| 102 | + } | |
| 103 | + | |
| 104 | + unset( $wpbc_global_cache[ $function_name ] ); | |
| 105 | +} | |
| 83 | 106 | |
| 84 | 107 | |
| 85 | 108 | |
| 86 | 109 | |