diff -Naur modules/forum/forum.module modules/forum/forum.module --- modules/forum/forum.module 2007-08-08 02:27:22.000000000 -0400 +++ modules/forum/forum.module 2007-11-04 19:42:31.000000000 -0500 @@ -709,6 +709,17 @@ */ function forum_get_forums($tid = 0) { + // This caching breaks forum access! The results of db_rewrite_sql will + // be cached, meaning the first user to load this node after a cache + // refresh will set the permissions for everyone. If you are using a module + // that does query rewriting on forum queries, don't use this patch. + // If you're not sure whether or not this is the case, don't use this patch! + $cache = cache_get('forums::'. $tid, 'cache_forum'); + if ($cache) { + $forums = unserialize($cache->data); + return $forums; + } + $forums = array(); $_forums = taxonomy_get_tree(variable_get('forum_nav_vocabulary', ''), $tid); @@ -754,6 +765,8 @@ $forums[$forum->tid] = $forum; } + cache_set('forums::'. $tid, 'cache_forum', serialize($forums)); + return $forums; }