diff --git a/subuser.module b/subuser.module index ed12589..134da94 100644 --- a/subuser.module +++ b/subuser.module @@ -265,6 +265,12 @@ function subuser_form_alter(&$form, &$form_state, $form_id) { // Remove the limit user setting from users that doesnt have the administer subusers permissions $form['field_subuser_limit']['#access'] = user_access('administer subusers', $user); break; + case 'user_cancel_confirm_form': + $form['user_cancel_method']['#access'] = true; + $form['user_cancel_confirm']['#access'] = true; + $form['user_cancel_confirm']['#default_value'] = false; + $form['user_cancel_notify']['#access'] = true; + break; } } @@ -353,3 +359,25 @@ function subuser_ctools_plugin_api($module, $api) { return array('version' => 1); } } + +/** + * Implements hook_form_FORM_ID_alter(): user_cancel_confirm. +*/ +function subuser_form_user_cancel_confirm_form_alter(&$form, &$form_state, $form_id) { + $form['#submit'][] = 'subuser_user_cancel_form_submit'; +} + +/** + * Additional submit handler for user_cancel_confirm. +*/ +function subuser_user_cancel_form_submit(&$form, &$form_state) { + global $user; + $account = $form_state['values']['_account']; + + $children = subuser_load_all($user); + $acct_uid = is_object($account) ? $account->uid : $account; + if(in_array($acct_uid, $children)) { + user_cancel($form_state['values'], $account->uid, $form_state['values']['user_cancel_method']); + $form_state['redirect'] = 'user/' . $user->uid . '/subuser'; + } +}