- Patch #735900 by andypost: deleting custom block does not clean block_role() table.
parent
f1b02a80f4
commit
117f039a07
|
@ -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.'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue