Index: openid_provider.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/openid_provider/openid_provider.module,v
retrieving revision 1.3
diff -u -u -r1.3 openid_provider.module
--- openid_provider.module	7 Sep 2008 03:51:58 -0000	1.3
+++ openid_provider.module	11 Mar 2009 02:22:10 -0000
@@ -62,6 +62,14 @@
   return $items;
 }
 
+function openid_provider_theme($existing, $type, $theme, $path) {
+  return array(
+    'openid_provider_sites' => array(
+      'arguments' => array('form' => NULL),
+    ),
+  );
+}
+
 /**
  * Implementation of hook_init()
  *
Index: openid_provider.pages.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/openid_provider/openid_provider.pages.inc,v
retrieving revision 1.1
diff -u -u -r1.1 openid_provider.pages.inc
--- openid_provider.pages.inc	13 Apr 2008 11:53:04 -0000	1.1
+++ openid_provider.pages.inc	11 Mar 2009 02:22:11 -0000
@@ -79,26 +79,38 @@
   
   module_load_include('inc', 'openid_provider');
   
-  $rps = _openid_provider_rp_load($user->uid);
-  if (count($rps)) {
-    $form = array('#tree' => TRUE);
-    foreach ($rps as $rp) {
-      $form['rpid'][$rp->rpid] = array(
-        '#type' => 'checkbox',
-        '#title' => $rp->realm,
-        '#default_value' => $rp->auto_release,
-        '#description' => t('Last accessed @time', array('@time' => format_date($rp->last_time)))
-      );
-    }
+  $result = pager_query("SELECT * FROM {openid_provider_relying_party} WHERE uid=%d ORDER BY last_time DESC", 50, 0, NULL, $user->uid);
+  
+  $form['description'] = array(
+    '#type' => 'item',
+    '#description' => t('Those are the sites you have used your OpenID on. If you turn off always approve, the site will ask you to confirm when you login into the given external site using your OpenID.'),
+  );
   
-    $form['submit'] = array(
-      '#type' => 'submit',
-      '#value' => t('Save')
+  $form['submit'] = array(
+    '#type' => 'submit',
+    '#value' => t('Update'),
+  );
+  
+  $auto_release = array();
+  while ($rp = db_fetch_object($result)) {
+    $rps[$rp->rpid] = '';
+    if ($rp->auto_release) {
+      $auto_release[] = $rp->rpid;
+    }
+    $form['site'][$rp->rpid] = array(
+      '#value' => l($rp->realm, $rp->realm),
+    );
+    $form['last_access'][$rp->rpid] = array(
+      '#value' => $rp->last_time,
     );
   }
-  else {
-    $form['none']['#value'] = t('No sites yet');
-  }
+  $form['approve'] = array(
+    '#type' => 'checkboxes',
+    '#options' => $rps,
+    '#default_value' => $auto_release,
+  );
+  $form['pager'] = array('#value' => theme('pager', NULL, 50, 0));
+  $form['#theme'] = 'openid_provider_sites';
   return $form;
 }
 
@@ -106,8 +118,36 @@
  * Form submit callback for openid_provider_sites.
  */
 function openid_provider_sites_form_submit(&$form, &$form_state) {
-  foreach ($form_state['values']['rpid'] as $key => $value) {
-    db_query("UPDATE {openid_provider_relying_party} SET auto_release=%d WHERE rpid=%d", $value, $key);
+  foreach ($form_state['values']['approve'] as $key => $value) {
+    db_query("UPDATE {openid_provider_relying_party} SET auto_release=%d WHERE rpid=%d", ($value > 0), $key);
   }
   drupal_set_message(t('Settings saved.'));
 }
+
+/**
+ * Theme openid sites overview.
+ *
+ * @ingroup themeable
+ */
+function theme_openid_provider_sites($form) {
+  // If there are rows in this form, then $form['title'] contains a list of
+  // the title form elements.
+  $header = array(t('Always approve'), t('Site'), t('Last access'));
+  foreach (element_children($form['site']) as $key) {
+    $row = array();
+    $row[] = drupal_render($form['approve'][$key]);
+    $row[] = drupal_render($form['site'][$key]);
+    $row[] = format_date(drupal_render(($form['last_access'][$key])));
+    $rows[] = $row;
+  }
+
+  unset($form['last_access']);
+  $output .= theme('table', $header, $rows);
+  if ($form['pager']['#value']) {
+    $output .= drupal_render($form['pager']);
+  }
+
+  $output .= drupal_render($form);
+
+  return $output;
+}
