annotate modules/openid/openid.pages.inc @ 10:6f15c9d74937

Added tag 6.4 for changeset acef7ccb09b5
author Franck Deroche <webmaster@defr.org>
date Tue, 23 Dec 2008 14:32:08 +0100
parents fff6d4c8c043
children
rev   line source
webmaster@1 1 <?php
webmaster@7 2 // $Id: openid.pages.inc,v 1.5.2.1 2008/07/09 21:48:28 goba Exp $
webmaster@1 3
webmaster@1 4 /**
webmaster@1 5 * @file
webmaster@1 6 * User page callbacks for the openid module.
webmaster@1 7 */
webmaster@1 8
webmaster@1 9 /**
webmaster@1 10 * Menu callback; Process an OpenID authentication.
webmaster@1 11 */
webmaster@1 12 function openid_authentication_page() {
webmaster@1 13 $result = openid_complete();
webmaster@1 14 switch ($result['status']) {
webmaster@1 15 case 'success':
webmaster@1 16 return openid_authentication($result);
webmaster@1 17 case 'failed':
webmaster@1 18 drupal_set_message(t('OpenID login failed.'), 'error');
webmaster@1 19 break;
webmaster@1 20 case 'cancel':
webmaster@1 21 drupal_set_message(t('OpenID login cancelled.'));
webmaster@1 22 break;
webmaster@1 23 }
webmaster@1 24 drupal_goto();
webmaster@1 25 }
webmaster@1 26
webmaster@1 27 /**
webmaster@1 28 * Menu callback; Manage OpenID identities for the specified user.
webmaster@1 29 */
webmaster@1 30 function openid_user_identities($account) {
webmaster@1 31 drupal_set_title(check_plain($account->name));
webmaster@1 32 drupal_add_css(drupal_get_path('module', 'openid') .'/openid.css', 'module');
webmaster@1 33
webmaster@1 34 // Check to see if we got a response
webmaster@1 35 $result = openid_complete();
webmaster@1 36 if ($result['status'] == 'success') {
webmaster@1 37 $identity = $result['openid.claimed_id'];
webmaster@1 38 db_query("INSERT INTO {authmap} (uid, authname, module) VALUES (%d, '%s','openid')", $account->uid, $identity);
webmaster@1 39 drupal_set_message(t('Successfully added %identity', array('%identity' => $identity)));
webmaster@1 40 }
webmaster@1 41
webmaster@1 42 $header = array(t('OpenID'), t('Operations'));
webmaster@1 43 $rows = array();
webmaster@1 44
webmaster@1 45 $result = db_query("SELECT * FROM {authmap} WHERE module='openid' AND uid=%d", $account->uid);
webmaster@1 46 while ($identity = db_fetch_object($result)) {
webmaster@7 47 $rows[] = array(check_plain($identity->authname), l(t('Delete'), 'user/'. $account->uid .'/openid/delete/'. $identity->aid));
webmaster@1 48 }
webmaster@1 49
webmaster@1 50 $output = theme('table', $header, $rows);
webmaster@1 51 $output .= drupal_get_form('openid_user_add');
webmaster@1 52 return $output;
webmaster@1 53 }
webmaster@1 54
webmaster@1 55 /**
webmaster@1 56 * Form builder; Add an OpenID identity.
webmaster@1 57 *
webmaster@1 58 * @ingroup forms
webmaster@1 59 * @see openid_user_add_validate()
webmaster@1 60 */
webmaster@1 61 function openid_user_add() {
webmaster@1 62 $form['openid_identifier'] = array(
webmaster@1 63 '#type' => 'textfield',
webmaster@1 64 '#title' => t('OpenID'),
webmaster@1 65 );
webmaster@1 66 $form['submit'] = array('#type' => 'submit', '#value' => t('Add an OpenID'));
webmaster@1 67 return $form;
webmaster@1 68 }
webmaster@1 69
webmaster@1 70 function openid_user_add_validate($form, &$form_state) {
webmaster@1 71 // Check for existing entries.
webmaster@1 72 $claimed_id = _openid_normalize($form_state['values']['openid_identifier']);
webmaster@1 73 if (db_result(db_query("SELECT authname FROM {authmap} WHERE authname='%s'", $claimed_id))) {
webmaster@1 74 form_set_error('openid_identifier', t('That OpenID is already in use on this site.'));
webmaster@1 75 }
webmaster@1 76 else {
webmaster@1 77 $return_to = url('user/'. arg(1) .'/openid', array('absolute' => TRUE));
webmaster@1 78 openid_begin($form_state['values']['openid_identifier'], $return_to);
webmaster@1 79 }
webmaster@1 80 }
webmaster@1 81
webmaster@1 82 /**
webmaster@7 83 * Present a confirmation form to delete the specified OpenID identity from the system.
webmaster@7 84 *
webmaster@7 85 * @ingroup forms
webmaster@7 86 * @see openid_user_delete_form_submit()
webmaster@1 87 */
webmaster@7 88 function openid_user_delete_form($form_state, $account, $aid = 0) {
webmaster@7 89 $authname = db_result(db_query('SELECT authname FROM {authmap} WHERE uid = %d AND aid = %d', $account->uid, $aid));
webmaster@7 90
webmaster@7 91 $form = array();
webmaster@7 92
webmaster@7 93 $form['uid'] = array(
webmaster@7 94 '#type' => 'value',
webmaster@7 95 '#value' => $account->uid,
webmaster@7 96 );
webmaster@7 97
webmaster@7 98 $form['aid'] = array(
webmaster@7 99 '#type' => 'value',
webmaster@7 100 '#value' => $aid,
webmaster@7 101 );
webmaster@7 102
webmaster@7 103 return confirm_form($form, t('Are you sure you want to delete the OpenID %authname for %user?', array('%authname' => $authname, '%user' => $account->name)), 'user/'. $account->uid .'/openid');
webmaster@7 104 }
webmaster@7 105
webmaster@7 106 function openid_user_delete_form_submit($form, &$form_state) {
webmaster@7 107 db_query("DELETE FROM {authmap} WHERE uid = %d AND aid = %d AND module = 'openid'", $form_state['values']['uid'], $form_state['values']['aid']);
webmaster@1 108 if (db_affected_rows()) {
webmaster@1 109 drupal_set_message(t('OpenID deleted.'));
webmaster@1 110 }
webmaster@7 111 $form_state['redirect'] = 'user/'. $form_state['values']['uid'] .'/openid';
webmaster@1 112 }