diff options
author | einhverfr <einhverfr@4979c152-3d1c-0410-bac9-87ea11338e46> | 2006-09-29 17:23:22 +0000 |
---|---|---|
committer | einhverfr <einhverfr@4979c152-3d1c-0410-bac9-87ea11338e46> | 2006-09-29 17:23:22 +0000 |
commit | 096858122220c29735f1bb15bdf8118ec0e31e28 (patch) | |
tree | 13d097985245a2eebe9337be5bbc9439b2406e69 /LedgerSMB/Form.pm | |
parent | 7a2786805e9f7e29050b82a3da03d0fefa7841e7 (diff) |
Simplified custom fields API.
git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/trunk@164 4979c152-3d1c-0410-bac9-87ea11338e46
Diffstat (limited to 'LedgerSMB/Form.pm')
-rwxr-xr-x | LedgerSMB/Form.pm | 30 |
1 files changed, 29 insertions, 1 deletions
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; } |