diff options
Diffstat (limited to 'modules/forum/forum.module')
-rw-r--r-- | modules/forum/forum.module | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/modules/forum/forum.module b/modules/forum/forum.module index 8473ddde5..ee3b2df98 100644 --- a/modules/forum/forum.module +++ b/modules/forum/forum.module @@ -341,11 +341,25 @@ function forum_nodeapi_delete(&$node, $teaser, $page) { /** * Implementation of hook_nodeapi_load(). */ -function forum_nodeapi_load(&$node, $teaser, $page) { +function forum_nodeapi_load($nodes, $types) { $vid = variable_get('forum_nav_vocabulary', ''); + // If no forum vocabulary is set up, return. + if ($vid == '') { + return; + } $vocabulary = taxonomy_vocabulary_load($vid); - if (_forum_nodeapi_check_node_type($node, $vocabulary)) { - return db_fetch_array(db_query('SELECT tid AS forum_tid FROM {forum} WHERE vid = %d', $node->vid)); + + $node_vids = array(); + foreach ($nodes as $node) { + if (isset($vocabulary->nodes[$node->type])) { + $node_vids[] = $node->vid; + } + } + if (!empty($node_vids)) { + $result = db_query('SELECT nid, tid FROM {forum} WHERE vid IN(' . db_placeholders($node_vids) . ')', $node_vids); + foreach ($result as $record) { + $nodes[$record->nid]->forum_tid = $record->tid; + } } } @@ -452,15 +466,6 @@ function forum_form_alter(&$form, $form_state, $form_id) { } /** - * Implementation of hook_load(). - */ -function forum_load($node) { - $forum = db_fetch_object(db_query('SELECT * FROM {term_node} WHERE vid = %d', $node->vid)); - - return $forum; -} - -/** * Implementation of hook_block(). * * Generates a block containing the currently active forum topics and the |