summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGábor Hojtsy <gabor@hojtsy.hu>2007-12-31 16:58:34 +0000
committerGábor Hojtsy <gabor@hojtsy.hu>2007-12-31 16:58:34 +0000
commit4157a521e0899622509022170c2be89da029c291 (patch)
treee1dc4051017fc0f211338f3646536bbd8b72ecdd
parent6bb7647f0b42d1bd0ba5d3427433d9a1cc4ffda3 (diff)
downloadbrdo-4157a521e0899622509022170c2be89da029c291.tar.gz
brdo-4157a521e0899622509022170c2be89da029c291.tar.bz2
#199373 report by avskip, patch by myself, testing by keith.smith: forum node type was not re-added to the forum vocabulary when the module is re-enabled (after being disabled)
-rw-r--r--modules/forum/forum.install19
-rw-r--r--modules/taxonomy/taxonomy.module15
2 files changed, 22 insertions, 12 deletions
diff --git a/modules/forum/forum.install b/modules/forum/forum.install
index 62035955f..ff9ac135b 100644
--- a/modules/forum/forum.install
+++ b/modules/forum/forum.install
@@ -12,12 +12,17 @@ function forum_install() {
}
function forum_enable() {
- // Create the forum vocabulary if it does not exist. Assign the vocabulary
- // a low weight so it will appear first in forum topic create and edit
- // forms.
- $vid = variable_get('forum_nav_vocabulary', 0);
- $vocabularies = taxonomy_get_vocabularies();
- if (!isset($vocabularies[$vid])) {
+ if ($vocabulary = taxonomy_vocabulary_load(variable_get('forum_nav_vocabulary', 0))) {
+ // Existing install. Add back forum node type, if the forums
+ // vocabulary still exists. Keep all other node types intact there.
+ $vocabulary = (array) $vocabulary;
+ $vocabulary['nodes']['forum'] = 1;
+ taxonomy_save_vocabulary($vocabulary);
+ }
+ else {
+ // Create the forum vocabulary if it does not exist. Assign the vocabulary
+ // a low weight so it will appear first in forum topic create and edit
+ // forms.
$vocabulary = array(
'name' => t('Forums'),
'multiple' => 0,
@@ -123,4 +128,4 @@ function forum_update_6000() {
}
return $ret;
-} \ No newline at end of file
+}
diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module
index 3eb289820..c1bca9ff1 100644
--- a/modules/taxonomy/taxonomy.module
+++ b/modules/taxonomy/taxonomy.module
@@ -967,14 +967,18 @@ function taxonomy_get_term_by_name($name) {
* @param $vid
* The vocabulary's ID
*
- * @return Object
- * The vocabulary object with all of its metadata.
+ * @return
+ * The vocabulary object with all of its metadata, if exists, NULL otherwise.
* Results are statically cached.
*/
function taxonomy_vocabulary_load($vid) {
static $vocabularies = array();
- if (!array_key_exists($vid, $vocabularies)) {
+ if (!isset($vocabularies[$vid])) {
+ // Initialize so if this vocabulary does not exist, we have
+ // that cached, and we will not try to load this later.
+ $vocabularies[$vid] = FALSE;
+ // Try to load the data and fill up the object.
$result = db_query('SELECT v.*, n.type FROM {vocabulary} v LEFT JOIN {vocabulary_node_types} n ON v.vid = n.vid WHERE v.vid = %d', $vid);
$node_types = array();
while ($voc = db_fetch_object($result)) {
@@ -986,8 +990,9 @@ function taxonomy_vocabulary_load($vid) {
$vocabularies[$vid] = $voc;
}
}
-
- return $vocabularies[$vid];
+
+ // Return NULL if this vocabulary does not exist.
+ return !empty($vocabularies[$vid]) ? $vocabularies[$vid] : NULL;
}
/**