--- db/prgsrc/db.cgi 2010/01/24 20:30:05 1.158
+++ db/prgsrc/db.cgi 2016/06/13 16:32:07 1.164
@@ -11,6 +11,8 @@ use URI::Escape;
my $proxyredirect=1;
use POSIX qw(locale_h);
use locale;
+my $maxQuestions = 3000;
+
use vars qw($opt_z);
use Getopt::Std;
#my ($dbuser,$dbname,$dbpass,$dbhost);
@@ -71,11 +73,6 @@ $outputkvo=100 if $outputkvo>100;
if (param('debug')) {$debug=1; $printqueries=1}
*STDERR=*STDOUT if $debug;
-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";
- Redirect ($u);
- exit;
-}
if ($proxyredirect && $metod=~/proxy/ && $url !~ /localhost/ && $url !~ /bilbo/ && $url !~ /zaba/) {
my $u="http://chgk.zaba.ru/cgi-bin/db.cgi?$qs";
@@ -233,7 +230,7 @@ sub SelectQuestions {
# my $where=join " OR ",@$q;
my $where=join ',',@$q;
$where &&= "QuestionId IN (".(join ',',$where).")";
- $where||=1;
+ $where||=0;
$where="($where) AND Questions.ParentId=t1.Id AND t1.ParentId=t2.Id"
if $WithTour;
@@ -779,7 +776,7 @@ sub Search {
my $query;
$query="SELECT QuestionId FROM Questions
- WHERE ($f LIKE $sstr) AND (".&makewhere.") ORDER BY QuestionId";
+ WHERE ($f LIKE $sstr) AND (".&makewhere.") ORDER BY QuestionId LIMIT $maxQuestions";
$sth = $dbh->prepare($query)
@@ -824,10 +821,11 @@ sub NoCase {
sub PrintList {
my ($dbh,$Questions,$shablon,$was)=@_;
+ my $total_found = $totalfound||$#$Questions+1;
my $Output;
my $first=param('first') ||1;
$first=$first-($first-1)%$outputkvo;
- my $fkvo=param('fkvo')||($#$Questions+1);
+ my $fkvo=param('fkvo')||$total_found;
my $last=$first+$outputkvo-1;
$last=$fkvo if $fkvo<$last;
my($f,$l);
@@ -852,10 +850,10 @@ sub PrintList {
else {$nav.=' 'x15;}
my ($fprint,$lprint);
- my $llprint=$fkvo- ($fkvo)%$outputkvo+1; #
+ my $llprint=$fkvo- ($fkvo-1)%$outputkvo; #
if ($fkvo<=$outputkvo*7)
{ $fprint=1;
- $lprint=$llprint;
+ $lprint=$llprint+($fkvo)%$outputkvo;
}
elsif ($first>$outputkvo*3 && $fkvo-$first>$outputkvo*3)
{
@@ -868,8 +866,8 @@ sub PrintList {
}
else
{
- $lprint=$llprint;
- $fprint=$lprint-$outputkvo*6
+ $lprint=$fkvo;
+ $fprint=$lprint-($lprint-1)%$outputkvo-$outputkvo*6;
}
# my $fprint=($first>$outputkvo*3) ? $first-$outputkvo*3 : 1;
@@ -881,7 +879,6 @@ sub PrintList {
# }
-
for($f=$fprint; $f<=$lprint; $f+=$outputkvo)
{
# next if $first-$f>$outputkvo*3;
@@ -893,13 +890,21 @@ sub PrintList {
}
if ($lprint+$outputkvo<$fkvo)
{
+ my $reminder = ($llprint-1)%$outputkvo;
+ my $newlprint = $llprint-$reminder;
+# $newlprint +=$outputkvo if $reminder!=$outputkvo-1;
$nav.=
(" "x4).
a({href=>($url."?".$qs."\&first=".($first+$outputkvo))},">").(" "x4).
- a({href=>$url."?".$qs."\&first=$llprint"},">>").(" "x4)
+ a({href=>$url."?".$qs."\&first=$newlprint"},">>").(" "x4)
}
$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 $sth=SelectQuestions($dbh,\@q,1);
my $qq;
@@ -910,8 +915,8 @@ sub PrintList {
$q{$Q[$_]{'QuestionId'}}=$Q[$_];
}
- for (my $i = $first; $i <= $last; $i++) {
- my $q=$q{$$Questions[$i-1]};
+ for my $i(0..$#q) {
+ my $q=$q{$q[$i]};
my $output;
$output = &PrintQuestion($dbh, $q, 1, 0, 1,$text,1 );
# if (param('metod') && (param('metod') eq 'rus' || param('metod') eq 'proxy'))
@@ -1006,6 +1011,8 @@ sub PrintSearch {
$suffix = 'я';
}
+ $hits = 'очень много' if ($hits==$maxQuestions);
+
$Output.= p({align=>"center"}, "Результаты поиска на " . strong($sstr)
. " : $hits попадани$suffix.");
@@ -1092,6 +1099,7 @@ sub PrintTournament {
@Tours = &GetTours($dbh, $Id);
$list='';
my $textid;
+ my $isGroup;
if ($Id) {
for ($Tournament{'Type'}) {
/Г/ && do {
@@ -1102,6 +1110,7 @@ sub PrintTournament {
$Tournament{'PlayedAt2'}:'') .
p . "\n";
+ $isGroup=1;
last;
};
/Ч/ && do {
@@ -1223,8 +1232,19 @@ sub PrintTournament {
$output .= p($Info);
}
+
+
$output.=p("XML");
-
+
+ if ($textid=$fname)
+ {
+ $textid=~s/\.txt//;
+ }
+ if (!$isGroup) {
+ $output .= center("[".
+ a({href=>"/v2/tour/$textid/print", target=>'_blank'}, 'версия для печати')."] [".
+ a({href=>"/v2/tour/$textid/fb2", target=>'_blank'}, 'fb2')."]"."");
+ }
return $output;
}
@@ -1340,8 +1360,13 @@ sub PrintTour {
$bottom .=
"[" . 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) {
$bottom .=
"[" . a({href=>tourhref("$fname.".($n-1),0)},
@@ -1350,6 +1375,7 @@ sub PrintTour {
"[" . a({href=>tourhref("$fname.".($n-1),1)},
"предыдущий тур с ответами") . "] " . br."\n";
}
+
if (&IsTour($dbh, $Tour{'ParentId'}, $n + 1)) {
$bottom .=
"[" . a({href=>tourhref("$fname.".($n+1),0)},
@@ -2233,7 +2259,7 @@ div.razdatka_header {font-style:italic;}
my ($mime_type) = $text ? "plain" : "html";
print F <