Only in .: 864552.patch
diff -urp ./groupadmin.config.inc.php ../ga_patch/groupadmin.config.inc.php
--- ./groupadmin.config.inc.php	2010-03-15 14:08:30.000000000 -0400
+++ ../ga_patch/groupadmin.config.inc.php	2010-07-25 22:30:40.196769035 -0400
@@ -56,6 +56,7 @@ function _groupadmin_settings_fields($co
     'n_member_help_node' => array('Node (nid) for help for members.  If not specified, main help node will be used.'),
     'n_admin_help_node' => array('Node (nid) for help for admins. If not specified, member help node will be used.'),
     'x_help_collapsed' => array('If set, help section initially appears collapsed.', TRUE),
+    'x_require_confirmation' => array('If set, additions, promotions and deletions require confirmation.', TRUE),
     'n_pagelen' => array('Page length for user list.', 10, TRUE),
     'x_reset_on_add' => array('Clear the search criteria after adding a new member.', FALSE),
   );
diff -urp ./groupadmin.menu.inc.php ../ga_patch/groupadmin.menu.inc.php
--- ./groupadmin.menu.inc.php	2010-03-14 14:49:52.000000000 -0400
+++ ../ga_patch/groupadmin.menu.inc.php	2010-07-25 23:31:37.608769577 -0400
@@ -81,7 +81,7 @@ function groupadmin_menu() {
     'access callback' => '_groupadmin_access_admin',
     'access arguments' => array(2),
     'page callback' => 'drupal_get_form',
-    'page arguments' => array('_groupadmin_confirm', 2, 3, 4, 5),
+    'page arguments' => array('_groupadmin_confirm_optional', 2, 3, 4, 5),
     'type' => MENU_CALLBACK,
   );
   return $items;
diff -urp ./groupadmin.module ../ga_patch/groupadmin.module
--- ./groupadmin.module	2010-03-15 15:44:03.000000000 -0400
+++ ../ga_patch/groupadmin.module	2010-07-25 23:38:55.449893717 -0400
@@ -331,6 +331,98 @@ function _groupadmin_confirm(&$form_stat
   return $form;
 }
 
+
+/**
+ *  This is a merger of the function above and the function below to avoid having to 
+ *  confirm each change that is made if so configured. Someday checkboxes would be nice to have for selecting many accounts 
+ *  to add or remove or promote at the same time.
+ */
+function _groupadmin_confirm_optional(&$form_state, $gid, $action, $uid, $name) {
+  if (!_groupadmin_access_admin($gid)) return;
+  if (!_groupadmin_checkfunc('og_save_subscription'))  return;
+
+  // Get title of Group.
+  $title = _groupadmin_get_group($gid, 'title');
+
+  // Convert url parameters to form values needed by _groupadmin_update_execute.
+  foreach(array('gid', 'action', 'uid') as $v) {
+    $form[$v] = array('#type' => 'value', '#value' => $$v);
+  }
+
+  if(_groupadmin_settings('x_require_confirmation') ){
+
+    $tvars = array('!action' => "<strong>$action</strong>", '%name' => $name, '%group' => $title);
+    $msg = 'Please confirm you want to !action %name in %group';
+
+    $form['message'] = array('#type' => 'markup', '#value' => sprintf('<p>%s:</p>', t($msg, $tvars)));
+    $form['confirm'] = array(
+      '#type' => 'submit', '#value' => t($action),
+      '#submit' => array('_groupadmin_update_execute'),
+    );
+    $form['cancel'] = array(
+      '#type' => 'submit', '#value' => t('cancel'),
+    );
+
+    // Redirect, normally overridden by destination in url.
+    $form['#redirect'] = sprintf('og/users/%d/groupadmin', $gid);
+
+    return $form;
+  }
+
+  /// else no confirmation needed
+
+
+  // Set up values for use by OG functions.
+  $account = user_load($uid);
+  $node = _groupadmin_get_group($gid);
+
+  if ($action == 'add') {
+    // Just in case, make sure user is not already a member.
+    if (_groupadmin_is_group_member($gid, $uid))  return;
+    og_save_subscription($gid, $uid, array('is_active' => 1));
+    $msg = '%name has been added to the group.';
+
+    // If enabled, reset the "sticky" settings now and so return to default view.
+    if(_groupadmin_settings('x_reset_on_add')) {
+      _groupadmin_session('sticky', 'DELETE');
+    }
+  }
+  elseif ($action == 'remove') {
+    // Just in case, make sure user is already a member.
+    if (!_groupadmin_is_group_member($gid, $uid))  return;
+    // Use OG function to do the rest.
+    if (_groupadmin_checkfunc('og_delete_subscription')) {
+      og_delete_subscription($gid, $uid);
+      $msg = '%name has been removed from the group.';
+    }
+  }
+  elseif ($action == 'promote') {
+    // Use OG function to do the rest.
+    $is_member = _groupadmin_is_group_member($gid, $uid);
+    og_save_subscription($gid, $uid, array('is_active' => 1, 'is_admin' => 1));
+    $msg = $is_member? '%name has been promoted to admin status.' : '%name has been added to the group and promoted to admin status.';
+  }
+  elseif ($action == 'demote') {
+    // Use OG function to do the rest.
+    og_save_subscription($gid, $uid, array('is_active' => 1, 'is_admin' => 0));
+    $msg = '%name has been demoted to basic member status.';
+  }
+  else {
+    $msg = 'Invalid action requested.';
+    $type = 'error';
+  }
+  drupal_set_message(t($msg, array('%name' => $account->name)), $type? $type : 'status');
+
+  $dgoto = sprintf('og/users/%d/groupadmin', $gid);
+  drupal_goto($dgoto);
+
+ }  // done no_confirm
+
+
+
+
+
+
 /**
  * Process an update - add or remove member via calls to OG internals.
  * Note: OG functions used do not provide access control nor error checking, so we need to do that here.
