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; +}