--- db/prgsrc/db.cgi 2003/06/04 23:18:46 1.120 +++ db/prgsrc/db.cgi 2003/06/23 02:09:35 1.121 @@ -10,6 +10,7 @@ use vars qw($opt_z); use Getopt::Std; getopts('z'); $opt_z||=param("makehtml"); +my $timestamp="_timestamp.tmp"; my $paramtour; my $withanswers=param('answer')||param('answers'); open STDERR, ">/var/tmp/errors1"; @@ -24,15 +25,16 @@ $reklama="../reklama.html" if $opt_z; $footer="../footer.html" if $opt_z; $datefooter="../date" if $opt_z; my $HTMLDIR="/znatoki/dimrub/db/baza/"; -$HTMLDIR="/baza/"; +$HTMLDIR="/files/"; my $realHTMLDIR; if ($^O =~ /win/i) { $realHTMLDIR="/html/znatoki/baza/"; } else { - $realHTMLDIR="/home/piataev/public_html/dimrub/db/baza/"; + $realHTMLDIR="/home/piataev/public_html/dimrub/db/files/"; } my $usehtml=$opt_z||0; +$usehtml=1; my $usewas=0; my $cashednumber=500; my $outputnumber=10; @@ -126,6 +128,12 @@ sub NewEnough { sub Redirect { my ($destination) = @_; +print header.< +EndOfHTML +; +=head + print <here< EndOfHTML ; +=cut } @@ -1198,8 +1207,11 @@ sub PrintTour { my $n=$Tour{'Number'}; if ($answer == 0) { + my $nn=".$n"; + $nn="" if ($n==1 && !&IsTour($dbh, $Tour{'ParentId'}, $n + 1)); + $bottom .= - "[" . a({href=>tourhref("$fname.$n",1)}, + "[" . a({href=>tourhref("$fname$nn",1)}, "ответы") . "] " . br; } if ($n>1) { @@ -1826,7 +1838,20 @@ MAIN: POSIX::setlocale( &POSIX::LC_ALL, $thislocale ); my($i, $tour); my($text) = (param('text')) ? 1 : 0; - if (param('qid') && (param('qid')=~/^\d+$/)) { + $tour = (param('tour')) ? param('tour') : 0; + my $texttour=$tour; + my ($sth,$dbh); + $dbh = DBI->connect("DBI:mysql:chgk", "piataev", "") + or do { + print h1("Временные проблемы") . "База вопросов временно не + работает. Заходите попозже."; + print &Include_virtual("$reklama") if $url!~/localhost/; + print end_html; + die "Can't connect to DB chgk\n"; + }; + + + if (param('qid') && (param('qid')=~/^\d+$/) || $tour && $tour=~/^\d+$/) { my $destination='http://db.chgk.info/search.html'; # print header (-'Content-Type' => 'text/html', # -'Location:'=> 'http:\\db.chgk.info'); @@ -1834,17 +1859,56 @@ MAIN: exit } + if ($tour && (!param('answers')||!param('answers')<=1)) + { + my $n=param('tour'); + $n=~s/.txt$//; + my $gr=($n=~/^[A-Z]/) || (-e "$realHTMLDIR$n.html"); + my $destination=tourhref($tour,param('answers')||0,$gr); + my $d=$destination; + $d=~s/$HTMLDIR/$realHTMLDIR/; +# print header.$destination; + print header."$d|".(-e "$realHTMLDIR$n.html"); + if (-e $d) { + Redirect($destination); + exit + } + $d=~s/\.\d+//; + $destination=~s/\.\d+//; +print br.br.$d; + if (-e $d) { + Redirect($destination); + exit + } + + } + + if ($tour !~ /^[0-9]*$/) { + if ($tour=~/\./) + { + my ($fname,$n)= split /\./ , $tour; + + $sth = $dbh->prepare( + "SELECT t2.Id FROM Tournaments as t1, + Tournaments as t2 + WHERE (t1.FileName = '$fname.txt' OR t1.FileName='$fname') + AND t1.Id=t2.ParentId AND t2.Number=$n"); + } + else + { + $sth = $dbh->prepare("SELECT Id FROM Tournaments + WHERE FileName = '$tour.txt' OR + FileName = '$tour'"); + } + $sth->execute; + $tour = ($sth->fetchrow)[0]; + $sth->finish; + } + + if ($text && !param ('comp')) { print header('text/plain'); } elsif (!param('comp')) {print header;} - my($dbh) = DBI->connect("DBI:mysql:chgk", "piataev", "") - or do { - print h1("Временные проблемы") . "База вопросов временно не - работает. Заходите попозже."; - print &Include_virtual("$reklama") if $url!~/localhost/; - print end_html; - die "Can't connect to DB chgk\n"; - }; my $sstr=param('sstr'); $opt_z||=param("makehtml"); if (param('qid')) { @@ -1935,30 +1999,6 @@ th {font-size: x-small; font-family : sa } $sth->finish; } - $tour = (param('tour')) ? param('tour') : 0; - my $sth; - my $texttour=$tour; - if ($tour !~ /^[0-9]*$/) { - if ($tour=~/\./) - { - my ($fname,$n)= split /\./ , $tour; - - $sth = $dbh->prepare( - "SELECT t2.Id FROM Tournaments as t1, - Tournaments as t2 - WHERE (t1.FileName = '$fname.txt' OR t1.FileName='$fname') - AND t1.Id=t2.ParentId AND t2.Number=$n"); - } - else - { - $sth = $dbh->prepare("SELECT Id FROM Tournaments - WHERE FileName = '$tour.txt' OR - FileName = '$tour'"); - } - $sth->execute; - $tour = ($sth->fetchrow)[0]; - $sth->finish; - } if (param('rand')) { @@ -2059,7 +2099,7 @@ EOT else { $opt_z=1; $url="http://db.chgk.info/cgi-bin/db.cgi"; - open TS, "timestamp"; + open TS, $timestamp; my $d=$dbh->quote(); close TS; open FF, ">${realHTMLDIR}index.html" or die "ERROR! - ${HTMLDIR}index.html\n";