--- plugins/context_reaction_block.inc	2010-08-06 11:13:32.000000000 -0500
+++ plugins/context_reaction_block.inc	2011-02-22 13:30:41.000000000 -0600
@@ -332,24 +332,43 @@
     // only if the request method is 'GET'.
     static $cacheable;
     if (!isset($cacheable) || $reset) {
-      $cacheable = !count(module_implements('node_grants')) && $_SERVER['REQUEST_METHOD'] == 'GET';
+    	if (module_exists('blockcache_alter') && $_SERVER['REQUEST_METHOD'] == 'GET') {
+    		$cacheable = '1';
+    	}
+      else{
+      	$cacheable = !count(module_implements('node_grants')) && $_SERVER['REQUEST_METHOD'] == 'GET';
+      }
     }
 
     if (!isset($block->content)) {
       $block->content = '';
       // Try fetching the block from cache.
       if ($cacheable && ($cid = _block_get_cache_id($block))) {
-        if ($cache = cache_get($cid, 'cache_block')) {
-          $array = $cache->data;
-        }
-        else {
-          $array = module_invoke($block->module, 'block', 'view', $block->delta);
-          cache_set($cid, $array, 'cache_block', CACHE_TEMPORARY);
+      	if (module_exists('blockcache_alter')) {
+        	if (($cache = cache_get($cid, 'cache_block')) && (_blockcache_alter_check_expire($cache, time()))) {
+          	$array = $cache->data;
+        	}
+        	else {
+          	$array = module_invoke('blockcache_alter', 'block', 'view', $block->module.','.$block->delta);
+          	cache_set($cid, $array, 'cache_block', CACHE_TEMPORARY);
+        	}
+        }else{
+        	if (($cache = cache_get($cid, 'cache_block'))) {
+          	$array = $cache->data;
+        	}
+        	else {
+          	$array = module_invoke($block->module, 'block', 'view', $block->delta);
+          	cache_set($cid, $array, 'cache_block', CACHE_TEMPORARY);
+        	}
         }
       }
       // Otherwise build block.
       else {
-        $array = module_invoke($block->module, 'block', 'view', $block->delta);
+      	if (module_exists('blockcache_alter')) {
+        	$array = module_invoke('blockcache_alter', 'block', 'view', $block->module.','.$block->delta);
+        }else{
+        	$array = module_invoke($block->module, 'block', 'view', $block->delta);
+        }
       }
       if (isset($array) && is_array($array)) {
         foreach ($array as $k => $v) {
