Aktualisierung
[kivitendo-erp.git] / SL / DBUtils.pm
1 package SL::DBUtils;
2
3 require Exporter;
4 @ISA = qw(Exporter);
5
6 @EXPORT = qw(conv_i conv_date conv_dateq do_query selectrow_query do_statement dump_query);
7
8 sub conv_i {
9   my ($value, $default) = @_;
10   return (defined($value) && "$value" ne "") ? $value * 1 : $default;
11 }
12
13 sub conv_date {
14   my ($value) = @_;
15   return (defined($value) && "$value" ne "") ? $value : undef;
16 }
17
18 sub conv_dateq {
19   my ($value) = @_;
20   if (defined($value) && "$value" ne "") {
21     $value =~ s/\'/\'\'/g;
22     return "'$value'";
23   }
24   return "NULL";
25 }
26
27 sub do_query {
28   my ($form, $dbh, $query) = splice(@_, 0, 3);
29
30   if (0 == scalar(@_)) {
31     $dbh->do($query) || $form->dberror($query);
32   } else {
33     $dbh->do($query, undef, @_) ||
34       $form->dberror($query . " (" . join(", ", @_) . ")");
35   }
36 }
37
38 sub selectrow_query {
39   my ($form, $dbh, $query) = splice(@_, 0, 3);
40
41   if (0 == scalar(@_)) {
42     my @results = $dbh->selectrow_array($query);
43     $form->dberror($query) if ($dbh->err);
44     return @results;
45   } else {
46     my @results = $dbh->selectrow_array($query, undef, @_);
47     $form->dberror($query . " (" . join(", ", @_) . ")") if ($dbh->err);
48     return @results;
49   }
50 }
51
52 sub do_statement {
53   my ($form, $sth, $query) = splice(@_, 0, 3);
54
55   if (0 == scalar(@_)) {
56     $sth->execute() || $form->dberror($query);
57   } else {
58     $sth->execute(@_) ||
59       $form->dberror($query . " (" . join(", ", @_) . ")");
60   }
61 }
62
63 sub dump_query {
64   my ($level, $msg, $query) = splice(@_, 0, 3);
65   while ($query =~ /\?/) {
66     my $value = shift(@_);
67     $value =~ s/\'/\\\'/g;
68     $value = "'${value}'";
69     $query =~ s/\?/$value/;
70   }
71
72   $msg .= " " if ($msg);
73
74   $main::lxdebug->message($level, $msg . $query);
75 }
76
77 1;