--- db/prgsrc/db.cgi 2003/02/21 19:39:46 1.91 +++ db/prgsrc/db.cgi 2003/02/22 01:40:28 1.92 @@ -8,6 +8,7 @@ use POSIX qw(locale_h); use locale; open STDERR, ">/var/tmp/errors1"; my $newsurl='http://news.chgk.info/'; +my $cashednumber=500; my ($proxyptext,$proxysstr); my $printqueries=0; my %forbidden=(); @@ -633,7 +634,9 @@ sub PrintList { my $sstr=param('sstr')||''; $qs=~s/sstr=[^\&]+/sstr=$sstr/; $qs=~s/\&was=[^\&]+//; - $qs.="&was=$was"||''; + $qs.="&was=$was" if $was; + my $fkvo=param('fkvo')||$#$Questions; + $qs.="&fkvo=$fkvo" if $was; if ($first>$kvo*3+1) { $nav.= @@ -645,12 +648,12 @@ sub PrintList { else {$nav.=' 'x15;} my ($fprint,$lprint); - my $llprint=$#$Questions- ($#$Questions+1)%$kvo+2; - if ($#$Questions+1<=$kvo*7) + my $llprint=$fkvo- ($fkvo+1)%$kvo+2; + if ($fkvo+1<=$kvo*7) { $fprint=1; $lprint=$llprint; } - elsif ($first>$kvo*3 && $#$Questions+1-$first>$kvo*3) + elsif ($first>$kvo*3 && $fkvo+1-$first>$kvo*3) { $fprint=$first-$kvo*3; $lprint=$first+$kvo*3; @@ -679,12 +682,12 @@ sub PrintList { { # next if $first-$f>$kvo*3; $l=$f+$kvo-1; - $l=$#$Questions+1 if $l>$#$Questions+1; + $l=$#$Questions+1 if $l>$fkvo+1; if ($f==$first) {$nav.="[$f-$l] ";} else { $nav.= "[".a({href=>(url."?".$qs."\&first=$f")},"$f-$l")."] ";} } - if ($lprint+$kvo<$#$Questions) + if ($lprint+$kvo<$fkvo) { $nav.= (" "x4). @@ -717,7 +720,8 @@ sub PrintSearch { print printform; my @allnf; my @Questions; - if ($was) + $was=0 if $metod eq 'proxy'; + if ($was && ($metod ne 'proxy')) { my $sth=$dbh->prepare ("select sstr,questions,allnf from lastqueries where id=".param('was')); $sth->execute; @@ -726,10 +730,11 @@ sub PrintSearch { @Questions=unpack 'L*',$q; @allnf=unpack 'L*',$nf; $sth->finish; - } else + } + if (!$was || ($metod eq 'proxy') || (param('first')+param('kvo')>$cashednumber)) { @Questions=&Search($dbh, \$sstr,$metod,$all,\@allnf); - my $tmp=$dbh->quote(pack("L*",@Questions)); + my $tmp=$dbh->quote(pack("L*",@Questions[0..$cashednumber])); my $qsstr=$dbh->quote($sstr); my $nf=$dbh->quote(pack("L*", @allnf)); my $ss=200; @@ -772,7 +777,7 @@ print "$query" if $printqueries; } - + $hits=param("fkvo")||$hits; if ($hits =~ /1.$/ || $hits =~ /[5-90]$/) { $suffix = 'Ê'; @@ -1773,13 +1778,13 @@ EOT &PrintQOfAuthor($dbh,param('qofauthor')); } elsif (param('sstr')||param('was')) { - &PrintSearch($dbh, param('sstr'), param('metod'),param('was')); + &PrintSearch($dbh, $sstr||' ', param('metod')||'',param('was')); $dbh->do("delete from lastqueries where (TO_DAYS(NOW()) - TO_DAYS(t) >= 2) OR (time_to_sec(now())-time_to_sec(t) >3600)") } elsif (param('qid')) { - &PrintSearch($dbh, $sstr, 'proxy'); + &PrintSearch($dbh, $sstr||'', 'proxy'); } elsif (param('getfile')){ print &writefile