Index: authorize.php
===================================================================
RCS file: /Users/wright/drupal/local_repo/drupal/authorize.php,v
retrieving revision 1.4
diff -u -p -r1.4 authorize.php
--- authorize.php	29 Oct 2009 06:58:56 -0000	1.4
+++ authorize.php	13 Jan 2010 23:56:42 -0000
@@ -135,6 +135,21 @@ if (authorize_access_allowed()) {
 
     $output = theme('authorize_report', array('messages' => $results['messages']));
     
+    // Now that the update completed, we can safely load the install code to
+    // see if there are missing schema updates, and if so, provide a link to
+    // update.php.
+    require_once DRUPAL_ROOT . '/includes/install.inc';
+    foreach (module_list() as $module) {
+      $updates = drupal_get_schema_versions($module);
+      if ($updates !== FALSE) {
+        $default = drupal_get_installed_schema_version($module);
+        if (max($updates) > $default) {
+          $output .= t('Some modules have database schema updates to install. You should run the <a href="@update">database update script</a> immediately.', array('@update' => base_path() . 'update.php'));
+          break;
+        }
+      }
+    }
+
     $links = array();
     if (is_array($results['tasks'])) {
       $links += $results['tasks'];
Index: modules/system/system.updater.inc
===================================================================
RCS file: /Users/wright/drupal/local_repo/drupal/modules/system/system.updater.inc,v
retrieving revision 1.3
diff -u -p -r1.3 system.updater.inc
--- modules/system/system.updater.inc	4 Jan 2010 21:31:52 -0000	1.3
+++ modules/system/system.updater.inc	13 Jan 2010 22:43:10 -0000
@@ -72,10 +72,8 @@ class ModuleUpdater extends Updater impl
   }
 
   public function postUpdateTasks() {
-    // @todo: If there are schema updates.
-    return array(
-      l(t('Run database updates for !project', array('!project' => $this->title)), 'update.php'),
-    );
+    // We don't want to check for DB updates here, we do that once for all
+    // updated modules on the landing page.
   }
 
 }
Index: modules/update/update.authorize.inc
===================================================================
RCS file: /Users/wright/drupal/local_repo/drupal/modules/update/update.authorize.inc,v
retrieving revision 1.3
diff -u -p -r1.3 update.authorize.inc
--- modules/update/update.authorize.inc	1 Nov 2009 23:02:13 -0000	1.3
+++ modules/update/update.authorize.inc	13 Jan 2010 22:50:43 -0000
@@ -154,7 +154,9 @@ function update_authorize_batch_copy_pro
   }
 
   _update_batch_create_message($context['results']['log'][$project], t('Installed %project_name successfully', array('%project_name' => $project)));
-  $context['results']['tasks'] += $tasks;
+  if (!empty($tasks)) {
+    $context['results']['tasks'] += $tasks;
+  }
 
   // This particular operation is now complete, even though the batch might
   // have other operations to perform.
