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']))); }