diff --git a/admin/deleteaccount.php b/admin/deleteaccount.php
index abfe1c0605..d0c0e28c69 100755
--- a/admin/deleteaccount.php
+++ b/admin/deleteaccount.php
@@ -9,84 +9,74 @@
* option) any later version. *
\**************************************************************************/
- /* $Id$ */
+ /* $Id$ */
- $phpgw_info = array();
+ $phpgw_info = array();
- if ($confirm || ! $account_id) {
- $phpgw_info["flags"] = array("noheader" => True, "nonavbar" => True);
- }
+ if ($submit || !$account_id)
+ {
+ $phpgw_info["flags"] = array("noheader" => True, "nonavbar" => True);
+ }
- $phpgw_info["flags"]["currentapp"] = "admin";
- include("../header.inc.php");
- $phpgw->template->set_file(array("body" => "delete_common.tpl"));
-
- // I didn't active this code until all tables are up to date using the owner field
- // The calendar isn't update to date. (jengo)
- // NOTE: This is so I don't forget, add a double explode() to the app_tables field
- // to say what the name of the owner field is.
- function delete_users_records($account_id, $permissions)
- {
- global $phpgw;
-
- $db2 = $phpgw->db;
-
- while ($permission = each($permissions)) {
- $db2->query("select app_tables from applications where app_name='$permission[0]'");
- $db2->next_record();
-
- if ($db2->f("app_tables")) {
- $tables = explode(",",$db2->f("app_tables"));
- while (list($null,$table) = each($tables)) {
- $db2->query("delete from $table where owner='$account_id'");
- }
- }
- } // end while
- } // end function
-
-
-
- // Make sure they are not attempting to delete there own account.
- // If they are, they should not reach this point anyway.
- if ($phpgw_info["user"]["account_id"] == $account_id) {
- Header('Location: ' . $phpgw->link('/admin/accounts.php'));
- $phpgw->common->phpgw_exit();
- }
-
- if (($account_id) && (! $confirm)) {
- // the account can have special chars/white spaces, if it is a ldap dn
- $account_id = rawurlencode($account_id);
- $phpgw->template->set_var("messages",lang("Are you sure you want to delete this account ?") . "
"
- . "");
- $phpgw->template->set_var("yes",'' . lang("Yes") . '');
- $phpgw->template->set_var("no",'' . lang("No") . '');
- $phpgw->template->pparse("out","body");
-
- $phpgw->common->phpgw_footer();
- }
-
- if ($confirm) {
- $accountid = get_account_id($account_id);
- $lid = $phpgw->accounts->id2name($accountid);
- $table_locks = array('phpgw_preferences','todo','phpgw_addressbook','phpgw_accounts');
-
- $cal = CreateObject('calendar.calendar');
- $cal_stream = $cal->open('INBOX',$accountid,'');
-
- $cal->delete_calendar($cal_stream,$accountid);
-
- $phpgw->db->lock($table_locks);
-// This really needs to fall back on the app authors job to write the delete routines for their apps.
-// I need to get with Milosch and have him write a small hook for deleting ALL records for an owner.
- $phpgw->db->query('delete from todo where todo_owner='.$accountid);
- $phpgw->db->query('delete from phpgw_addressbook where owner='.$accountid);
- $phpgw->db->query('delete from phpgw_preferences where preference_owner='.$accountid);
-
- $phpgw->accounts->delete($accountid);
- $phpgw->db->unlock();
+ $phpgw_info["flags"]["currentapp"] = "admin";
+ include("../header.inc.php");
+ // Make sure they are not attempting to delete their own account, or they have cancelled.
+ // If they are, they should not reach this point anyway.
+ if($submit=='Cancel' || $phpgw_info['user']['account_id'] == $account_id)
+ {
+ Header('Location: '.$phpgw->link('/admin/accounts.php'));
+ $phpgw->common->phpgw_exit();
+ }
+
+ if (($account_id) && ($submit<>'Delete'))
+ {
+ $phpgw->template->set_file(array("form" => "delete_account.tpl"));
+
+ $phpgw->template->set_var('form_action',$phpgw->link('/admin/deleteaccount.php'));
+ $phpgw->template->set_var('account_id',$account_id);
+ // the account can have special chars/white spaces, if it is a ldap dn
+ $account_id = rawurlencode($account_id);
+
+ // Find out who the new owner is of the deleted users records...
+ $str = ''."\n";
+ $phpgw->template->set_var('lang_new_owner',lang('Who would you like to transfer ALL records owned by the deleted user to?'));
+ $phpgw->template->set_var('new_owner_select',$str);
+ $phpgw->template->set_var('cancel',lang('cancel'));
+ $phpgw->template->set_var('delete',lang('delete'));
+ $phpgw->template->pparse("out","form");
+ $phpgw->common->phpgw_footer();
+ }
+ if($submit=='Delete')
+ {
+ $accountid = $account_id
+ settype($account_id,'integer');
+ $account_id = get_account_id($accountid);
+ $lid = $phpgw->accounts->id2name($account_id);
+ $phpgw->db->query('SELECT app_name FROM phpgw_applications WHERE app_enabled=1',__LINE__,__FILE__);
+ if($phpgw->db->num_rows())
+ {
+ while($phpgw->db->next_record())
+ {
+ $appname = $phpgw->db->f('app_name');
+ if($appname <> 'admin')
+ {
+ $phpgw->common->hook_single('deleteaccount', $appname);
+ }
+ }
+ }
+
+ $phpgw->common->hook_single('deleteaccount','preferences');
+ $phpgw->common->hook_single('deleteaccount','admin');
+
$sep = $phpgw->common->filesystem_separator();
$basedir = $phpgw_info['server']['files_dir'] . $sep . 'users' . $sep;
diff --git a/admin/templates/default/delete_account.tpl b/admin/templates/default/delete_account.tpl
new file mode 100755
index 0000000000..e31bc74130
--- /dev/null
+++ b/admin/templates/default/delete_account.tpl
@@ -0,0 +1,19 @@
+
+