version 1.151, 2008/11/29 08:51:29
|
version 1.161, 2010/09/24 09:05:48
|
Line 71 $outputkvo=100 if $outputkvo>100;
|
Line 71 $outputkvo=100 if $outputkvo>100;
|
|
|
if (param('debug')) {$debug=1; $printqueries=1} |
if (param('debug')) {$debug=1; $printqueries=1} |
*STDERR=*STDOUT if $debug; |
*STDERR=*STDOUT if $debug; |
if ($url !~ /db\.chgk\.info/ && $url !~ /localhost/ && $url !~ /bilbo/ && $url !~ /zaba/ && $url !~ /question\.chgk\.info/ ) { |
if ($url!~ /\/\/db\// && $url !~ /db\.chgk\.info/ && $url !~ /localhost/ && $url !~ /bilbo/ && $url !~ /zaba/ && $url !~ /question\.chgk\.info/ ) { |
my $u="http://db.chgk.info/cgi-bin/db.cgi?$qs"; |
my $u="http://db.chgk.info/cgi-bin/db.cgi?$qs"; |
Redirect ($u); |
Redirect ($u); |
exit; |
exit; |
Line 214 sub fetchquestion {
|
Line 214 sub fetchquestion {
|
if ($WithTour) { |
if ($WithTour) { |
($$q{'QuestionId'}, $$q{'Question'},$$q{'Answer'},$$q{'PassCriteria'},$$q{'Comments'},$$q{'Authors'},$$q{'Sources'}, |
($$q{'QuestionId'}, $$q{'Question'},$$q{'Answer'},$$q{'PassCriteria'},$$q{'Comments'},$$q{'Authors'},$$q{'Sources'}, |
$$q{'Number'}, |
$$q{'Number'}, |
$$q{'Title'}, $$q{'TourTitle'}, $$q{'FileName'},$$q{'PlayedAt'},$$q{'TourNumber'}) = |
$$q{'Title'}, $$q{'TourTitle'}, $$q{'FileName'},$$q{'PlayedAt'},$$q{'TourNumber'},$$q{'PlayedAt2'}) = |
$sth->fetchrow; |
$sth->fetchrow; |
} else { |
} else { |
($$q{'QuestionId'}, $$q{'Question'},$$q{'Answer'},$$q{'PassCriteria'},$$q{'Comments'},$$q{'Authors'},$$q{'Sources'}, |
($$q{'QuestionId'}, $$q{'Question'},$$q{'Answer'},$$q{'PassCriteria'},$$q{'Comments'},$$q{'Authors'},$$q{'Sources'}, |
Line 233 sub SelectQuestions {
|
Line 233 sub SelectQuestions {
|
# my $where=join " OR ",@$q; |
# my $where=join " OR ",@$q; |
my $where=join ',',@$q; |
my $where=join ',',@$q; |
$where &&= "QuestionId IN (".(join ',',$where).")"; |
$where &&= "QuestionId IN (".(join ',',$where).")"; |
$where||=1; |
$where||=0; |
$where="($where) AND Questions.ParentId=t1.Id AND t1.ParentId=t2.Id" |
$where="($where) AND Questions.ParentId=t1.Id AND t1.ParentId=t2.Id" |
if $WithTour; |
if $WithTour; |
|
|
Line 241 sub SelectQuestions {
|
Line 241 sub SelectQuestions {
|
if ($WithTour) { |
if ($WithTour) { |
$query="SELECT QuestionId, Questions.Question, Answer, PassCriteria, Comments, Authors, Sources, |
$query="SELECT QuestionId, Questions.Question, Answer, PassCriteria, Comments, Authors, Sources, |
Questions.Number |
Questions.Number |
, t2.Title, t1.Title, t2.FileName, t2.PlayedAt,t1.Number |
, t2.Title, t1.Title, t2.FileName, t2.PlayedAt,t1.Number,t2.PlayedAt2 |
from Questions,Tournaments as t1, Tournaments as t2 |
from Questions,Tournaments as t1, Tournaments as t2 |
WHERE $where"; |
WHERE $where"; |
} else { |
} else { |
Line 385 sub printform
|
Line 385 sub printform
|
return |
return |
<<EOT |
<<EOT |
<form method="get" enctype="application/x-www-form-urlencoded" |
<form method="get" enctype="application/x-www-form-urlencoded" |
action="/znatoki/cgi-bin/db.cgi"> |
action="/cgi-bin/db.cgi"> |
<h2>Поиск в базе вопросов</h2> |
<h2>Поиск в базе вопросов</h2> |
|
|
<input type="text" name="sstr" value="$sstr" size="30" maxlength="50"> |
<input type="text" name="sstr" value="$sstr" size="30" maxlength="50"> |
Line 824 sub NoCase {
|
Line 824 sub NoCase {
|
|
|
sub PrintList { |
sub PrintList { |
my ($dbh,$Questions,$shablon,$was)=@_; |
my ($dbh,$Questions,$shablon,$was)=@_; |
|
my $total_found = $totalfound||$#$Questions+1; |
my $Output; |
my $Output; |
my $first=param('first') ||1; |
my $first=param('first') ||1; |
$first=$first-($first-1)%$outputkvo; |
$first=$first-($first-1)%$outputkvo; |
my $fkvo=param('fkvo')||($#$Questions+1); |
my $fkvo=param('fkvo')||$total_found; |
my $last=$first+$outputkvo-1; |
my $last=$first+$outputkvo-1; |
$last=$fkvo if $fkvo<$last; |
$last=$fkvo if $fkvo<$last; |
my($f,$l); |
my($f,$l); |
Line 899 sub PrintList {
|
Line 900 sub PrintList {
|
a({href=>$url."?".$qs."\&first=$llprint"},">>").(" "x4) |
a({href=>$url."?".$qs."\&first=$llprint"},">>").(" "x4) |
} |
} |
$Output.= "$nav".br."\n"; |
$Output.= "$nav".br."\n"; |
my @q=@$Questions[$first-1..$last-1]; |
my @q; |
|
if ($totalfound) { |
|
@q = @$Questions; |
|
} else { |
|
@q=@$Questions[$first-1..$last-1]; |
|
} |
my %q=(); |
my %q=(); |
my $sth=SelectQuestions($dbh,\@q,1); |
my $sth=SelectQuestions($dbh,\@q,1); |
my $qq; |
my $qq; |
Line 910 sub PrintList {
|
Line 916 sub PrintList {
|
$q{$Q[$_]{'QuestionId'}}=$Q[$_]; |
$q{$Q[$_]{'QuestionId'}}=$Q[$_]; |
} |
} |
|
|
for (my $i = $first; $i <= $last; $i++) { |
for my $i(0..$#q) { |
my $q=$q{$$Questions[$i-1]}; |
my $q=$q{$q[$i]}; |
my $output; |
my $output; |
$output = &PrintQuestion($dbh, $q, 1, 0, 1,$text,1 ); |
$output = &PrintQuestion($dbh, $q, 1, 0, 1,$text,1 ); |
# if (param('metod') && (param('metod') eq 'rus' || param('metod') eq 'proxy')) |
# if (param('metod') && (param('metod') eq 'rus' || param('metod') eq 'proxy')) |
Line 1092 sub PrintTournament {
|
Line 1098 sub PrintTournament {
|
@Tours = &GetTours($dbh, $Id); |
@Tours = &GetTours($dbh, $Id); |
$list=''; |
$list=''; |
my $textid; |
my $textid; |
|
my $isGroup; |
if ($Id) { |
if ($Id) { |
for ($Tournament{'Type'}) { |
for ($Tournament{'Type'}) { |
/Г/ && do { |
/Г/ && do { |
$output .= h2({align=>"center"}, |
$output .= h2({align=>"center"}, |
"Группа: $Tournament{'Title'} ", |
"Группа: $Tournament{'Title'} ", |
$Tournament{'PlayedAt'}||'') . p . "\n"; |
$Tournament{'PlayedAt'}||'') . |
|
($Tournament{'PlayedAt2'}?' – '. |
|
$Tournament{'PlayedAt2'}:'') . |
|
|
|
p . "\n"; |
|
$isGroup=1; |
last; |
last; |
}; |
}; |
/Ч/ && do { |
/Ч/ && do { |
Line 1109 sub PrintTournament {
|
Line 1121 sub PrintTournament {
|
$title .= " $Tournament{'PlayedAt'}"; |
$title .= " $Tournament{'PlayedAt'}"; |
} |
} |
|
|
|
if ($Tournament{'PlayedAt2'}) { |
|
$title .= ' – '.$Tournament{'PlayedAt2'}; |
|
} |
|
|
$output .= h2({align=>"center"}, |
$output .= h2({align=>"center"}, |
"$title") . p . "\n"; |
"$title") . p . "\n"; |
$output.=&PrintEditor(\%Tournament); |
$output.=&PrintEditor(\%Tournament); |
Line 1175 sub PrintTournament {
|
Line 1191 sub PrintTournament {
|
if ($SingleTour or ($Tournament{'Type'} =~ /Т/)) { |
if ($SingleTour or ($Tournament{'Type'} =~ /Т/)) { |
$list .= dd(img({src=>$imgsrc, alt=>$alt}) |
$list .= dd(img({src=>$imgsrc, alt=>$alt}) |
. " " . $Tournament{'Title'} . " " . |
. " " . $Tournament{'Title'} . " " . |
($Tournament{'PlayedAt'}||"") . $qnum) . |
($Tournament{'PlayedAt'}||"") . |
|
($Tournament{'PlayedAt2'}?' – '.$Tournament{'PlayedAt2'}:"") . |
|
$qnum) . |
dl( |
dl( |
dd("[" |
dd("[" |
. a({href=>tourhref($textid,0)}, |
. a({href=>tourhref($textid,0)}, |
Line 1191 sub PrintTournament {
|
Line 1209 sub PrintTournament {
|
img({src=>$imgsrc, alt=>$alt}) |
img({src=>$imgsrc, alt=>$alt}) |
. " " . a({href=>tourhref($textid,0,1)}, |
. " " . a({href=>tourhref($textid,0,1)}, |
$Tournament{'Title'}. " ". |
$Tournament{'Title'}. " ". |
($Tournament{'PlayedAt'}||'')) . $qnum); |
($Tournament{'PlayedAt'}||'')) . |
|
($Tournament{'PlayedAt2'}?' &ndash '. $Tournament{'PlayedAt2'}:''). $qnum); |
} |
} |
} |
} |
$output .= dl($list); |
$output .= dl($list); |
Line 1212 sub PrintTournament {
|
Line 1231 sub PrintTournament {
|
$output .= p($Info); |
$output .= p($Info); |
} |
} |
|
|
|
|
|
|
$output.=p("<a href='/dbxml.php?tour=".param('tour')."'>XML</a>"); |
$output.=p("<a href='/dbxml.php?tour=".param('tour')."'>XML</a>"); |
|
|
|
if ($textid=$fname) |
|
{ |
|
$textid=~s/\.txt//; |
|
} |
|
if (!$isGroup) { |
|
$output .= center("<font size='-1'>[". |
|
a({href=>"/v2/tour/$textid/print", target=>'_blank'}, 'версия для печати')."] [". |
|
a({href=>"/v2/tour/$textid/fb2", target=>'_blank'}, 'fb2')."]"."</font>"); |
|
} |
|
|
return $output; |
return $output; |
} |
} |
Line 1284 sub PrintTour {
|
Line 1314 sub PrintTour {
|
|
|
$output .= h2({align=>"center"}, $Tournament{"Title"}, |
$output .= h2({align=>"center"}, $Tournament{"Title"}, |
$Tournament{'PlayedAt'}||'', |
$Tournament{'PlayedAt'}||'', |
|
$Tournament{'PlayedAt2'}?' – '.$Tournament{'PlayedAt2'}:'', |
"<br>\n", $Tour{"Title"} . |
"<br>\n", $Tour{"Title"} . |
" ($qnum вопрос$suffix)\n") . p; |
" ($qnum вопрос$suffix)\n") . p; |
$output .=&PrintEditor(\%Tour); |
$output .=&PrintEditor(\%Tour); |
Line 1328 sub PrintTour {
|
Line 1359 sub PrintTour {
|
|
|
$bottom .= |
$bottom .= |
"[" . a({href=>tourhref("$fname$nn",1)}, |
"[" . a({href=>tourhref("$fname$nn",1)}, |
"ответы") . "] " . br."\n"; |
"ответы") . "] " |
} |
} |
|
$bottom .= "[".a({href=>"/v2/tour/$fname/print", target=>'_blank'}, 'версия для печати')."] [". |
|
a({href=>"/v2/tour/$fname/fb2/", target=>'_blank'}, 'fb2')."]".br; |
|
|
|
# $bottom .= "[".a({href=>'/v2/print/'.$fname.'.'.$Tour{'Number'}, target=>'_blank'}, 'версия для печати')."]".br; |
|
|
if ($n>1) { |
if ($n>1) { |
$bottom .= |
$bottom .= |
"[" . a({href=>tourhref("$fname.".($n-1),0)}, |
"[" . a({href=>tourhref("$fname.".($n-1),0)}, |
Line 1338 sub PrintTour {
|
Line 1374 sub PrintTour {
|
"[" . a({href=>tourhref("$fname.".($n-1),1)}, |
"[" . a({href=>tourhref("$fname.".($n-1),1)}, |
"предыдущий тур с ответами") . "] " . br."\n"; |
"предыдущий тур с ответами") . "] " . br."\n"; |
} |
} |
|
|
if (&IsTour($dbh, $Tour{'ParentId'}, $n + 1)) { |
if (&IsTour($dbh, $Tour{'ParentId'}, $n + 1)) { |
$bottom .= |
$bottom .= |
"[" . a({href=>tourhref("$fname.".($n+1),0)}, |
"[" . a({href=>tourhref("$fname.".($n+1),0)}, |
Line 1377 sub PrintField {
|
Line 1414 sub PrintField {
|
if $value !~ /^\|/; |
if $value !~ /^\|/; |
$value =~ s/^\|([^\n]*)/<pre>$1<\/pre>/mg; |
$value =~ s/^\|([^\n]*)/<pre>$1<\/pre>/mg; |
|
|
$value =~ s/(http:\/\/\S+[^\s\)\(\,\.])/a({href=>escapeUrl($1)},$1)/egm if $header !~ /^Авто/;#!!! |
$value =~ s/(http:\/\/\S+[^\s\)\(\,\.\]])/a({href=>escapeUrl($1)},$1)/egm if $header !~ /^Авто/;#!!! |
|
|
|
$value =~ s/\.\.\.\]/!!!ZAKR!!!/g; |
|
$value =~ s/пропущено\]/!!!PROP!!!/g; |
|
$value =~ s/пропущены\]/!!!PROP2!!!/g; |
|
$value =~ s/\[Раздаточный материал:(.*?)\]\s*\n/<div class='razdatka'><div class='razdatka_header'>Раздаточный материал<\/div> $1<\/div>\n$2/sm; |
|
$value =~ s/<раздатка>(.*?)<\/раздатка>/<div class='razdatka'><div class='razdatka_header'>Раздаточный материал<\/div> $1<\/div>\n/sm; |
|
$value =~ s/!!!ZAKR!!!/\.\.\.\]/g; |
|
$value =~ s/!!!PROP!!!/пропущено\]/g; |
|
$value =~ s/!!!PROP2!!!/пропущены\]/g; |
|
|
|
|
# $value =~ s/(http:\/\/\S+[^\s\)\(\,\.])/make/eg if $header !~ /^Авто/;#!!! |
# $value =~ s/(http:\/\/\S+[^\s\)\(\,\.])/make/eg if $header !~ /^Авто/;#!!! |
Line 1413 sub PrintQuestion {
|
Line 1459 sub PrintQuestion {
|
$Question{'FileName'}=$Tournament{'FileName'}; |
$Question{'FileName'}=$Tournament{'FileName'}; |
$Question{'Title'}=$Tournament{'Title'}; |
$Question{'Title'}=$Tournament{'Title'}; |
$Question{'PlayedAt'}=$Tournament{'PlayedAt'}; |
$Question{'PlayedAt'}=$Tournament{'PlayedAt'}; |
|
$Question{'PlayedAt2'}=$Tournament{'PlayedAt2'}; |
$Question{'TourNumber'}=$Tour{'Number'}; |
$Question{'TourNumber'}=$Tour{'Number'}; |
$Question{'TourTitle'}=$Tour{'Title'}; |
$Question{'TourTitle'}=$Tour{'Title'}; |
} |
} |
Line 1428 sub PrintQuestion {
|
Line 1475 sub PrintQuestion {
|
$titles .= |
$titles .= |
dd(img({src=>"/icons/folder.open.gif"}) . " " . |
dd(img({src=>"/icons/folder.open.gif"}) . " " . |
a({href=>tourhref($fname,0,1)}, |
a({href=>tourhref($fname,0,1)}, |
$Question{'Title'}, $Question{'PlayedAt'}||'')); |
$Question{'Title'}, $Question{'PlayedAt'}||'', |
|
$Question{'PlayedAt2'}?' – '.$Question{'PlayedAt2'}:'')); |
$titles .= |
$titles .= |
dl(dd(img({src=>"/icons/folder.open.gif"}) . " " . |
dl(dd(img({src=>"/icons/folder.open.gif"}) . " " . |
a({href=>tourhref("$fname.$Question{'TourNumber'}#$qnum",1)}, |
a({href=>tourhref("$fname.$Question{'TourNumber'}#$qnum",1)}, |
Line 1535 EOTT
|
Line 1583 EOTT
|
$output.="</span>" |
$output.="</span>" |
|
|
} |
} |
$output=~s/\(pic: ([^\)]*)\)/<p><img src="\/znatoki\/images\/db\/$1"><p>/g unless $text; |
$output=~s/\(pic: ([^\)]*)\)/<p><img src="\/znatoki\/images\/db\/$1"><\/p>/g unless $text; |
|
$output=~s/\(aud: ([^\)]*)\)/<embed type="application\/x-shockwave-flash" src="http:\/\/www.google.com\/reader\/ui\/3247397568-audio-player.swf?audioUrl=\/znatoki\/sounds\/db\/$1" allowscriptaccess="never" width="400" height="27" quality="best" bgcolor="#ff0000" wmode="window" flashvars="playerMode=embedded" \/>/g unless $text; |
|
|
$output=~s/⌡/\ï/g; |
$output=~s/⌡/\ï/g; |
$output=~s/⌠/\Ï/g; |
$output=~s/⌠/\Ï/g; |
|
|
Line 1681 sub PrintAll {
|
Line 1731 sub PrintAll {
|
|
|
$output .= dd(img({src=>"/icons/folder.gif", alt=>"[*]"}) . |
$output .= dd(img({src=>"/icons/folder.gif", alt=>"[*]"}) . |
" " . a({href=>tourhref($textid,0,!$SingleTour)}, |
" " . a({href=>tourhref($textid,0,!$SingleTour)}, |
$Tournament{'Title'}) ." " . ($Tournament{'PlayedAt'}||'') . " $New"); |
$Tournament{'Title'}) ." " . ($Tournament{'PlayedAt'}||'') . |
|
($Tournament{'PlayedAt2'}?' – '.$Tournament{'PlayedAt2'}:'') . |
|
" $New"); |
} |
} |
if ($Id == 0 or $Tournament{'Type'} =~ /Г/ or $Tournament{'Type'} eq '') { |
if ($Id == 0 or $Tournament{'Type'} =~ /Г/ or $Tournament{'Type'} eq '') { |
for ($i = 0; $i <= $#Tours; $i++) { |
for ($i = 0; $i <= $#Tours; $i++) { |
Line 1726 sub PrintDates {
|
Line 1778 sub PrintDates {
|
else {$textid=$Tournament{'Id'}}; |
else {$textid=$Tournament{'Id'}}; |
$list .= dd(img({src=>"/icons/folder.gif", alt=>"[*]"}) . |
$list .= dd(img({src=>"/icons/folder.gif", alt=>"[*]"}) . |
" " . a({href=>tourhref($textid,0,1)}, |
" " . a({href=>tourhref($textid,0,1)}, |
$Tournament{'Title'}, $Tournament{'PlayedAt'}||'')); |
$Tournament{'Title'}, $Tournament{'PlayedAt'}||'', |
|
$Tournament{'PlayedAt2'}?' – '.$Tournament{'PlayedAt2'}:'')); |
} |
} |
$sth->finish; |
$sth->finish; |
$output .= dl($list); |
$output .= dl($list); |
Line 1843 sub WriteFile {
|
Line 1896 sub WriteFile {
|
$fname=~s/.*\/(\w+)/$1/; |
$fname=~s/.*\/(\w+)/$1/; |
|
|
my $query= "SELECT Id, Title, Copyright, Info, URL, |
my $query= "SELECT Id, Title, Copyright, Info, URL, |
Editors, EnteredBy, PlayedAt, CreatedAt |
Editors, EnteredBy, PlayedAt, CreatedAt, PlayedAt2 |
from Tournaments where FileName= |
from Tournaments where FileName= |
'$fname' OR FileName=".$dbh->quote("$fname.txt"); |
'$fname' OR FileName=".$dbh->quote("$fname.txt"); |
my $sth=$dbh->prepare($query); |
my $sth=$dbh->prepare($query); |
my (%Question,%editor,%qnumber,%copyright,%author,%vid,%tourtitle); |
my (%Question,%editor,%qnumber,%copyright,%author,%vid,%tourtitle); |
$sth->execute; |
$sth->execute; |
my ($Id, $Title, $Copyright, $Info, $URL, |
my ($Id, $Title, $Copyright, $Info, $URL, |
$Editors, $EnteredBy, $PlayedAt, $CreatedAt)= |
$Editors, $EnteredBy, $PlayedAt, $CreatedAt, $PlayedAt2)= |
$sth->fetchrow; |
$sth->fetchrow; |
return -1 unless $Id; |
return -1 unless $Id; |
open (OUT, ">$TMPDIR/$fname.txt") || print STDERR "Error in $fname.txt\n"; |
open (OUT, ">$TMPDIR/$fname.txt") || print STDERR "Error in $fname.txt\n"; |
Line 1859 sub WriteFile {
|
Line 1912 sub WriteFile {
|
my ($year,$month,$day)=split /-/, $date; |
my ($year,$month,$day)=split /-/, $date; |
# $month=0,$date=0 if $year && $month==1 && $day==1; |
# $month=0,$date=0 if $year && $month==1 && $day==1; |
my $pdate=sprintf("%02d-%3s-%4d",$day,$months[$month],$year); |
my $pdate=sprintf("%02d-%3s-%4d",$day,$months[$month],$year); |
|
if ($PlayedAt2) { |
|
my ($year,$month,$day)=split /-/, $date; |
|
$pdate .= sprintf(" - %02d-%3s-%4d",$day,$months[$month],$year); |
|
} |
|
|
print OUT "Дата:\n$pdate\n\n" if $date; |
print OUT "Дата:\n$pdate\n\n" if $date; |
|
|
Line 2148 MAIN:
|
Line 2205 MAIN:
|
$globaloutput.="<style> |
$globaloutput.="<style> |
td {font-size: x-small; font-family : sans-serif} |
td {font-size: x-small; font-family : sans-serif} |
th {font-size: x-small; font-family : sans-serif} |
th {font-size: x-small; font-family : sans-serif} |
|
div.razdatka { |
|
background-color:#EEEEFF; |
|
padding:4px; |
|
border:1px solid black; |
|
} |
|
|
|
div.razdatka_header {font-style:italic;} |
|
|
</style>\n"; |
</style>\n"; |
|
|
$globaloutput.=&Include_virtual("$reklama")||''; |
$globaloutput.=&Include_virtual("$reklama")||''; |