From f6727ce9f011bc51627c680576aaec89e278d6f4 Mon Sep 17 00:00:00 2001
From: Dries Buytaert <dries@buytaert.net>
Date: Sat, 22 Nov 2008 10:32:42 +0000
Subject: [PATCH] - Patch #280625 by catch, pwolanin, swentel, et al: added an
 OpenID delete confirm form.

---
 modules/openid/openid.module    |  4 ++--
 modules/openid/openid.pages.inc | 14 ++++++++++----
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/modules/openid/openid.module b/modules/openid/openid.module
index d02c60b23b5e..affe9787e341 100644
--- a/modules/openid/openid.module
+++ b/modules/openid/openid.module
@@ -26,8 +26,8 @@ function openid_menu() {
   );
   $items['user/%user/openid/delete'] = array(
     'title' => 'Delete OpenID',
-    'page callback' => 'openid_delete_user',
-    'page arguments' => array(1),
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('openid_user_delete_form', 1),
     'access callback' => 'user_edit_access',
     'access arguments' => array(1),
     'type' => MENU_CALLBACK,
diff --git a/modules/openid/openid.pages.inc b/modules/openid/openid.pages.inc
index 28c8f947b915..9c8a14b596fb 100644
--- a/modules/openid/openid.pages.inc
+++ b/modules/openid/openid.pages.inc
@@ -44,7 +44,7 @@ function openid_user_identities($account) {
 
   $result = db_query("SELECT * FROM {authmap} WHERE module='openid' AND uid=%d", $account->uid);
   while ($identity = db_fetch_object($result)) {
-    $rows[] = array($identity->authname, l(t('Delete'), 'user/' . $account->uid . '/openid/delete/' . $identity->aid));
+    $rows[] = array(check_plain($identity->authname), l(t('Delete'), 'user/' . $account->uid . '/openid/delete/' . $identity->aid));
   }
 
   $output = theme('table', $header, $rows);
@@ -82,10 +82,16 @@ function openid_user_add_validate($form, &$form_state) {
 /**
  * Menu callback; Delete the specified OpenID identity from the system.
  */
-function openid_delete_user($account, $aid = 0) {
-  db_query("DELETE FROM {authmap} WHERE uid=%d AND aid=%d AND module='openid'", $account->uid, $aid);
+function openid_user_delete_form($form_state, $account, $aid = 0) {
+  $authname = db_result(db_query('SELECT authname FROM {authmap} WHERE uid = %d AND aid = %d', $account->uid, $aid));
+  return confirm_form(array(), t('Are you sure you want to delete the OpenID %authname for %user?', array('%authname' => $authname, '%user' => $account->name)), 'user/'. $account->uid .'/openid');
+}
+
+function openid_user_delete_form_submit(&$form_state, $form_values) {
+  db_query("DELETE FROM {authmap} WHERE uid = %d AND aid = %d AND module = 'openid'", $form_state['#parameters'][2]->uid, $form_state['#parameters'][3]);
   if (db_affected_rows()) {
     drupal_set_message(t('OpenID deleted.'));
   }
-  drupal_goto('user/' . $account->uid . '/openid');
+  $form_state['#redirect'] = 'user/'. $form_state['#parameters'][2]->uid .'/openid';
 }
+
-- 
GitLab