
| Current Path : /var/www/web-klick.de/dsh/50_dev2017/1300__perllib/DivBasicF/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : /var/www/web-klick.de/dsh/50_dev2017/1300__perllib/DivBasicF/DBIfT.pm |
package DivBasicF::DBIfT;
use strict;
use vars qw(@ISA);
use DBI;
@ISA = qw(DBI);
#********************************************************************
#********************************************************************
package DivBasicF::DBIfT::db;
use strict;
use vars qw(@ISA);
@ISA = qw(DBI::db);
#********************************************************************
sub mode {
my $self = shift;
$self->{'___MODE___'} = shift;
return($self);
}
#********************************************************************
sub prepare {
my $self = shift;
my $query = shift;
# print "QQ2: $query\n"; sleep 0;
return($self->SUPER::prepare($self->query(1,$query),@_));
}
#********************************************************************
sub do {
my $self = shift;
my $query = shift;
my @pars = @_;
return($self->SUPER::do($self->query(2,$query),@pars));
# return($self->SUPER::do($query,@pars));
}
#********************************************************************
sub query {
my $self = shift;
my $mode = shift;
my $query = shift;
my $o; my $o1; my $o2; my $limit;
if ($query =~ /^(.*) +(where|WHERE) +(.+?)\;(.*)$/) {
$query = $1;
$o1 = $3;
$o = $4;
if ($o1 =~ /^(.*) +(and|AND) +(.*)$/) {
$o2 = $1;
$o1 = $3;
}
$limit = "";
if ($o1 =~ /^(\d+)(.*)$/) {
$limit = " order by $2 limit $1";
$o1 = $2;
$o1 =~ s/-//;
$limit =~ s/-(.*?) limit/$1 desc limit /;
}
if ($o) {
$query = $query . " where not $o1 = \"\" and ";
if ($o2) {
$query = $query . $o2 . " and ";
}
$o =~ s/([~,])/\%\"$1$o1 like \"\%/g;
$o = "$o1 like \"\%" . $o . "\%\"";
$o =~ s/~/\) or \(/g;
$o =~ s/,/ and /g;
$query = $query . "(" . $o . ")";
$query =~ s/\(.*?like \"\%\-\%\"\)/\(1\)/g;
}
$query = $query . $limit;
}
if ($query =~ / match /i) {
while ($query =~ s/([a-zA-Z0-9]+) +(MATCH|match) +([\'\"].*?[\'\"])/___X_Y_Z___ like $1/) {
$o = $2;
$o =~ s/\*/\%/g;
$query =~ s/___X_Y_Z___/$o/;
}
}
# print "QQ1: $query\n"; sleep 5;
return($query);
}
#******************************************************************
#********************************************************************
package DivBasicF::DBIfT::st;
use strict;
use vars qw(@ISA);
@ISA = qw(DBI::st);
#********************************************************************
sub restart {
my $self = shift;
if (!($self->{'___STATUS___'})) {
$self->execute();
$self->{'___STATUS___'} = 1;
}
elsif ($self->{'___STATUS___'} == 1) {
$self->finish();
$self->{'___STATUS___'} = 2;
}
}
#********************************************************************
sub next { my $self = shift; return($self->fetchrow_arrayref()); }
1;