From 58b0235a72859aa433d743a9f284504f24664857 Mon Sep 17 00:00:00 2001 From: Dries Buytaert Date: Fri, 5 Dec 2008 22:18:46 +0000 Subject: - Patch #324313 by catch et al: load multiple nodes and terms at once. --- modules/forum/forum.module | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'modules/forum/forum.module') 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; + } } } @@ -451,15 +465,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(). * -- cgit v1.2.3