-sub audittrail {
- my ($self, $dbh, $myconfig, $audittrail) = @_;
-
- # table, $reference, $formname, $action, $id, $transdate) = @_;
-
- my $query;
- my $rv;
- my $disconnect;
-
- if (!$dbh) {
- $dbh = $self->dbconnect($myconfig);
- $disconnect = 1;
- }
-
- # if we have an id add audittrail, otherwise get a new timestamp
-
- if ($audittrail->{id}) {
-
- $query = qq|SELECT audittrail FROM defaults|;
-
- if ($dbh->selectrow_array($query)) {
- my ($null, $employee_id) = $self->get_employee($dbh);
-
- if ($self->{audittrail} && !$myconfig) {
- chop $self->{audittrail};
-
- my @a = split /\|/, $self->{audittrail};
- my %newtrail = ();
- my $key;
- my $i;
- my @flds = qw(tablename reference formname action transdate);
-
- # put into hash and remove dups
- while (@a) {
- $key = "$a[2]$a[3]";
- $i = 0;
- $newtrail{$key} = { map { $_ => $a[$i++] } @flds };
- splice @a, 0, 5;
- }
-
- $query = qq|INSERT INTO audittrail (trans_id, tablename, reference,
- formname, action, employee_id, transdate)
- VALUES ($audittrail->{id}, ?, ?,
- ?, ?, $employee_id, ?)|;
- my $sth = $dbh->prepare($query) || $self->dberror($query);
-
- foreach $key (
- sort {
- $newtrail{$a}{transdate} cmp $newtrail{$b}{transdate}
- } keys %newtrail
- ) {
- $i = 1;
- for (@flds) { $sth->bind_param($i++, $newtrail{$key}{$_}) }
-
- $sth->execute || $self->dberror;
- $sth->finish;
- }
- }
-
- if ($audittrail->{transdate}) {
- $query = qq|INSERT INTO audittrail (trans_id, tablename, reference,
- formname, action, employee_id, transdate) VALUES (
- $audittrail->{id}, '$audittrail->{tablename}', |
- . $dbh->quote($audittrail->{reference}) . qq|,
- '$audittrail->{formname}', '$audittrail->{action}',
- $employee_id, '$audittrail->{transdate}')|;
- } else {
- $query = qq|INSERT INTO audittrail (trans_id, tablename, reference,
- formname, action, employee_id) VALUES ($audittrail->{id},
- '$audittrail->{tablename}', |
- . $dbh->quote($audittrail->{reference}) . qq|,
- '$audittrail->{formname}', '$audittrail->{action}',
- $employee_id)|;
- }
- $dbh->do($query);
- }
- } else {
-
- $query = qq|SELECT current_timestamp FROM defaults|;
- my ($timestamp) = $dbh->selectrow_array($query);
-
- $rv =
- "$audittrail->{tablename}|$audittrail->{reference}|$audittrail->{formname}|$audittrail->{action}|$timestamp|";
- }
-
- $dbh->disconnect if $disconnect;
-
- $rv;
-
-}
-
-