X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDrafts.pm;h=44088994b05b27e5b61c8a2269a47820bcf4a657;hb=41b8891d96b1ea8b22b06e9a14eb20eb96cc0300;hp=a4d4dc6a16f64661b7e3a8b23caf44f1d9eedc40;hpb=d629acd82a27e980899a044ca8b0f4becc8e94bb;p=kivitendo-erp.git diff --git a/SL/Drafts.pm b/SL/Drafts.pm index a4d4dc6a1..44088994b 100644 --- a/SL/Drafts.pm +++ b/SL/Drafts.pm @@ -34,12 +34,14 @@ sub get_module { return ($module, $submodule); } +@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 +49,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 action); map({ $saved{$_} = $form->{$_}; delete($form->{$_}); } @dont_save); + $dumped = YAML::Dump($form); map({ $form->{$_} = $saved{$_}; } @dont_save); @@ -64,13 +67,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,8 +89,7 @@ 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()) { @@ -96,8 +97,6 @@ sub load { } $sth->finish(); -# do_query($form, $dbh, "DELETE FROM drafts WHERE id = ?", $draft_id); - $dbh->disconnect(); $main::lxdebug->leave_sub(); @@ -116,8 +115,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(); @@ -146,9 +144,7 @@ sub list { qq|ORDER BY d.itime|; my @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);