From 096858122220c29735f1bb15bdf8118ec0e31e28 Mon Sep 17 00:00:00 2001 From: einhverfr Date: Fri, 29 Sep 2006 17:23:22 +0000 Subject: Simplified custom fields API. git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/trunk@164 4979c152-3d1c-0410-bac9-87ea11338e46 --- LedgerSMB/Form.pm | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'LedgerSMB/Form.pm') diff --git a/LedgerSMB/Form.pm b/LedgerSMB/Form.pm index 5ea22710..3b8e79ca 100755 --- a/LedgerSMB/Form.pm +++ b/LedgerSMB/Form.pm @@ -1282,6 +1282,7 @@ sub db_init { } sub get_custom_queries { + my $dbh = $self->{dbh}; my ($self, $tablename, $query_type, $linenum) = @_; if ($query_type !~ /^(select|insert|update)$/i){ $self->error($locale->text( @@ -1308,7 +1309,10 @@ sub get_custom_queries { my $ins_values; $query = "$query_type "; if ($query_type eq 'UPDATE'){ - $query .= " $_ SET "; + $query = "DELETE FROM $_ WHERE row_id = ?"; + my $sth = $dbh->prepare($query); + $sth->execute->($form->{"id"."$linenum"}) + || $self->dberror($query); } elsif ($query_type eq 'INSERT'){ $query .= " INTO $_ ("; } @@ -1344,6 +1348,30 @@ sub get_custom_queries { push @rc, [ @data ]; } } + if ($query_type eq 'INSERT'){ + for (@rc){ + $query = shift (@{$_}); + $sth = $dbh->prepare($query) + || $form->db_error($query); + $sth->execute(@{$_}, $form->{id}) + || $form->dberror($query);; + $sth->finish; + $did_insert = 1; + } + } elsif ($query_type eq 'UPDATE'){ + @rc = $self->get_custom_queries( + $tablename, $query_type, $linenum); + } elsif ($query_type eq 'SELECT'){ + for (@rc){ + $query = shift @{$_}; + $sth = $form->{dbh}->prepare($query); + $sth->execute($form->{id}); + $ref = $sth->fetchrow_hashref(NAME_lc); + for (keys %{$ref}){ + $form->{$_} = $ref->{$_}; + } + } + } @rc; } -- cgit v1.2.3