diff options
author | Dries Buytaert <dries@buytaert.net> | 2010-03-09 12:09:52 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2010-03-09 12:09:52 +0000 |
commit | 117f039a0792ef235e582e3f271dcf4ac6ad2a7d (patch) | |
tree | 554dccc51a1f4d68bd4cb5ebe5d285aee3bab124 /modules | |
parent | f1b02a80f4635b44360033e4eeea4776e904bdcb (diff) | |
download | brdo-117f039a0792ef235e582e3f271dcf4ac6ad2a7d.tar.gz brdo-117f039a0792ef235e582e3f271dcf4ac6ad2a7d.tar.bz2 |
- Patch #735900 by andypost: deleting custom block does not clean block_role() table.
Diffstat (limited to 'modules')
-rw-r--r-- | modules/block/block.admin.inc | 4 | ||||
-rw-r--r-- | modules/block/block.module | 14 | ||||
-rw-r--r-- | modules/block/block.test | 7 |
3 files changed, 25 insertions, 0 deletions
diff --git a/modules/block/block.admin.inc b/modules/block/block.admin.inc index 75c215de9..c56cc3fa3 100644 --- a/modules/block/block.admin.inc +++ b/modules/block/block.admin.inc @@ -516,6 +516,10 @@ function block_custom_block_delete_submit($form, &$form_state) { ->condition('module', 'block') ->condition('delta', $form_state['values']['bid']) ->execute(); + db_delete('block_role') + ->condition('module', 'block') + ->condition('delta', $form_state['values']['bid']) + ->execute(); drupal_set_message(t('The block %name has been removed.', array('%name' => $form_state['values']['info']))); cache_clear_all(); $form_state['redirect'] = 'admin/structure/block'; diff --git a/modules/block/block.module b/modules/block/block.module index ad56834e9..19e81f55e 100644 --- a/modules/block/block.module +++ b/modules/block/block.module @@ -925,3 +925,17 @@ function block_form_system_performance_settings_alter(&$form, &$form_state) { '#weight' => -1, ); } + +/** + * Implements hook_modules_uninstalled(). + * + * Cleanup {block} and {block_role} tables from modules' blocks. + */ +function block_modules_uninstalled($modules) { + db_delete('block') + ->condition('module', $modules, 'IN') + ->execute(); + db_delete('block_role') + ->condition('module', $modules, 'IN') + ->execute(); +} diff --git a/modules/block/block.test b/modules/block/block.test index a2788d4e4..a3002d0db 100644 --- a/modules/block/block.test +++ b/modules/block/block.test @@ -84,11 +84,18 @@ class BlockTestCase extends DrupalWebTestCase { $this->assertRaw(l(t('configure'), 'admin/structure/block/manage/block/' . $bid . '/configure'), t('Custom block configure link found.')); $this->assertRaw(l(t('delete'), 'admin/structure/block/manage/block/' . $bid . '/delete'), t('Custom block delete link found.')); + // Set visibility only for authenticated users, to verify delete functionality. + $edit = array(); + $edit['roles[2]'] = TRUE; + $this->drupalPost('admin/structure/block/manage/block/' . $bid . '/configure', $edit, t('Save block')); + // Delete the created custom block & verify that it's been deleted and no longer appearing on the page. $this->clickLink(t('delete')); $this->drupalPost('admin/structure/block/manage/block/' . $bid . '/delete', array(), t('Delete')); $this->assertRaw(t('The block %title has been removed.', array('%title' => $custom_block['info'])), t('Custom block successfully deleted.')); $this->assertNoText(t($custom_block['title']), t('Custom block no longer appears on page.')); + $count = db_query("SELECT 1 FROM {block_role} WHERE module = :module AND delta = :delta", array(':module' => $custom_block['module'], ':delta' => $custom_block['delta']))->fetchField(); + $this->assertFalse($count, t('Table block_role being cleaned.')); } /** |