From 789cba51f54fbfad21c33b3e2c9cbcbc10c46ff2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Hojtsy?= Date: Thu, 20 Dec 2007 21:43:01 +0000 Subject: #186546 by bjaspan: fix missing forum vocabulary when people turned on forum module, but never visited any pages in Drupal 5 and they upgrade to Drupal 6 which does this much better --- modules/forum/forum.install | 30 ++++++++++++++++++++++++++++++ modules/forum/forum.module | 7 +++++++ 2 files changed, 37 insertions(+) (limited to 'modules/forum') diff --git a/modules/forum/forum.install b/modules/forum/forum.install index 76b66a267..7d2d0c428 100644 --- a/modules/forum/forum.install +++ b/modules/forum/forum.install @@ -91,3 +91,33 @@ function forum_schema() { return $schema; } + +/** + * Create the forum vocabulary if does not exist. Assign the + * vocabulary a low weight so it will appear first in forum topic + * create and edit forms. Do not just call forum_enable() because in + * future versions it might do something different. + */ +function forum_update_6000() { + $ret = array(); + + $vid = variable_get('forum_nav_vocabulary', 0); + $vocabularies = taxonomy_get_vocabularies(); + if (!isset($vocabularies[$vid])) { + $vocabulary = array( + 'name' => t('Forums'), + 'multiple' => 0, + 'required' => 0, + 'hierarchy' => 1, + 'relations' => 0, + 'module' => 'forum', + 'weight' => -10, + 'nodes' => array('forum' => 1), + ); + taxonomy_save_vocabulary($vocabulary); + + variable_set('forum_nav_vocabulary', $vocabulary['vid']); + } + + return $ret; +} \ No newline at end of file diff --git a/modules/forum/forum.module b/modules/forum/forum.module index 674077dea..3546b4f66 100644 --- a/modules/forum/forum.module +++ b/modules/forum/forum.module @@ -161,8 +161,15 @@ function forum_init() { * Implementation of hook_nodeapi(). */ function forum_nodeapi(&$node, $op, $teaser, $page) { + // We are going to return if $node->type is not one of the node + // types assigned to the forum vocabulary. If forum_nav_vocabulary + // is undefined or the vocabulary does not exist, it clearly cannot + // be assigned to $node->type, so return to avoid E_ALL warnings. $vid = variable_get('forum_nav_vocabulary', ''); $vocabulary = taxonomy_vocabulary_load($vid); + if (empty($vocabulary)) { + return; + } // Operate only on node types assigned for the forum vocabulary. if (!in_array($node->type, $vocabulary->nodes)) { -- cgit v1.2.3