summaryrefslogtreecommitdiff
path: root/LedgerSMB/DBObject/User.pm
blob: b09951a99742ae0ac07e770ba8ee5b838cb3a10f (plain)
  1. package LedgerSMB::DBObject::User;
  2. use base qw/LedgerSMB::DBObject/;
  3. use Data::Dumper;
  4. sub save {
  5. my $self = shift @_;
  6. my $user = $self->get();
  7. if ( $user->{id} && $self->{is_a_user} ) {
  8. # doesn't check for the password - that's done in the sproc.
  9. $self->{id} = shift @{ $self->exec_method(funcname=>'admin__save_user',
  10. args=>[$user->{id}, $self->{username}, $self->{password}] ) };
  11. if (!$self->{id}) {
  12. return 0;
  13. }
  14. }
  15. elsif ($user && !$self->{is_a_user}) {
  16. # there WAS a user, and we've decided we want that user to go away now.
  17. $self->{id} = $user->{id};
  18. return $self->remove();
  19. }
  20. elsif ($self->{is_a_user}) {
  21. # No user ID, meaning, creating a new one.
  22. $self->{id} = shift @{ $self->exec_method(funcname=>'admin__save_user',
  23. args=>[undef, $self->{username}, $self->{password}] ) };
  24. }
  25. return 1;
  26. }
  27. sub get {
  28. my $self = shift @_;
  29. my $id = shift;
  30. my $user = @{ $self->exec_method(funcname=>'admin__get_user',
  31. args=>[$id])}[0];
  32. return $user;
  33. }
  34. sub remove {
  35. my $self = shift;
  36. my $code = $self->exec_method(funcname=>"admin__delete_user", args=>[$self->{id}, $self->{username}]);
  37. $self->{id} = undef; # never existed..
  38. return $code->[0];
  39. }
  40. sub save_prefs {
  41. my $self = shift @_;
  42. my $pref_id = $self->exec_method(funcname=>"admin__save_preferences",
  43. args=>[
  44. 'language',
  45. 'stylesheet',
  46. 'printer',
  47. 'dateformat',
  48. 'numberformat'
  49. ]
  50. );
  51. }
  52. sub get_all_users {
  53. my $self = shift @_;
  54. my @ret = $self->exec_method( funcname=>"user__get_all_users" );
  55. $self->{users} = \@ret;
  56. }
  57. 1;