Commit 117f039a authored by Dries's avatar Dries

- Patch #735900 by andypost: deleting custom block does not clean block_role() table.

parent f1b02a80
......@@ -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';
......
......@@ -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();
}
......@@ -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.'));
}
/**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment