Issue #1592962 by mikeryan: Fixed Notice generated when programmatically creating...
authorwebchick
Thu, 11 Oct 2012 22:00:18 +0000 (15:00 -0700)
committerwebchick
Thu, 11 Oct 2012 22:00:18 +0000 (15:00 -0700)
modules/forum/forum.module
modules/forum/forum.test

index 8083233..fe0ef79 100644 (file)
@@ -330,10 +330,12 @@ function forum_node_presave($node) {
     $langcode = key($node->taxonomy_forums);
     if (!empty($node->taxonomy_forums[$langcode])) {
       $node->forum_tid = $node->taxonomy_forums[$langcode][0]['tid'];
-      $old_tid = db_query_range("SELECT f.tid FROM {forum} f INNER JOIN {node} n ON f.vid = n.vid WHERE n.nid = :nid ORDER BY f.vid DESC", 0, 1, array(':nid' => $node->nid))->fetchField();
-      if ($old_tid && isset($node->forum_tid) && ($node->forum_tid != $old_tid) && !empty($node->shadow)) {
-        // A shadow copy needs to be created. Retain new term and add old term.
-        $node->taxonomy_forums[$langcode][] = array('tid' => $old_tid);
+      if (isset($node->nid)) {
+        $old_tid = db_query_range("SELECT f.tid FROM {forum} f INNER JOIN {node} n ON f.vid = n.vid WHERE n.nid = :nid ORDER BY f.vid DESC", 0, 1, array(':nid' => $node->nid))->fetchField();
+        if ($old_tid && isset($node->forum_tid) && ($node->forum_tid != $old_tid) && !empty($node->shadow)) {
+          // A shadow copy needs to be created. Retain new term and add old term.
+          $node->taxonomy_forums[$langcode][] = array('tid' => $old_tid);
+        }
       }
     }
   }
index d78d962..6937c62 100644 (file)
@@ -197,6 +197,14 @@ class ForumTestCase extends DrupalWebTestCase {
     $this->drupalGet('forum/' . $this->forum['tid']);
     $this->drupalPost("node/$node->nid/edit", array(), t('Save'));
     $this->assertResponse(200);
+
+    // Make sure constructing a forum node programmatically produces no notices.
+    $node = new stdClass;
+    $node->type = 'forum';
+    $node->title = 'Test forum notices';
+    $node->uid = 1;
+    $node->taxonomy_forums[LANGUAGE_NONE][0]['tid'] = $this->root_forum['tid'];
+    node_save($node);
   }
 
   /**