diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/system/system.install | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/modules/system/system.install b/modules/system/system.install index 70dc670b2..810d1a005 100644 --- a/modules/system/system.install +++ b/modules/system/system.install @@ -2463,25 +2463,17 @@ function system_update_6027() { // The cache_block table is created in update_fix_d6_requirements() since // calls to cache_clear_all() would otherwise cause warnings. - // Fill in the values for the new 'cache' column, - // by refreshing the {blocks} table. - global $theme, $custom_theme; - $old_theme = $theme; - $themes = list_themes(); - - $result = db_query("SELECT DISTINCT theme FROM {blocks}"); - while ($row = db_fetch_array($result)) { - if (array_key_exists($row['theme'], $themes)) { - // Set up global values so that _blocks_rehash() - // operates on the expected theme. - $theme = NULL; - $custom_theme = $row['theme']; - _block_rehash(); + // Fill in the values for the new 'cache' column in the {blocks} table. + foreach (module_list() as $module) { + if ($module_blocks = module_invoke($module, 'block', 'list')) { + foreach ($module_blocks as $delta => $block) { + if (isset($block['cache'])) { + db_query("UPDATE {blocks} SET cache = %d WHERE module = '%s' AND delta = %d", $block['cache'], $module, $delta); + } + } } } - $theme = $old_theme; - return $ret; } |