Diff for /db/prgsrc/db.cgi between versions 1.58 and 1.62

version 1.58, 2002/01/13 00:32:12 version 1.62, 2002/01/25 20:47:29
Line 43  my ($SRCPATH) = "$PWD/../dimrub/src"; Line 43  my ($SRCPATH) = "$PWD/../dimrub/src";
 my ($ZIP) = "/home/piataev/bin/zip";  my ($ZIP) = "/home/piataev/bin/zip";
 my $DUMPFILE = "/tmp/chgkdump";  my $DUMPFILE = "/tmp/chgkdump";
 my ($SENDMAIL) = "/usr/sbin/sendmail";  my ($SENDMAIL) = "/usr/sbin/sendmail";
   my ($TMPDIR) = "/tmp";
 my ($TMSECS) = 30*24*60*60;  my ($TMSECS) = 30*24*60*60;
 my (%RevMonths) =  my (%RevMonths) =
         ('Jan', '0', 'Feb', '1', 'Mar', '2', 'Apr', '3', 'May', '4', 'Jun', '5',          ('Jan', '0', 'Feb', '1', 'Mar', '2', 'Apr', '3', 'May', '4', 'Jun', '5',
Line 51  my (%RevMonths) = Line 52  my (%RevMonths) =
          'Янв', '0', 'Фев', 1, 'Мар', 2, 'Апр', 3, 'Май', '4',           'Янв', '0', 'Фев', 1, 'Мар', 2, 'Апр', 3, 'Май', '4',
          'Июн', '5', 'Июл', 6, 'Авг', '7', 'Сен', '8',           'Июн', '5', 'Июл', 6, 'Авг', '7', 'Сен', '8',
          'Окт', '9', 'Ноя', '19', 'Дек', '11');           'Окт', '9', 'Ноя', '19', 'Дек', '11');
   my @months=('000','Jan',"Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct",
             "Nov","Dec");
   
   
 # Determine whether the given time is within 2 months from now.  # Determine whether the given time is within 2 months from now.
 sub NewEnough {  sub NewEnough {
Line 157  sub printform Line 161  sub printform
   my $inputstring=textfield(-name=>'sstr',    my $inputstring=textfield(-name=>'sstr',
                          -default=>param('sstr')||'',                           -default=>param('sstr')||'',
                          -size=>30,                           -size=>30,
                          -maxlength=>30);                           -maxlength=>50);
   my $qnumber="Выводить по".br. textfield(-name=>'kvo',    my $qnumber="Выводить по".br. textfield(-name=>'kvo',
                          -default=>param('kvo')||'150',                           -default=>param('kvo')||'150',
                          -size=>3,                           -size=>3,
Line 868  sub PrintTournament { Line 872  sub PrintTournament {
                   "вопросы + ответы") . "]")                    "вопросы + ответы") . "]")
                                 );                                  );
                 } else {                  } else {
                         $list .= dd(a({href=>url . "?tour=$textid&comp=1"},                          $list .= dd(#a({href=>url . "?tour=$textid&comp=1"},
                                 img({src=>'/icons/compressed.gif', alt=>'[ZIP]', border=>1}))                                  #img({src=>'/icons/compressed.gif', alt=>'[ZIP]', border=>1})). " " . 
                                 . " " . img({src=>$imgsrc, alt=>$alt})                                  img({src=>$imgsrc, alt=>$alt})
                                 . " " . a({href=>url . "?tour=$textid&answer=0"},                                  . " " . a({href=>url . "?tour=$textid&answer=0"},
                                 $Tournament{'Title'}. " ".                                  $Tournament{'Title'}. " ".
                                           $Tournament{'PlayedAt'}) . $qnum);                                            $Tournament{'PlayedAt'}) . $qnum);
Line 1000  sub PrintTour { Line 1004  sub PrintTour {
 sub PrintField {  sub PrintField {
         my ($header, $value, $text) = @_;          my ($header, $value, $text) = @_;
         if ($text) {          if ($text) {
             $value =~ s/<[\/\w]*>//sg;              $value =~ s/<[\/\w]*?>//sg;
         } else {          } else {
             $value =~ s/^\s+/<br>&nbsp;&nbsp;&nbsp;&nbsp;/mg;              $value =~ s/^\s+/<br>&nbsp;&nbsp;&nbsp;&nbsp;/mg;
             $value =~ s/^\|([^\n]*)/<pre>$1<\/pre>/mg;              $value =~ s/^\|([^\n]*)/<pre>$1<\/pre>/mg;
               $value =~ s/\s+-+\s+/&nbsp;&#0150; /mg;
   #           $value =~ s/(\s)"/$1&#147;/mg;
   #           $value =~ s/^"/&#147;/mg;
   #           $value =~ s/"/&#148;/mg;
         }          }
   
   
         return $text ? "$header:\n$value\n\n" :          return $text ? "$header:\n$value\n\n" :
                 strong("$header: ") . $value . p . "\n";                  strong("$header: ") . $value . p . "\n";
 }  }
Line 1176  sub PrintArchive { Line 1185  sub PrintArchive {
                 }                  }
                 return @list;                  return @list;
         }          }
         return "$SRCPATH/$Tournament{'FileName'} ";  #       return "$SRCPATH/$Tournament{'FileName'} ";
           return "$TMPDIR/$Tournament{'FileName'} ";
 }  }
   
 sub PrintAll {  sub PrintAll {
Line 1343  a({href=>url."?authors=surname"},"фамили Line 1353  a({href=>url."?authors=surname"},"фамили
 }  }
   
   
   sub WriteFile {
     my ($dbh,$fname) = @_;
     $fname=~s/\.txt$//;
     $fname=~s/.*\/(\w+)/$1/;
     my $query= "SELECT Id, Title, Copyright, Info, URL, 
                         Editors, EnteredBy, PlayedAt, CreatedAt 
                        from Tournaments where FileName=".$dbh->quote("$fname.txt");
     my $sth=$dbh->prepare($query);
     my (%Question,%editor,%qnumber,%copyright,%author,%vid,%tourtitle);
     $sth->execute;
     my ($Id, $Title, $Copyright, $Info, $URL, 
      $Editors, $EnteredBy, $PlayedAt, $CreatedAt)=
         $sth->fetchrow;
     return -1 unless $Id;
     open (OUT, ">$TMPDIR/$fname.txt");
     print OUT "Чемпионат:\n$Title\n\n";
     my $date=$PlayedAt;
     my ($year,$month,$day)=split /-/, $date;
   #  $month=0,$date=0 if $year && $month==1 && $day==1;
     my $pdate=sprintf("%02d-%3s-%4d",$day,$months[$month],$year);
   
     print OUT "Дата:\n$pdate\n\n" if $date;
   
     print OUT "URL:\n$URL\n\n" if $URL;
   
     print OUT "Инфо:\n$Info\n\n" if $Info;
   
     print OUT "Копирайт:\n$Copyright\n\n" if $Copyright;
   
     print OUT "Редактор:\n$Editors\n\n" if $Editors;
   
   
     $query= "SELECT Id, Title, Copyright, Editors from Tournaments where ParentId=$Id order by Id";
     $sth=$dbh->prepare($query);
     $sth->execute;
     my ($tourid,$tourtitle,$cright,$editor,@tours,$vid,$author,$tourauthor);
   
   
     while (($tourid,$tourtitle,$cright,$editor)=$sth->fetchrow,$tourid)
     {
   #    $text{$tourid}="Тур:\n$tourtitle\n\n";
       $query= "SELECT * from Questions where ParentId=$tourid order by QuestionId";
       my $sth1=$dbh->prepare($query);
       $sth1->execute;
       push(@tours,$tourid);
       $tourtitle{$tourid}=$tourtitle;
       $copyright{$tourid}=$cright;
       $editor{$tourid}=$editor;
       $vid='';
       my $author='';
       my $eqauthor=1;
       my $qnumber=0;
       my @arr;
       while ( @arr=$sth1->fetchrow, $arr[0])
       {
           my($i, $name) = 0;
           $qnumber++;
           foreach $name (@{$sth1->{NAME}}) {
                   $arr[$i]=~s/^(.*?)\s*$/$1/;
                   $Question{$tourid}[$qnumber]{$name} = $arr[$i++];
           }
           if ($vid)
           {
             if ($vid ne $Question{$tourid}[$qnumber]{'Type'}) {print STDERR "Warning: Different types for Tournament $tourid\n"}
           } else 
           {
               $vid=$Question{$tourid}[$qnumber]{'Type'};
           } 
   
           if ($author)
           {
             if ($author ne $Question{$tourid}[$qnumber]{'Authors'})  
             {
                $eqauthor=0;
             }
           } else 
           {
               $author=$Question{$tourid}[$qnumber]{'Authors'};
               $eqauthor=0 unless $author;
           } 
       }
       $vid{$tourid}=$vid;
       $qnumber{$tourid}=$qnumber;
       $author{$tourid}=$eqauthor ? $author : '';
     }
   
   
     $vid='';
     my $eqvid=1;
     my $eqauthor=1;
     foreach (@tours)
     {
        $vid||=$vid{$_};
        if ($vid{$_} ne $vid)
        {
           $eqvid=0;
        }
        $author||=$author{$_};
        if (!$author{$_} || ($author{$_} ne $author))
        {
           $eqauthor=0;
        }
     }
     
     print OUT "Вид:\n$vid\n\n" if $eqvid;
     print OUT "Автор:\n$author\n\n" if $eqauthor;
   
     foreach my $tour(@tours)
     {
        print OUT "Тур:\n$tourtitle{$tour}\n\n";
        print OUT "Вид:\n$vid{$tour}\n\n" if  !$eqvid;
        print OUT "Копирайт:\n$copyright{$tour}\n\n" if $copyright{$tour} && ($copyright{$tour} ne $Copyright);
        print OUT "Редактор:\n$editor{$tour}\n\n" if $editor{$tour} && ($editor{$tour} ne $Editors);
        $tourauthor=0;
        if (!$eqauthor && $author{$tour})
        { 
          print OUT "Автор:\n$author{$tour}\n\n";
          $tourauthor=1;
        }
        foreach my $q(1..$qnumber{$tour})
        {
           print OUT "Вопрос $q:\n".$Question{$tour}[$q]{'Question'}."\n\n";
           print OUT  "Ответ:\n".$Question{$tour}[$q]{'Answer'}."\n\n";
           print OUT  "Автор:\n".$Question{$tour}[$q]{'Authors'}."\n\n" 
                  if !$tourauthor && !$eqauthor && $Question{$tour}[$q]{'Authors'};
           print OUT  "Комментарий:\n".$Question{$tour}[$q]{'Comments'}."\n\n" 
                  if $Question{$tour}[$q]{'Comments'};
           print OUT "Источник:\n".$Question{$tour}[$q]{'Sources'}."\n\n" 
                  if $Question{$tour}[$q]{'Sources'};
           print OUT "Рейтинг:\n".$Question{$tour}[$q]{'Rating'}."\n\n" 
                  if $Question{$tour}[$q]{'Rating'};
   
        }
     }
   
     close OUT;
   
   
   
   }
   
   
 MAIN:  MAIN:
 {  {
Line 1459  $sstr=~s/[^йцукенгшщзхъфывапролджэячсмит Line 1610  $sstr=~s/[^йцукенгшщзхъфывапролджэячсмит
                          );                           );
             $tour = (param('tour')) ? param('tour') : 0;              $tour = (param('tour')) ? param('tour') : 0;
             my (@files) = &PrintArchive($dbh, $tour);              my (@files) = &PrintArchive($dbh, $tour);
               WriteFile($dbh,$_) foreach @files;
             open F, "$ZIP -j - $SRCPATH/COPYRIGHT @files |";              open F, "$ZIP -j - $SRCPATH/COPYRIGHT @files |";
             print (<F>);              print (<F>);
             close F;              close F;

Removed from v.1.58  
changed lines
  Added in v.1.62


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>