? devel-generate-book-303143-13.patch
Index: book.devel_generate.inc
===================================================================
RCS file: book.devel_generate.inc
diff -N book.devel_generate.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ book.devel_generate.inc	23 Dec 2010 21:04:01 -0000
@@ -0,0 +1,58 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Functions needed for devel_generate book integration.
+ */
+
+define('DEVEL_GENERATE_NO_BOOKS', 0);
+define('DEVEL_GENERATE_CREATE_BOOKS', 1);
+define('DEVEL_GENERATE_ADD_TO_BOOKS', 2);
+define('DEVEL_GENERATE_CREATE_AND_ADD_TO_BOOKS', 3);
+
+/**
+ * Enrich the $node that is about to be saved with book information.
+ */
+function devel_generate_book(&$node, $option) {
+  if (!book_type_is_allowed($node->type)) {
+    return;
+  }
+
+  switch ($option) {
+    case DEVEL_GENERATE_NO_BOOKS:
+      return;
+    case DEVEL_GENERATE_CREATE_BOOKS:
+      $new_book = TRUE;
+      break;
+    case DEVEL_GENERATE_ADD_TO_BOOKS:
+      $new_book = FALSE;
+      break;
+    case DEVEL_GENERATE_CREATE_AND_ADD_TO_BOOKS:
+      $new_book = mt_rand(0, 1) ? TRUE : FALSE;
+      break;
+    default:
+      return;
+  }
+
+  if ($new_book) {
+    $node->book['bid'] = 'new';
+  }
+  else {
+    $bids = db_query("SELECT DISTINCT(bid) FROM {book}")->fetchCol();
+    if ($bids) {
+      $bid = $bids[mt_rand(0, count($bids) - 1)];
+      $node->book['bid'] = $bid;
+    }
+  }
+}
+
+function devel_generate_book_options() {
+  $options = array(
+    DEVEL_GENERATE_NO_BOOKS => t('Do not create or add content to books'),
+    DEVEL_GENERATE_CREATE_BOOKS => t('Create new books'),
+    DEVEL_GENERATE_ADD_TO_BOOKS => t('Add content to existing books'),
+    DEVEL_GENERATE_CREATE_AND_ADD_TO_BOOKS => t('Create new books and add content to existing books'),
+  );
+  return $options;
+}
Index: devel_generate.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/devel/devel_generate/devel_generate.inc,v
retrieving revision 1.27
diff -u -p -r1.27 devel_generate.inc
--- devel_generate.inc	14 Nov 2010 00:29:50 -0000	1.27
+++ devel_generate.inc	23 Dec 2010 21:04:01 -0000
@@ -691,6 +691,11 @@ function devel_generate_content_add_node
   module_load_include('inc', 'devel_generate', 'devel_generate.fields');
   devel_generate_fields($node, 'node', $node->type);
 
+  if (module_exists('book')) {
+    module_load_include('inc', 'devel_generate', 'book.devel_generate');
+    devel_generate_book($node, $results['book_options']);
+  }
+
   // See devel_generate_nodeapi() for actions that happen before and after this save.
   node_save($node);
 }
Index: devel_generate.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/devel/devel_generate/devel_generate.module,v
retrieving revision 1.13
diff -u -p -r1.13 devel_generate.module
--- devel_generate.module	6 Dec 2010 15:28:53 -0000	1.13
+++ devel_generate.module	23 Dec 2010 21:04:01 -0000
@@ -201,6 +201,19 @@ function devel_generate_content_form() {
     '#default_value' => LANGUAGE_NONE,
   );
 
+  if (module_exists('book')) {
+    module_load_include('inc', 'devel_generate', 'book.devel_generate');
+    $options = devel_generate_book_options();
+
+    $form['book_options'] = array(
+      '#type' => 'radios',
+      '#description' => t('Nodes that are in the allowed list of book types can be their own books or added to existing books.'),
+      '#title' => t('Add to books'),
+      '#options' => $options,
+      '#default_value' => DEVEL_GENERATE_NO_BOOKS,
+    );
+  }
+
   $form['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Generate'),
