=== modified file 'includes/install.inc' --- includes/install.inc 2007-11-30 12:19:10 +0000 +++ includes/install.inc 2007-12-02 23:11:26 +0000 @@ -61,7 +61,7 @@ function drupal_get_schema_versions($mod * @return * The currently installed schema version. */ -function drupal_get_installed_schema_version($module, $reset = FALSE) { +function drupal_get_installed_schema_version($module, $reset = FALSE, $array = FALSE) { static $versions = array(); if ($reset) { @@ -76,7 +76,7 @@ function drupal_get_installed_schema_ver } } - return $versions[$module]; + return $array ? $versions : $versions[$module]; } /** === modified file 'modules/system/system.install' --- modules/system/system.install 2007-11-30 18:11:29 +0000 +++ modules/system/system.install 2007-12-02 23:03:12 +0000 @@ -1040,6 +1040,10 @@ function system_schema() { * @{ */ +function system_update_last_removed() { + return 179; +} + function system_update_180() { $ret = array(); === modified file 'update.php' --- update.php 2007-11-30 12:19:10 +0000 +++ update.php 2007-12-02 23:19:31 +0000 @@ -334,12 +334,14 @@ function update_script_selection_form() // Ensure system.module's updates appear first $form['start']['system'] = array(); - foreach (module_list() as $module) { + $modules = drupal_get_installed_schema_version(NULL, FALSE, TRUE); + foreach ($modules as $module => $default) { $updates = drupal_get_schema_versions($module); - if ($updates !== FALSE) { + // module_invoke returns NULL for nonexisting hooks, so this checks both + // whether module is installed and whether is safe to update module. + if ($updates !== FALSE && $default >= module_invoke($module, 'update_last_removed')) { $updates = drupal_map_assoc($updates); $updates[] = 'No updates available'; - $default = drupal_get_installed_schema_version($module); foreach (array_keys($updates) as $update) { if ($update > $default) { $default = $update;