kivitendo/SL/TODO.pm @ 7b1da9c3
713a6d70 | Moritz Bunkus | # TODO list helper functions
|
||
package TODO;
|
||||
use SL::DBUtils;
|
||||
39be0a81 | Sven Schöling | use SL::DB;
|
||
713a6d70 | Moritz Bunkus | |||
76c486e3 | Sven Schöling | use strict;
|
||
713a6d70 | Moritz Bunkus | sub get_user_config {
|
||
$main::lxdebug->enter_sub();
|
||||
my $self = shift;
|
||||
my %params = @_;
|
||||
my $myconfig = \%main::myconfig;
|
||||
my $form = $main::form;
|
||||
my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig);
|
||||
$form->error('Need params: id or login') if (!$params{id} && !$params{login});
|
||||
if ($params{login}) {
|
||||
($params{id}) = selectfirst_array_query($form, $dbh, qq|SELECT id FROM employee WHERE login = ?|, $params{login});
|
||||
if (!$params{id}) {
|
||||
$main::lxdebug->leave_sub();
|
||||
return ();
|
||||
}
|
||||
} else {
|
||||
($params{login}) = selectfirst_array_query($form, $dbh, qq|SELECT login FROM employee WHERE id = ?|, conv_i($params{id}));
|
||||
}
|
||||
my $cfg = selectfirst_hashref_query($form, $dbh, qq|SELECT * FROM todo_user_config WHERE employee_id = ?|, conv_i($params{id}));
|
||||
if (!$cfg) {
|
||||
# Standard configuration: enable all
|
||||
$cfg = { map { $_ => 1 } qw(show_after_login show_follow_ups show_follow_ups_login show_overdue_sales_quotations show_overdue_sales_quotations_login) };
|
||||
}
|
||||
a46b8625 | Bernd Bleßmann | if (! $main::auth->check_right($params{login}, 'sales_quotation_edit | sales_quotation_view | request_quotation_edit | request_quotation_view')) {
|
||
713a6d70 | Moritz Bunkus | map { delete $cfg->{$_} } qw(show_overdue_sales_quotations show_overdue_sales_quotations_login);
|
||
}
|
||||
$main::lxdebug->leave_sub();
|
||||
return %{ $cfg };
|
||||
}
|
||||
sub save_user_config {
|
||||
$main::lxdebug->enter_sub();
|
||||
my $self = shift;
|
||||
my %params = @_;
|
||||
Common::check_params(\%params, qw(login));
|
||||
my $myconfig = \%main::myconfig;
|
||||
my $form = $main::form;
|
||||
39be0a81 | Sven Schöling | SL::DB->client->with_transaction(sub {
|
||
my $dbh = $params{dbh} || SL::DB->client->dbh;
|
||||
713a6d70 | Moritz Bunkus | |||
39be0a81 | Sven Schöling | my $query = qq|SELECT id FROM employee WHERE login = ?|;
|
||
713a6d70 | Moritz Bunkus | |||
39be0a81 | Sven Schöling | my ($id) = selectfirst_array_query($form, $dbh, $query, $params{login});
|
||
713a6d70 | Moritz Bunkus | |||
39be0a81 | Sven Schöling | if (!$id) {
|
||
$main::lxdebug->leave_sub();
|
||||
return;
|
||||
}
|
||||
713a6d70 | Moritz Bunkus | |||
39be0a81 | Sven Schöling | $query =
|
||
qq|SELECT show_after_login
|
||||
FROM todo_user_config
|
||||
WHERE employee_id = ?|;
|
||||
713a6d70 | Moritz Bunkus | |||
39be0a81 | Sven Schöling | if (! selectfirst_hashref_query($form, $dbh, $query, $id)) {
|
||
do_query($form, $dbh, qq|INSERT INTO todo_user_config (employee_id) VALUES (?)|, $id);
|
||||
}
|
||||
713a6d70 | Moritz Bunkus | |||
39be0a81 | Sven Schöling | $query =
|
||
qq|UPDATE todo_user_config SET
|
||||
show_after_login = ?,
|
||||
show_follow_ups = ?,
|
||||
show_follow_ups_login = ?,
|
||||
show_overdue_sales_quotations = ?,
|
||||
show_overdue_sales_quotations_login = ?
|
||||
713a6d70 | Moritz Bunkus | |||
39be0a81 | Sven Schöling | WHERE employee_id = ?|;
|
||
713a6d70 | Moritz Bunkus | |||
39be0a81 | Sven Schöling | my @values = map { $params{$_} ? 't' : 'f' } qw(show_after_login show_follow_ups show_follow_ups_login show_overdue_sales_quotations show_overdue_sales_quotations_login);
|
||
push @values, $id;
|
||||
713a6d70 | Moritz Bunkus | |||
39be0a81 | Sven Schöling | do_query($form, $dbh, $query, @values);
|
||
6b23fb21 | Sven Schöling | 1;
|
||
}) or do { die SL::DB->client->error };
|
||||
713a6d70 | Moritz Bunkus | |||
$main::lxdebug->leave_sub();
|
||||
}
|
||||
1;
|