deleteaccount.php now is done by hooks (hook_{appname}_deleteaccount.inc.php). It can now change ownership of records before deleting the user from the system.

This commit is contained in:
skeeter 2001-03-30 04:58:33 +00:00
parent 0224d6d9da
commit 2ede16ef3a
3 changed files with 102 additions and 74 deletions

View File

@ -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 ?") . "<br>"
. "<font color=\"red\"><blink>" . lang("All records and account information will be lost!") . "</blink></font>");
$phpgw->template->set_var("yes",'<a href="' . $phpgw->link("/admin/deleteaccount.php","account_id=$account_id&confirm=true")
. '">' . lang("Yes") . '</a>');
$phpgw->template->set_var("no",'<a href="' . $phpgw->link("/admin/accounts.php")
. '">' . lang("No") . '</a>');
$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 = '<select name="new_owner" size="5">'."\n";;
$users = $phpgw->accounts->get_list('accounts');
$c_users = count($users);
$str .= '<option value="0">Delete All Records</option>'."\n";
for($i=0;$i<$c_users;$i++)
{
$str .= '<option value="'.$users[$i]['account_id'].'">'.$phpgw->common->display_fullname($users[$i]['account_lid'],$users[$i]['account_firstname',$users[$i]['account_lastname']).'</option>'."\n";
}
$str .= '</select>'."\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;

View File

@ -0,0 +1,19 @@
<!-- BEGIN form -->
<form method="POST" action="{form_action}">
<input type="hidden" name="account_id" value="{account_id}">
<center>
<table border=0 width=85%>
<tr>
<td align="center">{lang_new_owner}</td>
</tr>
<tr>
<td align="center">{new_owner_select}</td>
</tr>
<tr>
<td align="center"><input type="submit" name="submit" value="{cancel}">&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" name="submit" value="{delete}"></td>
</tr>
</table>
</center>
</form>
<!-- END form -->

View File

@ -0,0 +1,19 @@
<!-- BEGIN form -->
<form method="POST" action="{form_action}">
<input type="hidden" name="account_id" value="{account_id}">
<center>
<table border=0 width=85%>
<tr>
<td align="center">{lang_new_owner}</td>
</tr>
<tr>
<td align="center">{new_owner_select}</td>
</tr>
<tr>
<td align="center"><input type="submit" name="submit" value="{cancel}">&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" name="submit" value="{delete}"></td>
</tr>
</table>
</center>
</form>
<!-- END form -->