X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FAdmin.pm;h=5e6456332aa62ed07a20574382e0ec07790c94c2;hb=5723fbf943e494ce9ffd6f9fc44251eb04d3362c;hp=698fdb1262890d849eb7c7f9432b43d43d08dba0;hpb=6ac47be4e3e318ea212ca595195b0b55a9c386a3;p=kivitendo-erp.git diff --git a/SL/Controller/Admin.pm b/SL/Controller/Admin.pm index 698fdb126..5e6456332 100644 --- a/SL/Controller/Admin.pm +++ b/SL/Controller/Admin.pm @@ -166,6 +166,10 @@ sub action_delete_user { my @clients = @{ $self->user->clients || [] }; + # backup user metadata (email, name, etc) + my $user_config_values_ref = $self->user->config_values(); + my $login =$self->user->login; + if (!$self->user->delete) { flash('error', t8('The user could not be deleted.')); $self->edit_user_form(title => t8('Edit User')); @@ -173,9 +177,15 @@ sub action_delete_user { } # Flag corresponding entries in 'employee' as deleted. + # and restore the most important user data in employee + # TODO try and catch the whole transaction {user->delete; update employee} {exception} foreach my $client (@clients) { my $dbh = $client->dbconnect(AutoCommit => 1) || next; - $dbh->do(qq|UPDATE employee SET deleted = TRUE WHERE login = ?|, undef, $self->user->login); + $dbh->do(qq|UPDATE employee SET deleted = TRUE, name = ?, deleted_email = ?, + deleted_tel = ?, deleted_fax = ?, deleted_signature = ? WHERE login = ?|,undef, + $user_config_values_ref->{name}, $user_config_values_ref->{email}, + $user_config_values_ref->{tel}, $user_config_values_ref->{fax}, + $user_config_values_ref->{signature}, $self->user->login); $dbh->disconnect; } @@ -408,7 +418,7 @@ sub action_do_create_dataset { User->new->dbcreate($::form); flash_later('info', t8("The dataset #1 has been created.", $::form->{db})); - $self->redirect_to(action => 'database_administration'); + $self->redirect_to(action => 'show'); } sub action_delete_dataset_login { @@ -439,7 +449,7 @@ sub action_do_delete_dataset { User->new->dbdelete($::form); flash_later('info', t8("The dataset #1 has been deleted.", $::form->{db})); - $self->redirect_to(action => 'database_administration'); + $self->redirect_to(action => 'show'); } #