Index: includes/cache.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/cache.inc,v retrieving revision 1.48 diff -u -p -r1.48 cache.inc --- includes/cache.inc 18 May 2010 18:26:30 -0000 1.48 +++ includes/cache.inc 21 Sep 2010 18:44:30 -0000 @@ -147,11 +147,8 @@ function cache_set($cid, $data, $bin = ' * @param $cid * If set, the cache ID to delete. Otherwise, all cache entries that can * expire are deleted. - * * @param $bin - * If set, the bin $bin to delete from. Mandatory - * argument if $cid is set. - * + * If set, the bin $bin to delete from. Mandatory argument if $cid is set. * @param $wildcard * If $wildcard is TRUE, cache IDs starting with $cid are deleted in * addition to the exact cache ID specified by $cid. If $wildcard is @@ -167,7 +164,19 @@ function cache_clear_all($cid = NULL, $b cache_clear_all(NULL, 'cache_page'); return; } - return _cache_get_object($bin)->clear($cid, $wildcard); + $result = _cache_get_object($bin)->clear($cid, $wildcard); + + // Allow modules to react on cleared caches. + // @todo D8: Replace this with a proper cache invalidation API. + if (!defined('MAINTENANCE_MODE') || MAINTENANCE_MODE != 'install') { + $context = array( + 'wildcard' => $wildcard, + 'result' => $result, + ); + drupal_alter(array('cache_clear', "cache_$bin_clear"), $bin, $cid, $context); + } + + return $result; } /**