- Patch #77924 by RobRoy: fixed race condition in block administration that might have caused data loss.
parent
7178f2f99e
commit
c27f564e07
|
@ -163,7 +163,7 @@ function _block_rehash() {
|
|||
$old_blocks[$old_block->module][$old_block->delta] = $old_block;
|
||||
}
|
||||
|
||||
db_query("DELETE FROM {blocks} WHERE theme = '%s'", $theme_key);
|
||||
$blocks = array();
|
||||
|
||||
foreach (module_list() as $module) {
|
||||
$module_blocks = module_invoke($module, 'block', 'list');
|
||||
|
@ -191,14 +191,21 @@ function _block_rehash() {
|
|||
}
|
||||
}
|
||||
|
||||
// Reinsert blocks into table
|
||||
db_query("INSERT INTO {blocks} (module, delta, theme, status, weight, region, visibility, pages, custom, throttle) VALUES ('%s', '%s', '%s', %d, %d, '%s', %d, '%s', %d, %d)",
|
||||
$block['module'], $block['delta'], $theme_key, $block['status'], $block['weight'], $block['region'], $block['visibility'], $block['pages'], $block['custom'], $block['throttle']);
|
||||
$blocks[] = $block;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
db_lock_table('blocks');
|
||||
// Remove all blocks from table.
|
||||
db_query("DELETE FROM {blocks} WHERE theme = '%s'", $theme_key);
|
||||
|
||||
// Reinsert new set of blocks into table.
|
||||
foreach ($blocks as $block) {
|
||||
db_query("INSERT INTO {blocks} (module, delta, theme, status, weight, region, visibility, pages, custom, throttle) VALUES ('%s', '%s', '%s', %d, %d, '%s', %d, '%s', %d, %d)", $block['module'], $block['delta'], $theme_key, $block['status'], $block['weight'], $block['region'], $block['visibility'], $block['pages'], $block['custom'], $block['throttle']);
|
||||
}
|
||||
db_unlock_tables();
|
||||
|
||||
return $blocks;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue