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