X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDrafts.pm;h=e5242aa4d48f72e61346d9053c605d69bf374440;hb=deb4d2dbb676d7d6f69dfe7815d6e0cb09bd4a44;hp=63da852e7dd3628659233a6c58022c736da5be45;hpb=db68b6fd72b9f0d7d8be953746c0e7d6154f5eaf;p=kivitendo-erp.git diff --git a/SL/Drafts.pm b/SL/Drafts.pm index 63da852e7..e5242aa4d 100644 --- a/SL/Drafts.pm +++ b/SL/Drafts.pm @@ -14,6 +14,8 @@ use YAML; use SL::Common; use SL::DBUtils; +use strict; + sub get_module { $main::lxdebug->enter_sub(); @@ -34,28 +36,36 @@ sub get_module { return ($module, $submodule); } +my @dont_save = qw(login password action); + +sub dont_save { + return @dont_save; +} + sub save { $main::lxdebug->enter_sub(); my ($self, $myconfig, $form, $draft_id, $draft_description) = @_; - my ($dbh, $sth, $query, %saved, @dont_save, $dumped); + my ($dbh, $sth, $query, %saved, $dumped); - $dbh = $form->dbconnect_noauto($myconfig); + $dbh = $form->get_standard_dbh; + $dbh->begin_work; my ($module, $submodule) = $self->get_module($form); $query = "SELECT COUNT(*) FROM drafts WHERE id = ?"; my ($res) = selectrow_query($form, $dbh, $query, $draft_id); + if (!$res) { $draft_id = $module . "-" . $submodule . "-" . Common::unique_id(); - $query = "INSERT INTO drafts (id, module, submodule) VALUES (?, ?, ?)"; + $query = "INSERT INTO drafts (id, module, submodule) VALUES (?, ?, ?)"; do_query($form, $dbh, $query, $draft_id, $module, $submodule); } - @dont_save = qw(login password path action); map({ $saved{$_} = $form->{$_}; delete($form->{$_}); } @dont_save); + $dumped = YAML::Dump($form); map({ $form->{$_} = $saved{$_}; } @dont_save); @@ -64,13 +74,11 @@ sub save { qq| (SELECT id FROM employee WHERE login = ?) | . qq|WHERE id = ?|; - do_query($form, $dbh, $query, $draft_description, $dumped, - $form->{login}, $draft_id); + do_query($form, $dbh, $query, $draft_description, $dumped, $::myconfig{login}, $draft_id); $dbh->commit(); - $dbh->disconnect(); - $form->{draft_id} = $draft_id; + $form->{draft_id} = $draft_id; $form->{draft_description} = $draft_description; $main::lxdebug->leave_sub(); @@ -83,23 +91,17 @@ sub load { my ($dbh, $sth, $query, @values); - $dbh = $form->dbconnect($myconfig); + $dbh = $form->get_standard_dbh; $query = qq|SELECT id, description, form FROM drafts WHERE id = ?|; - $sth = $dbh->prepare($query); - $sth->execute($draft_id) || $form->dberror("$query ($draft_id)"); + $sth = prepare_execute_query($form, $dbh, $query, $draft_id); - my @values; if (my $ref = $sth->fetchrow_hashref()) { @values = ($ref->{form}, $ref->{id}, $ref->{description}); } $sth->finish(); -# do_query($form, $dbh, "DELETE FROM drafts WHERE id = ?", $draft_id); - - $dbh->disconnect(); - $main::lxdebug->leave_sub(); return @values; @@ -108,55 +110,40 @@ sub load { sub remove { $main::lxdebug->enter_sub(); - my ($self, $myconfig, $form, $draft_id) = @_; + my ($self, $myconfig, $form, @draft_ids) = @_; - return $main::lxdebug->leave_sub() unless ($draft_id); + return $main::lxdebug->leave_sub() unless (@draft_ids); - my ($dbh, $sth, $query, @values); + my ($dbh, $sth, $query); - $dbh = $form->dbconnect($myconfig); + $dbh = $form->get_standard_dbh; - $query = qq|DELETE FROM drafts WHERE id = ?|; - do_query($form, $dbh, $query, $draft_id); + $query = qq|DELETE FROM drafts WHERE id IN (| . join(", ", map { "?" } @draft_ids) . qq|)|; + do_query($form, $dbh, $query, @draft_ids); - $dbh->disconnect(); + $dbh->commit; $main::lxdebug->leave_sub(); } sub list { - $main::lxdebug->enter_sub(); - - my ($self, $myconfig, $form) = @_; - - my ($dbh, $sth, $query, @values); - - $dbh = $form->dbconnect($myconfig); - - my ($module, $submodule) = $self->get_module($form); - - my @list = (); - $query = - qq|SELECT d.id, d.description, d.itime::timestamp(0) AS itime, | . - qq| e.name AS employee_name | . - qq|FROM drafts d | . - qq|LEFT JOIN employee e ON d.employee_id = e.id | . - qq|WHERE (d.module = ?) AND (d.submodule = ?) | . - qq|ORDER BY d.itime|; - my @values = ($module, $submodule); - - $sth = $dbh->prepare($query); - $sth->execute(@values) || - $form->dberror($query . " (" . join(", ", @values) . ")"); - - while (my $ref = $sth->fetchrow_hashref()) { - push(@list, $ref); - } - $sth->finish(); - - $dbh->disconnect(); - - $main::lxdebug->leave_sub(); + $::lxdebug->enter_sub; + + my $self = shift; + my $myconfig = shift || \%::myconfig; + my $form = shift || $::form; + my $dbh = $form->get_standard_dbh; + + my @list = selectall_hashref_query($form, $dbh, <get_module($form)); + SELECT d.id, d.description, d.itime::timestamp(0) AS itime, + e.name AS employee_name + FROM drafts d + LEFT JOIN employee e ON d.employee_id = e.id + WHERE (d.module = ?) AND (d.submodule = ?) + ORDER BY d.itime +SQL + + $::lxdebug->leave_sub; return @list; }