diff -rup user_delete.orig/user_delete.info user_delete/user_delete.info --- user_delete.orig/user_delete.info 2008-07-19 21:55:15.000000000 +0000 +++ user_delete/user_delete.info 2009-05-08 12:00:58.385533630 +0000 @@ -1,6 +1,7 @@ ; $Id: user_delete.info,v 1.1 2007/08/08 12:36:57 sanduhrs Exp $ name = User Delete description = "Let users delete their account." +core = 6.x ; Information added by drupal.org packaging script on 2008-07-19 version = "5.x-1.0" project = "user_delete" diff -rup user_delete.orig/user_delete.module user_delete/user_delete.module --- user_delete.orig/user_delete.module 2008-03-05 14:57:16.000000000 +0000 +++ user_delete/user_delete.module 2009-05-08 12:00:58.396343589 +0000 @@ -21,68 +21,48 @@ function user_delete_perm() { /** * Implementation of hook_menu(). */ -function user_delete_menu($may_cache) { - global $user; - $items = array(); - - if (!$may_cache) { - $items[] = array( - 'path' => 'user/'. arg(1) .'/delete', - 'title' => t('Delete'), - 'callback' => 'user_edit', - 'access' => (user_access('administer users') || (user_access('delete own account') && arg(1) == $user->uid)), - 'type' => MENU_CALLBACK, - ); - $items[] = array( - 'path' => 'admin/user/user_delete', - 'title' => t('User delete'), - 'description' => t("Configure the user delete action."), - 'callback' => 'drupal_get_form', - 'callback arguments' => 'user_delete_settings', - 'access' => user_access('administer users'), - ); - } +function user_delete_menu() { + $items['admin/user/user_delete'] = array( + 'title' => 'User delete', + 'description' => "Configure the user delete action.", + 'page callback' => 'drupal_get_form', + 'page arguments' => array('user_delete_settings'), + 'access arguments' => array('administer users'), + 'file' => 'user_delete.admin.inc', + ); return $items; } +/** + * Implementation of hook_menu_alter(). + */ +function user_delete_menu_alter(&$callbacks) { + $callbacks['user/%user/delete']['access callback'] = 'user_delete_access'; + $callbacks['user/%user/delete']['access arguments'] = array(1); + $callbacks['user/%user/delete']['type'] = MENU_LOCAL_TASK; +} /** - * Implementation of hook_form_alter(). + * Checks wether a user can delete a account */ -function user_delete_form_alter($form_id, &$form) { +function user_delete_access($account) { global $user; - - if($form_id == 'user_edit') { - //access check - if(user_access('delete own account') && arg(1) == $user->uid) { - $form['delete'] = array( - '#type' => 'submit', - '#value' => t('Delete'), - '#weight' => 31, - ); - } - } + return (user_access('administer users') || (user_access('delete own account') && $account->uid == $user->uid)); } /** - * Administrative settings page - * - * @return array - * a form array + * Implementation of hook_form_user_profile_form_alter(). */ -function user_delete_settings() { - //TODO: add additional settings based on http://drupal.org/node/8#comment-628434 - - $form['user_delete_redirect'] = array( - '#type' => 'textfield', - '#title' => t('Redirection page'), - '#default_value' => variable_get('user_delete_redirect', ''), - '#description' => t('Choose where to redirect your users after account deletion. Any valid Drupal path will do, e.g. %front or %node', array('%front' => '', '%node' => 'node/1')), - '#required' => TRUE, - ); - - return system_settings_form($form); +function user_delete_form_user_profile_form_alter($form, &$form_state) { + global $user; + if (user_access('delete own account') && arg(1) == $user->uid) { + $form['delete'] = array( + '#type' => 'submit', + '#value' => t('Delete'), + '#weight' => 31, + ); + } } /**