version 1.45, 2001/12/06 23:39:11
|
version 1.49, 2001/12/11 12:19:31
|
Line 2
|
Line 2
|
|
|
use DBI; |
use DBI; |
use CGI ':all'; |
use CGI ':all'; |
use Text::Query; |
#use Text::Query; |
use strict; |
use strict; |
use Time::Local; |
use Time::Local; |
use POSIX qw(locale_h); |
use POSIX qw(locale_h); |
use locale; |
use locale; |
#open STDERR, ">errors1"; |
open STDERR, ">errors1"; |
my $printqueries=0; |
my $printqueries=0; |
my %forbidden=(); |
my %forbidden=(); |
my $debug=0; #added by R7 |
my $debug=0; #added by R7 |
|
if (param('debug')) {$debug=1; $printqueries=1} |
my %fieldname= (0,'Question', 1, 'Answer', 2, 'Comments', 3, 'Authors', 4, 'Sources'); |
my %fieldname= (0,'Question', 1, 'Answer', 2, 'Comments', 3, 'Authors', 4, 'Sources'); |
my %rusfieldname=('Question','÷ÏÐÒÏÓ', 'Answer', 'ïÔ×ÅÔ', |
my %rusfieldname=('Question','÷ÏÐÒÏÓ', 'Answer', 'ïÔ×ÅÔ', |
'Comments', 'ëÏÍÍÅÎÔÁÒÉÉ', 'Authors', 'á×ÔÏÒ', |
'Comments', 'ëÏÍÍÅÎÔÁÒÉÉ', 'Authors', 'á×ÔÏÒ', |
Line 69 sub GetTournament {
|
Line 70 sub GetTournament {
|
$sth->execute; |
$sth->execute; |
|
|
@arr = $sth->fetchrow; |
@arr = $sth->fetchrow; |
|
$sth->finish; |
my($i, $name) = 0; |
my($i, $name) = 0; |
foreach $name (@{$sth->{NAME}}) { |
foreach $name (@{$sth->{NAME}}) { |
$Tournament{$name} = $arr[$i++]; |
$Tournament{$name} = $arr[$i++]; |
Line 94 sub GetQuestion {
|
Line 96 sub GetQuestion {
|
$Question{$name} = $arr[$i++]; |
$Question{$name} = $arr[$i++]; |
} |
} |
|
|
|
$sth->finish; |
return %Question; |
return %Question; |
} |
} |
|
|
Line 111 sub GetTourQuestions {
|
Line 114 sub GetTourQuestions {
|
push @Questions, $arr[0]; |
push @Questions, $arr[0]; |
} |
} |
|
|
|
$sth->finish; |
return @Questions; |
return @Questions; |
} |
} |
|
|
Line 127 sub GetTours {
|
Line 131 sub GetTours {
|
while (@arr = $sth->fetchrow) { |
while (@arr = $sth->fetchrow) { |
push @Tours, $arr[0]; |
push @Tours, $arr[0]; |
} |
} |
|
$sth->finish; |
return @Tours; |
return @Tours; |
} |
} |
|
|
Line 141 print "timeb=".time.br if $debug;
|
Line 145 print "timeb=".time.br if $debug;
|
$sth->execute; |
$sth->execute; |
my @a=$sth->fetchrow; |
my @a=$sth->fetchrow; |
print "timee0=".time.br if $debug; |
print "timee0=".time.br if $debug; |
|
$sth->finish; |
$a[0]||0; |
$a[0]||0; |
} |
} |
|
|
Line 151 sub printform
|
Line 156 sub printform
|
my $submit=submit(-value=>'ðÏÉÓË'); |
my $submit=submit(-value=>'ðÏÉÓË'); |
my $inputstring=textfield(-name=>'sstr', |
my $inputstring=textfield(-name=>'sstr', |
-default=>param('sstr')||'', |
-default=>param('sstr')||'', |
-size=>50); |
-size=>30, |
|
-maxlength=>30); |
my @df=keys %searchin; |
my @df=keys %searchin; |
@df=('Question', 'Answer') unless @df; |
@df=('Question', 'Answer') unless @df; |
my $fields=checkbox_group('searchin',['Question','Answer','Comments','Authors','Sources'], [@df], |
my $fields=checkbox_group('searchin',['Question','Answer','Comments','Authors','Sources'], [@df], |
Line 265 print "$query",br if $printqueries;
|
Line 271 print "$query",br if $printqueries;
|
{ |
{ |
push (@{$nf[$i]},$arr[0]) |
push (@{$nf[$i]},$arr[0]) |
} |
} |
|
$sth->finish; |
} |
} |
|
|
|
|
Line 311 print STDERR "!$query\n",br if $printque
|
Line 318 print STDERR "!$query\n",br if $printque
|
{ |
{ |
@blob=(@blob,unpack 'C*',$arr[0]); |
@blob=(@blob,unpack 'C*',$arr[0]); |
} |
} |
|
$sth->finish; |
$query="select number from nf where ".(join ' OR ', @arr1); |
$query="select number from nf where ".(join ' OR ', @arr1); |
print "$query\n",br if $printqueries; |
print "$query\n",br if $printqueries; |
$sth=$dbh -> prepare($query); |
$sth=$dbh -> prepare($query); |
Line 320 print "$query\n",br if $printqueries;
|
Line 328 print "$query\n",br if $printqueries;
|
{ |
{ |
$frequence[$i]+=$arr[0]; |
$frequence[$i]+=$arr[0]; |
} |
} |
|
$sth->finish; |
|
|
|
|
if (@blob < 4) |
if (@blob < 4) |
Line 441 sub Search {
|
Line 449 sub Search {
|
my $sstr=$$s; |
my $sstr=$$s; |
my (@arr, @Questions, @fields); |
my (@arr, @Questions, @fields); |
my (@sar, $i, $sth,$where,$query); |
my (@sar, $i, $sth,$where,$query); |
my $ip=$ENV{'REMOTE_ADDR'}; |
# my $ip=$ENV{'REMOTE_ADDR'}; |
|
|
$ip=$dbh->quote($ip); |
# $ip=$dbh->quote($ip); |
$query= |
# $query= |
"INSERT into queries (query,metod,searchin,ip) |
# "INSERT into queries (query,metod,searchin,ip) |
values (". $dbh->quote($sstr).', '. |
# values (". $dbh->quote($sstr).', '. |
$dbh->quote($metod) . ', ' . |
# $dbh->quote($metod) . ', ' . |
$dbh->quote(join ' ', grep $searchin{$_}, keys %searchin) . |
# $dbh->quote(join ' ', grep $searchin{$_}, keys %searchin) . |
", $ip)"; |
# ", $ip)"; |
print $query if $printqueries; |
#print $query if $printqueries; |
$dbh -> do ($query); |
# $dbh -> do ($query); |
if ($metod eq 'rus') |
if ($metod eq 'rus') |
{ |
{ |
my @tasks=russearch($dbh,$sstr,$all,$allnf); |
my @tasks=russearch($dbh,$sstr,$all,$allnf); |
Line 527 print $query if $printqueries;
|
Line 535 print $query if $printqueries;
|
while (@arr = $sth->fetchrow) { |
while (@arr = $sth->fetchrow) { |
push @Questions, $arr[0] unless $forbidden{$arr[0]}; |
push @Questions, $arr[0] unless $forbidden{$arr[0]}; |
} |
} |
|
$sth->finish; |
print "@Questions" if $printqueries; |
print "@Questions" if $printqueries; |
return @Questions; |
return @Questions; |
} |
} |
Line 537 print "@Questions" if $printqueries;
|
Line 545 print "@Questions" if $printqueries;
|
Ðð Òò Óó Ôô Õõ Ææ Èè Ãã Þþ Ûû Ýý Øø Ùù Üü Àà Ññ/; |
Ðð Òò Óó Ôô Õõ Ææ Èè Ãã Þþ Ûû Ýý Øø Ùù Üü Àà Ññ/; |
|
|
sub NoCase { |
sub NoCase { |
my ($sstr) = shift; |
my ($sstr) = shift; |
my ($res); |
my ($res); |
|
|
if (($res) = grep(/$sstr/, @letters)) { |
if (($res) = grep(/$sstr/, @letters)) { |
Line 958 sub PrintQuestion {
|
Line 966 sub PrintQuestion {
|
if ($Question{'Authors'}) { |
if ($Question{'Authors'}) { |
my $q=$Question{'Authors'}; |
my $q=$Question{'Authors'}; |
|
|
my $sth=$dbh->prepare("select Authors.Id,Name, Surname, Nicks from Authors, A2Q |
# my $sth=$dbh->prepare("select Authors.Id,Name, Surname, Nicks from Authors, A2Q |
where Authors.Id=Author And Question=$Id"); |
# where Authors.Id=Author And Question=$Id"); |
$sth->execute; |
# $sth->execute; |
my ($AuthorId,$Name, $Surname,$other,$Nicks); |
# my ($AuthorId,$Name, $Surname,$other,$Nicks); |
|
|
while ((($AuthorId,$Name, $Surname,$Nicks)=$sth->fetchrow),$AuthorId) |
# while ((($AuthorId,$Name, $Surname,$Nicks)=$sth->fetchrow),$AuthorId) |
{ |
# { |
my ($firstletter)=$Name=~m/^./g; |
# my ($firstletter)=$Name=~m/^./g; |
$Name=~s/\./\\\./g; |
# $Name=~s/\./\\\./g; |
my $sha="(?:$Name\\s+$Surname)|(?:$Surname\\s+$Name)|(?:$firstletter\\.\\s*$Surname)|(?:$Surname\\s+$firstletter\\.)|(?:$Surname)|(?:$Name)"; |
# my $sha="(?:$Name\\s+$Surname)|(?:$Surname\\s+$Name)|(?:$firstletter\\.\\s*$Surname)|(?:$Surname\\s+$firstletter\\.)|(?:$Surname)|(?:$Name)"; |
if ($Nicks) |
# if ($Nicks) |
{ |
# { |
$Nicks=~s/^\|//; |
# $Nicks=~s/^\|//; |
foreach (split /\|/, $Nicks) |
# foreach (split /\|/, $Nicks) |
{ |
# { |
s/\s+/ /g; |
# s/\s+/ /g; |
s/\s+$//; |
# s/\s+$//; |
s/ /\\s+/g; |
# s/ /\\s+/g; |
s/\./\\\./g; |
# s/\./\\\./g; |
if (s/>$//) {$sha="$sha|(?:$_)"} |
# if (s/>$//) {$sha="$sha|(?:$_)"} |
else {$sha="(?:$_)|$sha"} |
# else {$sha="(?:$_)|$sha"} |
} |
# } |
} |
# } |
$q=~s/($sha)/a({href=>url."?qofauthor=$AuthorId"},$1)/ei; |
# $q=~s/($sha)/a({href=>url."?qofauthor=$AuthorId"},$1)/ei; |
} |
# } |
|
|
$output .= &PrintField("á×ÔÏÒ(Ù)", $q, $text); |
$output .= &PrintField("á×ÔÏÒ(Ù)", $q, $text); |
|
|
Line 1032 sub Get12Random {
|
Line 1040 sub Get12Random {
|
$sth->execute; |
$sth->execute; |
$t = ($sth->fetchrow)[0]; |
$t = ($sth->fetchrow)[0]; |
} until !$chosen{$q} && $t && $type =~ /[$t]/; |
} until !$chosen{$q} && $t && $type =~ /[$t]/; |
|
$sth->finish; |
$chosen{$q} = 'y'; |
$chosen{$q} = 'y'; |
push @questions, $q; |
push @questions, $q; |
} |
} |
Line 1123 sub PrintDates {
|
Line 1132 sub PrintDates {
|
" " . a({href=>url . "?tour=$Tournament{'Id'}&answer=0"}, |
" " . a({href=>url . "?tour=$Tournament{'Id'}&answer=0"}, |
$Tournament{'Title'}, $Tournament{'PlayedAt'})); |
$Tournament{'Title'}, $Tournament{'PlayedAt'})); |
} |
} |
|
$sth->finish; |
$output .= dl($list); |
$output .= dl($list); |
return $output; |
return $output; |
} |
} |
Line 1142 sub PrintQOfAuthor
|
Line 1152 sub PrintQOfAuthor
|
my @Questions; |
my @Questions; |
while (($q)=$sth->fetchrow,$q) |
while (($q)=$sth->fetchrow,$q) |
{push @Questions,$q unless $forbidden{$q}} |
{push @Questions,$q unless $forbidden{$q}} |
|
$sth->finish; |
|
|
my ($output, $i, $suffix, $hits) = ('', 0, '', $#Questions + 1); |
my ($output, $i, $suffix, $hits) = ('', 0, '', $#Questions + 1); |
|
|
Line 1215 a({href=>url."?authors=surname"},"ÆÁÍÉÌÉ
|
Line 1226 a({href=>url."?authors=surname"},"ÆÁÍÉÌÉ
|
} |
} |
} |
} |
$output.="</TABLE>"; |
$output.="</TABLE>"; |
|
$sth->finish; |
return $output; |
return $output; |
} |
} |
|
|
Line 1311 print $query if $printqueries;
|
Line 1323 print $query if $printqueries;
|
my $sth=$dbh->prepare($query); |
my $sth=$dbh->prepare($query); |
$sth->execute; |
$sth->execute; |
my $sstr= join ' ',$sth->fetchrow; |
my $sstr= join ' ',$sth->fetchrow; |
|
$sth->finish; |
$searchin{'Question'}=1; |
$searchin{'Question'}=1; |
$searchin{'Answer'}=1; |
$searchin{'Answer'}=1; |
$sstr=~tr/£³/Åå/; |
$sstr=~tr/£³/Åå/; |
Line 1353 $sstr=~s/[^ÊÃÕËÅÎÇÛÝÚÈßÆÙ×ÁÐÒÏÌÄÖÜÑÞÓÍÉÔ
|
Line 1366 $sstr=~s/[^ÊÃÕËÅÎÇÛÝÚÈßÆÙ×ÁÐÒÏÌÄÖÜÑÞÓÍÉÔ
|
WHERE FileName = '$tour.txt'"); |
WHERE FileName = '$tour.txt'"); |
$sth->execute; |
$sth->execute; |
$tour = ($sth->fetchrow)[0]; |
$tour = ($sth->fetchrow)[0]; |
|
$sth->finish; |
} |
} |
print &PrintTournament($dbh, $tour, param('answer')); |
print &PrintTournament($dbh, $tour, param('answer')); |
} |
} |