X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDrafts.pm;h=49c7fcde28fe6aa33f7d07234100e1502588505f;hb=0efaacee75b966aa01e8a4e0358b5753a9e52a22;hp=698b217f5670d8bcd7c3cefbdcb2dc1d44ac6b4b;hpb=08df38dfcaad6fef28988003da9212ef47f75c84;p=kivitendo-erp.git diff --git a/SL/Drafts.pm b/SL/Drafts.pm index 698b217f5..49c7fcde2 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,12 +36,14 @@ sub get_module { return ($module, $submodule); } +my @dont_save = qw(login password stylesheet action); + 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); @@ -47,15 +51,16 @@ sub save { $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 +69,12 @@ 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, $form->{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(); @@ -87,17 +91,13 @@ sub load { $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(); @@ -116,8 +116,7 @@ sub remove { $dbh = $form->dbconnect($myconfig); - $query = qq|DELETE FROM drafts WHERE id IN (| . - join(", ", map({ "?" } @draft_ids)) . qq|)|; + $query = qq|DELETE FROM drafts WHERE id IN (| . join(", ", map { "?" } @draft_ids) . qq|)|; do_query($form, $dbh, $query, @draft_ids); $dbh->disconnect(); @@ -144,11 +143,9 @@ sub list { 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); + @values = ($module, $submodule); - $sth = $dbh->prepare($query); - $sth->execute(@values) || - $form->dberror($query . " (" . join(", ", @values) . ")"); + $sth = prepare_execute_query($form, $dbh, $query, @values); while (my $ref = $sth->fetchrow_hashref()) { push(@list, $ref);