version 1.74, 2002/10/06 08:58:12
|
version 1.91, 2003/02/21 19:39:46
|
Line 7 use Time::Local;
|
Line 7 use Time::Local;
|
use POSIX qw(locale_h); |
use POSIX qw(locale_h); |
use locale; |
use locale; |
open STDERR, ">/var/tmp/errors1"; |
open STDERR, ">/var/tmp/errors1"; |
|
my $newsurl='http://news.chgk.info/'; |
|
my ($proxyptext,$proxysstr); |
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} |
if (param('debug')) {$debug=1; $printqueries=1} |
*STDERR=*STDOUT if $debug; |
*STDERR=*STDOUT if $debug; |
|
my $thislocale; |
|
if ($^O =~ /win/i) { |
|
$thislocale = "Russian_Russia.20866"; |
|
} else { |
|
$thislocale = "ru_RU.KOI8-R"; |
|
} |
|
POSIX::setlocale( &POSIX::LC_ALL, $thislocale ); |
|
|
|
if ((uc 'а') ne 'А') {print STDERR "Koi8-r locale not installed!\n"}; |
|
|
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', 'Автор', |
'Sources', 'Источник','old','Старый','rus','Новый', |
'Sources', 'Источник','old','Старый','rus','Новый', |
'chgk', 'ЧГК', 'brain', 'Брейн-ринг','game', 'Своя игра', |
'chgk', 'ЧГК', 'brain', 'Брейн-ринг','game', 'Своя игра', |
'ehruditka', 'Эрудитка', 'beskrylka', 'Бескрылка' |
'ehruditka', 'Эрудитка', 'beskrylka', 'Бескрылка', 'igp', 'Интернет' |
); |
); |
my %searchin; |
my %searchin; |
my $rl=qr/[йцукенгшщзхъфывапролджэячсмитьбюё]/; |
my $rl=qr/[йцукенгшщзхъфывапролджэячсмитьбюё]/; |
Line 29 my %metodchar=('rus',1,'old',2);
|
Line 41 my %metodchar=('rus',1,'old',2);
|
|
|
|
|
|
|
my $thislocale; |
|
|
|
$searchin{$_}=1 foreach param('searchin'); |
$searchin{$_}=1 foreach param('searchin'); |
my %TypeName=('children'=>'Д', 'game'=>'И', |
my %TypeName=('children'=>'Д', 'game'=>'Я', 'igp'=>'И', |
'chgk'=>'Ч', 'brain'=>'Б', 'beskrylka'=>'Л','ehruditka'=>'Э'); |
'chgk'=>'Ч', 'brain'=>'Б', 'beskrylka'=>'Л','ehruditka'=>'Э'); |
|
|
|
|
Line 144 sub GetTours {
|
Line 155 sub GetTours {
|
sub count |
sub count |
{ |
{ |
my ($dbh,$word)=@_; |
my ($dbh,$word)=@_; |
print "timeb=".time.br if $debug; |
|
$word=$dbh->quote(uc $word); |
$word=$dbh->quote(uc $word); |
my $query="SELECT number from nests,nf where $word=w1 AND w2=nf.id"; |
my $query="SELECT number from nests,nf where $word=w1 AND w2=nf.id"; |
my $sth=$dbh->prepare($query); |
my $sth=$dbh->prepare($query); |
$sth->execute; |
$sth->execute; |
my @a=$sth->fetchrow; |
my @a=$sth->fetchrow; |
print "timee0=".time.br if $debug; |
|
$sth->finish; |
$sth->finish; |
$a[0]||0; |
$a[0]||0; |
} |
} |
Line 159 print "timee0=".time.br if $debug;
|
Line 168 print "timee0=".time.br if $debug;
|
sub printform |
sub printform |
{ |
{ |
|
|
my $submit=submit(-value=>'Поиск'); |
my $qnumber=(" "x10)."Выводить по ". textfield(-name=>'kvo', |
my $inputstring=textfield(-name=>'sstr', |
|
-default=>param('sstr')||'', |
|
-size=>30, |
|
-maxlength=>50); |
|
my $qnumber="Выводить по".br. textfield(-name=>'kvo', |
|
-default=>param('kvo')||'150', |
-default=>param('kvo')||'150', |
-size=>3, |
-size=>3, |
-maxlength=>5). br."вопросов"; |
-maxlength=>5)." вопросов"; |
|
my $sstr=param('sstr'); |
my @df=keys %searchin; |
my @df=keys %searchin; |
|
my %checked; |
@df=('Question', 'Answer') unless @df; |
@df=('Question', 'Answer') unless @df; |
|
$checked{lc $_}="checked" foreach @df; |
my $fields=checkbox_group('searchin',['Question','Answer','Comments','Authors','Sources'], [@df], |
my $fields=checkbox_group('searchin',['Question','Answer','Comments','Authors','Sources'], [@df], |
'false',\%rusfieldname); |
'false',\%rusfieldname); |
@df=param('type'); |
@df=param('type'); |
@df=('chgk','brain','game','ehruditka','beskrylka') unless @df; |
@df=('chgk','brain','igp','game','ehruditka','beskrylka') unless @df; |
|
$checked{lc $_}="checked" foreach @df; |
my $types=checkbox_group('type',['chgk','brain','game','ehruditka','beskrylka'], [@df], |
my $all=param('all') && param('all') eq 'yes'; |
'false',\%rusfieldname); |
|
my $metod=radio_group(-name=>'metod',-values=>['old','rus'], |
$checked{'all'}=$all?"checked":""; |
-default=>(param('metod')||'rus'), |
$checked{'any'}=$all?"":"checked"; |
-labels=>\%rusfieldname); |
$checked{lc param('metod')}="checked"; |
my $all=radio_group(-name=>'all',-values=>['yes','no'], |
$checked{'russian'}=1 unless $checked{'russian'} || $checked{'old'}; |
-default=>(param('all')||'no'), |
|
-labels=>{'yes'=>'Все','no'=>'Любое'}); |
|
|
|
################################################# |
################################################# |
return start_form(-method=>'get', |
return |
-action=>url, |
<<EOT |
-enctype=> |
<form method="get" enctype="application/x-www-form-urlencoded" |
"application/x-www-form-urlencoded" |
action="/znatoki/cgi-bin/db.cgi"> |
).br. |
<h2>Поиск в базе вопросов</h2> |
table(Tr |
|
( |
<input type="text" name="sstr" value="$sstr" size="30" maxlength="50"> |
td({-valign=>'TOP'},$inputstring.$submit.p."Метод: $metod".p."Слова: $all"), |
<input type="submit" value="Поиск"> $qnumber |
td({-valign=>'TOP'},(' 'x 8).'Поля:'), |
<p> |
td({-valign=>'TOP'},$fields), |
|
td({-valign=>'TOP'},(' 'x 1).'Типы:'), |
<table border="1" cellpadding=4 cellspacing=0> |
td({-valign=>'TOP'},$types), td(" "x5), |
<tr> |
td({-valign=>'TOP'},$qnumber) |
<th align="left" rowspan=3 width="20%"> Вариант поиска: |
) |
</td><td rowspan=2 colspan=2> |
) |
<input type="radio" $checked{'old'} name="metod" value="old"> Простой (старый) |
|
</td><td> |
#$fields. |
<input type="checkbox" $checked{'chgk'} name="type" value="chgk"> "Что? Где? Когда?" |
#$inputstring.$submit.br.$metod.$all |
</td><td><nobr> |
|
<input type="checkbox" $checked{'brain'} name="type" value="brain"> "Брейн-Ринг"</nobr> |
|
</td><td> |
|
<input type="checkbox" $checked{'igp'} name="type" value="igp"> "Интернет" |
|
</td> |
|
</tr><tr> |
|
<td> |
|
<input type="checkbox" $checked{'game'} name="type" value="game"> "Своя игра" |
|
</td><td> |
|
<input type="checkbox" $checked{'ehruditka'} name="type" value="ehruditka"> "Эрудитка" |
|
</td><td> |
|
<input type="checkbox" $checked{'beskrylka'} name="type" value="beskrylka"> "Бескрылка" |
|
</td> |
|
</tr><tr> |
|
<td colspan=5><input type="radio" $checked{'rus'} name="metod" value="rus"> Расширенный (с учетом грамматики, в вопросах всех типов) |
|
</td> |
|
</tr><tr> |
|
<th align="left">Искать: |
|
</td><td colspan=2> |
|
<input type="radio" $checked{'all'} name="all" value="yes">Все слова |
|
</td><td colspan=3> |
|
<input type="radio" $checked{'any'} name="all" value="no">Любое слово |
|
</td> |
|
</tr><tr> |
|
<th align="left">Поля для поиска: |
|
</td><td width="15%"> |
|
<input type="checkbox" name="searchin" value="Question" $checked{'question'}>Вопрос |
|
</td><td width="15%"> |
|
<input type="checkbox" name="searchin" value="Answer" $checked{'answer'}>Ответ<br> |
|
</td><td width="15%"> |
|
<input type="checkbox" name="searchin" value="Comments" $checked{'comments'}>Комментарии<br> |
|
</td><td width="15%"> |
|
<input type="checkbox" name="searchin" value="Authors" $checked{'authors'}>Автор<br> |
|
</td><td width="15%"> |
|
<input type="checkbox" name="searchin" value="Sources" $checked{'sources'}>Источник<br> |
|
</td> |
|
</tr> |
|
</table> |
|
</center> |
|
|
|
EOT |
.endform |
.endform |
.hr |
.hr |
|
|
} |
} |
|
|
sub proxy |
sub proxy |
{ |
{ |
#print "time0=".time.br if $debug; |
|
my ($dbh,$ptext,$allnf)=@_; |
my ($dbh,$ptext,$allnf)=@_; |
|
my $sstr=makeproxysstr($dbh,$ptext,$allnf); |
|
return russearch($dbh,$sstr,0,$allnf); |
|
} |
|
|
|
sub makeproxysstr { |
|
my ($dbh,$ptext)=@_; |
my $text=$$ptext; |
my $text=$$ptext; |
$text=~tr/ёЁ/еЕ/; |
$text=~tr/ёЁ/еЕ/; |
$text=~s/(${RLrl})p(${RLrl})/$1p$2/gom; |
$text=~s/(${RLrl})p(${RLrl})/$1p$2/gom; |
Line 238 sub proxy
|
Line 287 sub proxy
|
|
|
$good{$words[$_]}=0 foreach 16..$#words; |
$good{$words[$_]}=0 foreach 16..$#words; |
|
|
# foreach (@list) |
|
# { |
|
# if ($good{$_}) |
|
# { |
|
# $good{$_}=0; |
|
# $sstr.=" $_"; |
|
# } |
|
# } |
|
$sstr.=" $_" foreach grep {$good{$_}} @list; |
$sstr.=" $_" foreach grep {$good{$_}} @list; |
print "time05=".time.br if $debug; |
|
$$ptext=$sstr; |
$$ptext=$sstr; |
return russearch($dbh,$sstr,0,$allnf); |
return $sstr; |
} |
} |
|
|
|
|
Line 468 sub Search {
|
Line 508 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'}; |
|
|
|
# $ip=$dbh->quote($ip); |
|
# $query= |
|
# "INSERT into queries (query,metod,searchin,ip) |
|
# values (". $dbh->quote($sstr).', '. |
|
# $dbh->quote($metod) . ', ' . |
|
# $dbh->quote(join ' ', grep $searchin{$_}, keys %searchin) . |
|
# ", $ip)"; |
|
#print $query if $printqueries; |
|
# $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 486 sub Search {
|
Line 515 sub Search {
|
} |
} |
elsif ($metod eq 'proxy') |
elsif ($metod eq 'proxy') |
{ |
{ |
# $searchin{'question'}=1; |
|
# $searchin{'answer'}=1; |
|
my @task=proxy($dbh,$s,$allnf); |
my @task=proxy($dbh,$s,$allnf); |
# $$s=$sstr; |
|
return @task |
return @task |
} |
} |
|
|
Line 533 sub Search {
|
Line 559 sub Search {
|
for $i (0 .. $#sar) { |
for $i (0 .. $#sar) { |
$sar[$i] = $dbh->quote("%${sar[$i]}%"); |
$sar[$i] = $dbh->quote("%${sar[$i]}%"); |
} |
} |
|
$_.=' ' foreach (@fields); # Это чтобы последнее слово поля |
|
# не сливалось с первым словом |
|
# следующего поля, R7 |
my($f) = "CONCAT(" . join(',', @fields) . ")"; |
my($f) = "CONCAT(" . join(',', @fields) . ")"; |
if (param('all') eq 'yes') { |
if (param('all') eq 'yes') { |
$sstr = join " AND $f LIKE ", @sar; |
$sstr = join " AND $f LIKE ", @sar; |
Line 685 sub PrintList {
|
Line 713 sub PrintList {
|
sub PrintSearch { |
sub PrintSearch { |
my ($dbh, $sstr, $metod,$was) = @_; |
my ($dbh, $sstr, $metod,$was) = @_; |
my $t=time; |
my $t=time; |
print h2("Поиск в базе вопросов"); |
# print h2("Поиск в базе вопросов"); |
print printform; |
print printform; |
my @allnf; |
my @allnf; |
my @Questions; |
my @Questions; |
Line 776 print "$query" if $printqueries;
|
Line 804 print "$query" if $printqueries;
|
|
|
sub PrintRandom { |
sub PrintRandom { |
my ($dbh, $type, $num, $text) = @_; |
my ($dbh, $type, $num, $text) = @_; |
|
my $razd=param('razd'); |
|
my $answer=$razd?0:1; |
my (@Questions) = &Get12Random($dbh, $type, $num); |
my (@Questions) = &Get12Random($dbh, $type, $num); |
my ($output, $i) = ('', 0); |
my ($output, $i) = ('', 0); |
|
|
Line 790 sub PrintRandom {
|
Line 820 sub PrintRandom {
|
# Passing DB handler, question ID, print answer, question |
# Passing DB handler, question ID, print answer, question |
# number, print title, print text/html |
# number, print title, print text/html |
$output .= |
$output .= |
&PrintQuestion($dbh, $Questions[$i], 1, $i + 1, 0, $text); |
&PrintQuestion($dbh, $Questions[$i], $answer, $i + 1, 0, $text); |
} |
} |
|
unless ($answer ) |
|
{ |
|
$output.=$text?"\n".('-'x 20)."\nОтветы\n~~~~~~\n\n":h2('Ответы'); |
|
for ($i = 0; $i <= $#Questions; $i++) { |
|
$output .= |
|
&PrintQuestion($dbh, $Questions[$i], -1, $i + 1, 0, $text); |
|
} |
|
} |
|
|
return $output; |
return $output; |
} |
} |
|
|
Line 811 sub PrintTournament {
|
Line 850 sub PrintTournament {
|
%Tournament = &GetTournament($dbh, $Id) if ($Id); |
%Tournament = &GetTournament($dbh, $Id) if ($Id); |
|
|
my ($URL) = $Tournament{'URL'}; |
my ($URL) = $Tournament{'URL'}; |
|
$URL=~s/http:\/znatoki\/boris\/reports\//$newsurl/ if url=~/kulichki/; |
|
$URL=~s/\/znatoki\/boris\/reports\//$newsurl/ if url=~/kulichki/;; |
my ($Info) = $Tournament{'Info'}; |
my ($Info) = $Tournament{'Info'}; |
my ($Copyright) = $Tournament{'Copyright'}; |
my ($Copyright) = $Tournament{'Copyright'}; |
my $fname=$Tournament{'FileName'}; |
my $fname=$Tournament{'FileName'}; |
Line 1036 sub PrintField {
|
Line 1077 sub PrintField {
|
$value =~ s/^\s+/<br> /mg; |
$value =~ s/^\s+/<br> /mg; |
$value =~ s/^\|([^\n]*)/<pre>$1<\/pre>/mg; |
$value =~ s/^\|([^\n]*)/<pre>$1<\/pre>/mg; |
$value =~ s/\s+-+\s+/ – /mg; |
$value =~ s/\s+-+\s+/ – /mg; |
|
$value =~ s/(http:\/\/\S+[^\s\)\(\,\.])/<a href="$1">$1<\/a>/g if $header !~ /^Авто/; |
|
# $value =~ s/(http:\/\/(?:\w+.)+[\w\\\~]+(\?[^\s.]+)?)/<a href="$1">$1<\/a>/g if $header !~ /^Авто/; |
# $value =~ s/(\s)"/$1“/mg; |
# $value =~ s/(\s)"/$1“/mg; |
# $value =~ s/^"/“/mg; |
# $value =~ s/^"/“/mg; |
# $value =~ s/"/”/mg; |
# $value =~ s/"/”/mg; |
Line 1055 sub PrintQuestion {
|
Line 1098 sub PrintQuestion {
|
$qnum = $Question{'Number'} |
$qnum = $Question{'Number'} |
if ($qnum == 0); |
if ($qnum == 0); |
if (!$text) { |
if (!$text) { |
$output .= hr({width=>"50%"}); |
$output .= hr({width=>"50%"}) if $answer>=0; |
if ($title) { |
if ($title) { |
my (%Tour) = GetTournament($dbh, $Question{'ParentId'}); |
my (%Tour) = GetTournament($dbh, $Question{'ParentId'}); |
my (%Tournament) = GetTournament($dbh, $Tour{'ParentId'}); |
my (%Tournament) = GetTournament($dbh, $Tour{'ParentId'}); |
Line 1072 sub PrintQuestion {
|
Line 1115 sub PrintQuestion {
|
} |
} |
|
|
|
|
$output.= "<a NAME=\"$qnum\">"; |
$output.= "<a NAME=\"$qnum\">" unless $text; |
|
|
$output .= |
|
&PrintField("Вопрос $qnum", $Question{'Question'}, $text); |
|
|
|
if ($answer==1) { |
if ($answer>=0) {$output .= |
|
&PrintField("Вопрос $qnum", $Question{'Question'}, $text);} |
|
else {$output .="$qnum. "} |
|
if ($answer==1|| $answer==-1) { |
$output .= |
$output .= |
&PrintField("Ответ", $Question{'Answer'}, $text); |
&PrintField("Ответ", $Question{'Answer'}, $text); |
|
|
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.CharId,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); |
|
if (!$text) { |
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)"; |
$Name=~s/ё/[её]/g; |
|
$Surname=~s/ё/[её]/g; |
|
my $sha="(?:$Name\\s+$Surname)|(?:$Surname\\s+$Name)|(?:$firstletter\\.\\s*$Surname)|(?:$Surname\\s+$firstletter\\.)|(?:$Surname)"; |
if ($Nicks) |
if ($Nicks) |
{ |
{ |
$Nicks=~s/^\|//; |
$Nicks=~s/^\|//; |
Line 1108 sub PrintQuestion {
|
Line 1153 sub PrintQuestion {
|
} |
} |
} |
} |
$q=~s/($sha)/a({href=>url."?qofauthor=$AuthorId"},$1)/ei; |
$q=~s/($sha)/a({href=>url."?qofauthor=$AuthorId"},$1)/ei; |
|
unless ($1) |
|
{ |
|
$q=~s/$Name/a({href=>url."?qofauthor=$AuthorId"},$1)/ei; |
|
} |
} |
} |
|
} |
$output .= &PrintField("Автор(ы)", $q, $text); |
$output .= &PrintField("Автор(ы)", $q, $text); |
|
|
} |
} |
Line 1151 EOTT
|
Line 1200 EOTT
|
} |
} |
|
|
|
|
|
|
$output.="</span>" |
$output.="</span>" |
|
|
} |
} |
$output.=br.a({href=> url."?metod=proxy&qid=$Id"}, 'Близкие вопросы').p |
$output=~s/\(pic: ([^\)]*)\)/<p><img src="\/znatoki\/images\/db\/$1"><p>/g unless $text; |
if $answer; |
my $qid=param('tour') ? (param('tour').".$Question{'Number'}" ): ''; |
|
|
|
$output.=br.a({href=> url."?metod=proxy& |
|
qid=$qid"}, 'Близкие вопросы').p |
|
if $answer>0 && !$text && $qid; |
return $output; |
return $output; |
} |
} |
|
|
Line 1319 sub PrintQOfAuthor
|
Line 1373 sub PrintQOfAuthor
|
{ |
{ |
|
|
my ($dbh, $id) = @_; |
my ($dbh, $id) = @_; |
$id=$dbh->quote($id); |
unless ($id=~/^\d+$/) { |
|
$id=$dbh->quote($id); |
|
my $sth = $dbh->prepare("SELECT Id FROM Authors WHERE CharId=$id"); |
|
$sth->execute; |
|
($id)=$sth->fetchrow; |
|
$sth->finish; |
|
} |
|
$id=$dbh->quote($id); |
|
|
my $sth = $dbh->prepare("SELECT Name, Surname FROM Authors WHERE Id=$id"); |
my $sth = $dbh->prepare("SELECT Name, Surname FROM Authors WHERE Id=$id"); |
$sth->execute; |
$sth->execute; |
my ($name,$surname)=$sth->fetchrow; |
my ($name,$surname)=$sth->fetchrow; |
Line 1341 sub PrintQOfAuthor
|
Line 1403 sub PrintQOfAuthor
|
} else { |
} else { |
$suffix = 'я'; |
$suffix = 'я'; |
} |
} |
print h2("Поиск в базе вопросов"); |
# print h2("Поиск в базе вопросов"); |
print printform; |
print printform; |
print p({align=>"center"}, "Автор ".strong("$name $surname. ") |
print p({align=>"center"}, "Автор ".strong("$name $surname. ") |
. " : $hits попадани$suffix."); |
. " : $hits попадани$suffix."); |
Line 1563 sub WriteFile {
|
Line 1625 sub WriteFile {
|
|
|
MAIN: |
MAIN: |
{ |
{ |
|
|
setlocale(LC_CTYPE,'russian'); |
setlocale(LC_CTYPE,'russian'); |
my($i, $tour); |
my($i, $tour); |
my($text) = (param('text')) ? 1 : 0; |
my($text) = (param('text')) ? 1 : 0; |
|
if ($text) { |
|
print header('text/plain'); |
|
} else {print header;} |
|
|
my($dbh) = DBI->connect("DBI:mysql:chgk", "piataev", "") |
my($dbh) = DBI->connect("DBI:mysql:chgk", "piataev", "") |
or do { |
or do { |
print h1("Временные проблемы") . "База данных временно не |
print h1("Временные проблемы") . "База вопросов временно не |
работает. Заходите попозже."; |
работает. Заходите попозже."; |
print &Include_virtual("../dimrub/db/reklama.html"); |
print &Include_virtual("../dimrub/db/reklama.html"); |
print end_html; |
print end_html; |
die "Can't connect to DB chgk\n"; |
die "Can't connect to DB chgk\n"; |
}; |
}; |
|
my $sstr=param('sstr'); |
|
if (param('qid')) { |
|
my $sth; |
|
my $qid=param('qid'); |
|
if ($qid !~ /^[0-9]*$/) { |
|
my ($fname,$t,$n)= split /\./ , $qid; |
|
$n=$t,$t='' unless $n; |
|
if ($n) |
|
{ |
|
$sth = $dbh->prepare( |
|
"SELECT t2.Id FROM Tournaments as t1, |
|
Tournaments as t2 |
|
WHERE t1.FileName = '$fname.txt' |
|
AND t1.Id=t2.ParentId AND t2.Number=$t"); |
|
} |
|
else |
|
{ |
|
$sth = $dbh->prepare("SELECT Id FROM Tournaments |
|
WHERE FileName = '$fname.txt'"); |
|
} |
|
$sth->execute; |
|
$tour = ($sth->fetchrow)[0]; |
|
$sth->finish; |
|
$sth = $dbh->prepare( |
|
"SELECT QuestionId FROM |
|
Questions |
|
WHERE ParentId=$tour AND |
|
Questions.Number=$n"); |
|
$sth->execute; |
|
$qid = ($sth->fetchrow)[0]; |
|
} |
|
my $query="SELECT Question, Answer from Questions where QuestionId=$qid"; |
|
$sth=$dbh->prepare($query); |
|
$sth->execute; |
|
$sstr= join ' ',$sth->fetchrow; |
|
$sth->finish; |
|
$searchin{'Question'}=1; |
|
$searchin{'Answer'}=1; |
|
$sstr=~tr/ёЁ/еЕ/; |
|
$sstr=~s/[^йцукенгшщзхъфывапролджэячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮa-zA-Z0-9]/ /gi; |
|
$proxysstr=$sstr; |
|
$proxysstr=makeproxysstr($dbh,\$proxysstr); |
|
} |
|
|
|
|
if (!param('comp') and !param('sqldump') and !$text) { |
if (!param('comp') and !param('sqldump') and !$text) { |
print header; |
my $title="Результаты поиска на \"". ($proxysstr||$sstr) .'"' |
print start_html(-"title"=>'Database of the questions', |
if ($proxysstr||$sstr); |
|
$title||="База вопросов"; |
|
|
|
print start_html(-"title"=>$title, |
-author=>'dimrub@icomverse.com', |
-author=>'dimrub@icomverse.com', |
-bgcolor=>'#fff0e0', |
-bgcolor=>'#fff0e0', |
-vlink=>'#800020'); |
-vlink=>'#800020'); |
|
print "<style> |
|
td {font-size: x-small; font-family : sans-serif} |
|
th {font-size: x-small; font-family : sans-serif} |
|
</style>\n"; |
|
|
print &Include_virtual("../dimrub/db/reklama.html"); |
print &Include_virtual("../dimrub/db/reklama.html"); |
} |
} |
|
|
|
|
if ($^O =~ /win/i) { |
|
$thislocale = "Russian_Russia.20866"; |
|
} else { |
|
$thislocale = "ru_RU.KOI8-R"; |
|
} |
|
POSIX::setlocale( &POSIX::LC_ALL, $thislocale ); |
|
|
|
if ((uc 'а') ne 'А') {print "Koi8-r locale not installed!\n"}; |
|
|
|
|
|
if ($text) { |
|
print header('text/plain'); |
|
} |
|
|
|
if (param('hideequal')) { |
if (param('hideequal')) { |
my ($sth)= $dbh -> prepare("select first, second FROM equalto"); |
my ($sth)= $dbh -> prepare("select first, second FROM equalto"); |
Line 1672 EOT
|
Line 1779 EOT
|
(time_to_sec(now())-time_to_sec(t) >3600)") |
(time_to_sec(now())-time_to_sec(t) >3600)") |
} |
} |
elsif (param('qid')) { |
elsif (param('qid')) { |
my $qid=param('qid'); |
|
my $query="SELECT Question, Answer from Questions where QuestionId=$qid"; |
|
print $query if $printqueries; |
|
my $sth=$dbh->prepare($query); |
|
$sth->execute; |
|
my $sstr= join ' ',$sth->fetchrow; |
|
$sth->finish; |
|
$searchin{'Question'}=1; |
|
$searchin{'Answer'}=1; |
|
$sstr=~tr/ёЁ/еЕ/; |
|
$sstr=~s/[^йцукенгшщзхъфывапролджэячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮa-zA-Z0-9]/ /gi; |
|
# print &PrintQuestion($dbh,$qid, 1, '!'); |
|
&PrintSearch($dbh, $sstr, 'proxy'); |
&PrintSearch($dbh, $sstr, 'proxy'); |
} |
} |
elsif (param('getfile')){ |
elsif (param('getfile')){ |
Line 1743 $sstr=~s/[^йцукенгшщзхъфывапролджэячсмит
|
Line 1838 $sstr=~s/[^йцукенгшщзхъфывапролджэячсмит
|
} |
} |
if (!$text) { |
if (!$text) { |
print &Include_virtual("../dimrub/db/footer.html"); |
print &Include_virtual("../dimrub/db/footer.html"); |
|
print p."<center><font size=-2>Обновление: ".&Include_virtual("../dimrub/db/date")."</center></font>"; |
print <<EEE |
print <<EEE |
<SCRIPT LANGUAGE="JavaScript"> |
<SCRIPT LANGUAGE="JavaScript"> |
function toggle(e) { |
function toggle(e) { |
Line 1755 function toggle(e) {
|
Line 1851 function toggle(e) {
|
</SCRIPT> |
</SCRIPT> |
EEE |
EEE |
; |
; |
print end_html; |
# print end_html; |
} |
} |
$dbh->disconnect; |
$dbh->disconnect; |
} |
} |