Index: multiblock.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/multiblock/multiblock.module,v
retrieving revision 1.1.2.3
diff -u -r1.1.2.3 multiblock.module
--- multiblock.module	29 May 2008 05:53:29 -0000	1.1.2.3
+++ multiblock.module	29 May 2008 15:14:06 -0000
@@ -99,10 +99,10 @@
   $blocks = _block_rehash();
   // Sort blocks how we want them.
   usort($blocks, 'multiblock_block_sort');
-  
+
   // Fetch "Add Instance" form.
-  $form = drupal_get_form('multiblock_add_block', $blocks);
- 
+  $form = drupal_get_form('multiblock_add_form', $blocks);
+
   // Get an array of existing blocks.
   $multiblocks = multiblock_get_block(NULL, TRUE);
   return theme('multiblock_general', $form, $multiblocks);
@@ -111,7 +111,7 @@
 /**
  * "Add Instance" form.
  */
-function multiblock_add_block($blocks) {
+function multiblock_add_form($blocks) {
   $form = array();
   $form['title'] = array(
     '#type' => 'textfield',
@@ -170,6 +170,27 @@
   return 'admin/build/block/instances';
 }
 
+
+/**
+ * Add a multiblock instance.
+ *
+ * @param $original_block
+ *   The original block for which an instance is being created.
+ * @param $block_instance
+ *   An object contain information about the particular block instance.
+ * @return
+ *   The delta of the newly added block.
+ */
+function multiblock_add($original_block, $block_instance) {
+  // Create new delta for block instance.
+  $delta = db_next_id('{multiblock}_delta');
+  $sql = "INSERT INTO {multiblock}
+          (delta, title, module, orig_delta, multi_settings)
+          VALUES (%d, '%s', '%s', '%s', %d)";
+  db_query($sql, $delta, $block_instance->title, $original_block->module, $original_block->delta, $block_instance->mb_enbabled);
+  return $delta;
+}
+
 /**
  * Delete a multiblock instance.
  */
@@ -187,7 +208,7 @@
 /**
  * Validate "Add Block Instance" form.
  */
-function multiblock_add_block_validate($form_id, $form_values) {
+function multiblock_add_form_validate($form_id, $form_values) {
   // Make sure we are getting a valid block to add.
   if (!preg_match('/^.+\*\*\*MB\*\*\*.+$/', $form_values['block'])) {
     form_set_error('block', t('Bad block module input, contact administrator'));
@@ -204,17 +225,16 @@
 /**
  * Add block instance to database from "Add Block Instance" form.
  */
-function multiblock_add_block_submit($form_id, $form_values) {
-  // Create new delta for block instance.
-  $delta = db_next_id('{multiblock}_delta');
+function multiblock_add_form_submit($form_id, $form_values) {
   // Get the original block info.
   $orig_block = multiblock_blockinfo_from_form($form_values['block']);
   // Check whether this module is multiblock enabled.
-  $mb_enabled = (int)(module_invoke($orig_block['module'], 'block', 'mb_enabled') == 'mb_enabled');
-  $sql = "INSERT INTO {multiblock}
-          (delta, title, module, orig_delta, multi_settings)
-          VALUES (%d, '%s', '%s', '%s', %d)";
-  db_query($sql, $delta, $form_values['title'], $orig_block['module'], $orig_block['delta'], $mb_enabled);
+  $mb_enabled = (int) module_invoke($orig_block['module'], 'block', 'mb_enabled') == 'mb_enabled';
+  // Create block instance information.
+  $orig_block = (object) $orig_block;
+  $instance = (object) array('title' => $form_values['title'], 'mb_enabled' => $mb_enabled);
+  // Add the block instance.
+  multiblock_add($orig_block, $instance);
   drupal_set_message(t('Block instance %instance created.', array('%instance' => $form_values['title'])));
 }
 
