Index: multiblock.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/multiblock/multiblock.module,v
retrieving revision 1.1.2.1
diff -u -r1.1.2.1 multiblock.module
--- multiblock.module	18 May 2008 00:39:13 -0000	1.1.2.1
+++ multiblock.module	19 May 2008 02:52:37 -0000
@@ -70,6 +70,23 @@
 }
 
 /**
+ * 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.
+ */
+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)";
+  return db_query($sql, $delta, $block_instance->title, $original_block->module, $original_block->delta, $block_instance->mb_enbabled);
+}
+
+/**
  * Page callback for the "Manage Block Instances page".
  */
 function multiblock_general() {
@@ -79,22 +96,17 @@
   usort($blocks, 'multiblock_block_sort');
   
   // Fetch "Add Instance" form.
-  $form = drupal_get_form('multiblock_add_block', $blocks);
+  $form = drupal_get_form('multiblock_form', $blocks);
  
   // Get an array of existing blocks.
-  $result = db_query('SELECT * FROM {multiblock} ORDER BY title'); 
-  $multiblocks = array();
-  while ($multiblock = db_fetch_object($result)) {
-    $multiblocks[] = $multiblock;
-  }
-  
+  $multiblocks = multiblock_get_block();
   return theme('multiblock_general', $form, $multiblocks);
 }
 
 /**
  * "Add Instance" form.
  */
-function multiblock_add_block($blocks) {
+function multiblock_form($blocks) {
   $form = array();
   $form['title'] = array(
     '#type' => 'textfield',
@@ -149,7 +161,7 @@
 /**
  * Validate "Add Block Instance" form.
  */
-function multiblock_add_block_validate($form_id, $form_values) {
+function multiblock_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'));
@@ -157,8 +169,8 @@
   }
   // Make sure the block and delta exist.
   $orig_block = multiblock_blockinfo_from_form($form_values['block']);
-  if (!module_hook($orig_block['module'], 'block') ||
-    !array_key_exists($orig_block['delta'], module_invoke($orig_block['module'], 'block', 'list'))) {
+  if (!module_hook($orig_block->module, 'block') ||
+    !array_key_exists($orig_block->delta, module_invoke($orig_block->module, 'block', 'list'))) {
     form_set_error('block', t('Module or doesn\t exist, contact administrator'));
   }
 }
@@ -166,17 +178,15 @@
 /**
  * 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_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.
+  $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'])));
 }
 
@@ -193,7 +203,7 @@
 function multiblock_blockinfo_from_form($form_value) {
   $matches = array();
   preg_match('/^(.+)\*\*\*MB\*\*\*(.+)$/', $form_value, $matches);
-  return array('module' => $matches[1], 'delta' => $matches[2]);
+  return (object) array('module' => $matches[1], 'delta' => $matches[2]);
 }
 
 /**
