X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FAdmin.pm;h=5e6456332aa62ed07a20574382e0ec07790c94c2;hb=57faab8f922edc190b6909b7626a445423de6676;hp=179142c738ac9e2acd690470f99783599c8e293a;hpb=9bfde8af91ac295afb6e68b8580f000fd6051f15;p=kivitendo-erp.git diff --git a/SL/Controller/Admin.pm b/SL/Controller/Admin.pm index 179142c73..5e6456332 100644 --- a/SL/Controller/Admin.pm +++ b/SL/Controller/Admin.pm @@ -129,12 +129,6 @@ sub action_edit_user { $self->edit_user_form(title => t8('Edit User')); } -sub action_save_newuser { - my ($self) = @_; - $::form->{user}{clients} = 0; - $self->action_save_user(); -} - sub action_save_user { my ($self) = @_; my $params = delete($::form->{user}) || { }; @@ -172,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')); @@ -179,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; }