? 143804_dot_generate_forums_5.patch
? 143806_dot_contact_form_3.patch
? 151976_dot_non_release_projects_4.patch
? 320150_dot_cache_tids.patch
? do_testing_non_cvs_projects.patch.txt
Index: /Applications/MAMP/htdocs/dot/drupal/profiles/drupalorg_testing/drupalorg_testing.profile
===================================================================
RCS file: /cvs/drupal-contrib/contributions/profiles/drupalorg_testing/drupalorg_testing.profile,v
retrieving revision 1.45
diff -u -p -r1.45 drupalorg_testing.profile
--- drupalorg_testing.profile	12 Oct 2008 15:45:23 -0000	1.45
+++ drupalorg_testing.profile	12 Oct 2008 20:15:31 -0000
@@ -103,6 +103,7 @@ function drupalorg_testing_profile_final
   _drupalorg_testing_create_roles();
   _drupalorg_testing_create_users();
   _drupalorg_testing_create_project_terms();
+  _drupalorg_testing_create_forums();
   _drupalorg_testing_create_content();
   _drupalorg_testing_configure_project_settings();
   _drupalorg_testing_create_issues();
@@ -580,12 +581,133 @@ function _drupalorg_testing_create_proje
   }
 }
 
+/**
+ * Create the forum containers and forums.  Then create forum nodes.
+ */
+function _drupalorg_testing_create_forums() {
+  // Create forum containers.
+  $vid = _forum_get_vid();
+  $containers = array();
+  $containers[] = array(
+    'name' => t('Support'),
+    'description' => t('Try <a href="search">searching the forums</a> first or a specific project\'s <a href="project/issues/search">bug reports</a>.'),
+    'vid' => $vid,
+    'weight' => -5,
+  );
+  $containers[] = array(
+    'name' => t('General'),
+    'description' => t('News and announcement and other general community discussions. Important: no support questions here!'),
+    'vid' => $vid,
+    'weight' => -3,
+  );
+  foreach ($containers as $container) {
+    drupal_execute('forum_form_container', $container, $vid);
+  }
+
+  // Create the forums.
+  $forums = array();
+
+  // Support forums.
+  $parent_tid = _drupalorg_testing_get_tid_by_term(t('Support'));
+  $forums[] = array(
+    'name' => t('Post installation'),
+    'description' => t('Drupal is up and running but how do I ...?'),
+    'parent' => $parent_tid,
+    'vid' => $vid,
+    'weight' => -5,
+  );
+  $forums[] = array(
+    'name' => t('Before you start'),
+    'description' => t('Is Drupal a viable solution for my website? Please see the documentation Before you start before posting.'),
+    'parent' => $parent_tid,
+    'vid' => $vid,
+    'weight' => -3,
+  );
+
+  // General forums.
+  $parent_tid = _drupalorg_testing_get_tid_by_term(t('General'));
+  $forums[] = array(
+    'name' => t('News and announcements'),
+    'description' => t('For news and announcements to the Drupal community at large.'),
+    'parent' => $parent_tid,
+    'vid' => $vid,
+    'weight' => -5,
+  );
+  $forums[] = array(
+    'name' => t('General discussion'),
+    'description' => t('For less technical discussions about the Drupal project. Not for support questions!'),
+    'parent' => $parent_tid,
+    'vid' => $vid,
+    'weight' => -3,
+  );
+
+  foreach ($forums as $forum) {
+    // Note: Ideally, we would execute the forum_form_forum form instead of
+    // the taxonomy_form_term.  However, this won't work.  The reason is that
+    // in the options for the parent select box are determined in _forum_parent_select(),
+    // which calls taxonomy_get_tree(), which statically caches the results.  Since
+    // taxonomy_get_tree() has been previously called when creating the forum containers
+    // above, the new forum container terms will never be returned from
+    // taxonomy_get_tree(), and thus the 'parent' => $parent_tid found above
+    // will cause FAPI to create a form error because of an invalid choice.
+    // See http://drupal.org/comment/reply/106015 for more information.
+    //
+    // Now, the astute programmer will point out that taxonomy_form_term()
+    // *also* gets the list of options for its parent select box in the exact
+    // same way, and so the choice should also appear to be invalid.
+    // But, due to the fact that the forms that have already been
+    // validated are statically cached in drupal_validate_form(), and because
+    // the taxonomy term has already been validated, FAPI doesn't set a form
+    // error this time even though technically speaking, 'parent' will also
+    // be an invalid choice for the select box.
+    //
+    // Clearly, FAPI was not really designed with drupal_execute() in mind.
+    //
+    // Fortunately, executing taxonomy_form_term instead of forum_form_forum seems
+    // to work just fine here.
+    drupal_execute('taxonomy_form_term', $forum, $vid);
+  }
+
+  require_once(drupal_get_path('module', 'devel') .'/devel_generate.inc');
+
+  // Create 50 pseudo-random forum nodes, and 100 pseudo-random comments.
+  devel_generate_content(100, 200, 8, TRUE, array('forum'));
+
+  // Note:  devel_generate_content() doesn't quite generate forum nodes properly.
+  // It creates the node itself just fine, but doesn't set {forum}.tid, so all
+  // forums end up having a lot of posts that appear to have been moved to a
+  // different forum.
+  // So, we need to get a list of all forums (but not containers), and then
+  // randomly assign the forum nodes that were created above to these
+  // forums.
+  // See http://drupal.org/node/317441 for more details.
+  //
+  // @TODO Drupal 6 port:  Apparently this is no longer a problem in
+  // the Druapl 6 version of the devel module, so we should be able
+  // to remove this code.
+
+  // It would be nice to use taxonomy_get_tree($vid) here, but, again, that function
+  // statically caches the tree and does not provide a way to reset the cache.
+  $forums = array();
+  $result = db_query('SELECT td.tid FROM {term_data} td INNER JOIN {term_hierarchy} th ON th.tid = td.tid WHERE td.vid = %d AND th.parent <> 0', $vid);
+  while ($forum = db_fetch_object($result)) {
+    $forums[$forum->tid] = $forum->tid;
+  }
+
+  $result = db_query('SELECT nid FROM {forum}');
+  while ($topic = db_fetch_object($result)) {
+    $tid = array_rand($forums);
+    db_query('UPDATE {forum} SET tid = %d WHERE nid = %d', $tid, $topic->nid);
+    db_query('UPDATE {term_node} SET tid = %d WHERE nid = %d', $tid, $topic->nid);
+  }
+}
+
 function _drupalorg_testing_create_content() {
   // #5) Create a bunch of test content with the devel generate script.
   require_once(drupal_get_path('module', 'devel') .'/devel_generate.inc');
 
   // Create 100 pseudo-random nodes, and 200 pseudo-random comments.
-  devel_generate_content(100, 200, 8, TRUE, array('page', 'story', 'forum'));
+  devel_generate_content(100, 200, 8, TRUE, array('page', 'story'));
 
   _drupalorg_testing_create_content_project();
   _drupalorg_testing_create_content_project_release();
