summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAngie Byron <webchick@24967.no-reply.drupal.org>2010-04-14 15:51:21 +0000
committerAngie Byron <webchick@24967.no-reply.drupal.org>2010-04-14 15:51:21 +0000
commit0ad37ad057018eeed7a0734b98bda273f5f30aae (patch)
tree1cf83e27930cfa447906ebb4a1952f7167c4863e
parent28fb603ae34c22ef10739a4f1f2500125985e51e (diff)
downloadbrdo-0ad37ad057018eeed7a0734b98bda273f5f30aae.tar.gz
brdo-0ad37ad057018eeed7a0734b98bda273f5f30aae.tar.bz2
#652372 by matason, ksenzee, naxoc, jpmckinney, sun: Don't allow users to add forum topics when no forums exist.
-rw-r--r--modules/forum/forum.install1
-rw-r--r--modules/forum/forum.module8
-rw-r--r--modules/forum/forum.test11
3 files changed, 19 insertions, 1 deletions
diff --git a/modules/forum/forum.install b/modules/forum/forum.install
index 5c4957cbb..7e6de833a 100644
--- a/modules/forum/forum.install
+++ b/modules/forum/forum.install
@@ -58,6 +58,7 @@ function forum_enable() {
'entity_type' => 'node',
'label' => $vocabulary->name,
'bundle' => 'forum',
+ 'required' => TRUE,
'widget' => array(
'type' => 'options_select',
),
diff --git a/modules/forum/forum.module b/modules/forum/forum.module
index c278c946b..10d55b1a3 100644
--- a/modules/forum/forum.module
+++ b/modules/forum/forum.module
@@ -299,7 +299,13 @@ function forum_node_validate($node, $form) {
if (!empty($node->taxonomy_forums[$langcode])) {
// Extract the node's proper topic ID.
$containers = variable_get('forum_containers', array());
- foreach ($node->taxonomy_forums[$langcode] as $item) {
+ foreach ($node->taxonomy_forums[$langcode] as $delta => $item) {
+ // If no term was selected (e.g. when no terms exist yet), remove the
+ // item.
+ if (empty($item['tid'])) {
+ unset($node->taxonomy_forums[$langcode][$delta]);
+ continue;
+ }
$term = taxonomy_term_load($item['tid']);
$used = db_query_range('SELECT 1 FROM {taxonomy_term_data} WHERE tid = :tid AND vid = :vid',0 , 1, array(
':tid' => $term->tid,
diff --git a/modules/forum/forum.test b/modules/forum/forum.test
index f485e48d4..d91664259 100644
--- a/modules/forum/forum.test
+++ b/modules/forum/forum.test
@@ -91,6 +91,17 @@ class ForumTestCase extends DrupalWebTestCase {
}
/**
+ * Forum nodes should not be created without choosing forum from select list.
+ */
+ function testAddOrphanTopic() {
+ $this->drupalLogin($this->admin_user);
+ $this->drupalPost('node/add/forum', array('title' => $this->randomName(10), 'body[' . LANGUAGE_NONE .'][0][value]' => $this->randomName(120)), t('Save'));
+
+ $nid_count = db_query('SELECT COUNT(nid) FROM {node}')->fetchField();
+ $this->assertEqual(0, $nid_count, t('A forum node was not created.'));
+ }
+
+ /**
* Run admin tests on the admin user.
*
* @param object $user The logged in user.