X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=SL%2FController%2FAdmin.pm;h=0481926c91a18c598cedfc42a50fbdada259778f;hb=efb9a24f2252104ab4af5c25334119d7c5c70a8c;hp=2e55420863491452fccb2c574bd87e4825a85368;hpb=b33396197e203f36a2edc30c3761840130a5d4bd;p=kivitendo-erp.git diff --git a/SL/Controller/Admin.pm b/SL/Controller/Admin.pm index 2e5542086..0481926c9 100644 --- a/SL/Controller/Admin.pm +++ b/SL/Controller/Admin.pm @@ -129,6 +129,12 @@ 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}) || { }; @@ -166,6 +172,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 +183,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; }