File:  [Local Repository] / db / prgsrc / writefile.pl
Revision 1.1: download - view: text, annotated - select for diffs - revision graph
Sat Jan 12 05:00:30 2002 UTC (22 years, 4 months ago) by roma7
Branches: MAIN
CVS tags: HEAD
Adding writefile.pl

    1: use DBI;
    2: @months=('000','Jan',"Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct",
    3:           "Nov","Dec");
    4: 
    5: open WARN ,"warn";
    6: $fname=shift;
    7: $fname=~s/\.txt$//;
    8: 
    9:     my($dbh) = DBI->connect("DBI:mysql:chgk", "piataev", "")
   10: 	or die "Can't connect to DB chgk\n";
   11: 
   12:    if (WriteFile($fname)==-1) {print "File?";}
   13: 
   14: 
   15: sub WriteFile {
   16:   my ($fname) = @_;
   17:   my $query= "SELECT Id, Title, Copyright, Info, URL, 
   18:                       Editors, EnteredBy, PlayedAt, CreatedAt 
   19:                      from Tournaments where FileName=".$dbh->quote("$fname.txt");
   20:   $sth=$dbh->prepare($query);
   21: 
   22:   $sth->execute;
   23:   ($Id, $Title, $Copyright, $Info, $URL, 
   24:    $Editors, $EnteredBy, $PlayedAt, $CreatedAt)=
   25:       $sth->fetchrow;
   26:   return -1 unless $Id;
   27:   open (OUT, ">new/$fname.txt");
   28:   print OUT "Чемпионат:\n$Title\n\n";
   29:   my $date=$PlayedAt;
   30:   ($year,$month,$day)=split /-/, $date;
   31: #  $month=0,$date=0 if $year && $month==1 && $day==1;
   32:   $pdate=sprintf("%02d-%3s-%4d",$day,$months[$month],$year);
   33: 
   34:   print OUT "Дата:\n$pdate\n\n" if $date;
   35: 
   36:   print OUT "URL:\n$URL\n\n" if $URL;
   37: 
   38:   print OUT "Инфо:\n$Info\n\n" if $Info;
   39: 
   40:   print OUT "Копирайт:\n$Copyright\n\n" if $Copyright;
   41: 
   42:   print OUT "Редактор:\n$Editors\n\n" if $Editors;
   43: 
   44: 
   45:   $query= "SELECT Id, Title, Copyright, Editors from Tournaments where ParentId=$Id order by Id";
   46:   $sth=$dbh->prepare($query);
   47:   $sth->execute;
   48:   while (($tourid,$tourtitle,$cright,$editor)=$sth->fetchrow,$tourid)
   49:   {
   50: #    $text{$tourid}="Тур:\n$tourtitle\n\n";
   51:     $query= "SELECT * from Questions where ParentId=$tourid order by QuestionId";
   52:     $sth1=$dbh->prepare($query);
   53:     $sth1->execute;
   54:     push(@tours,$tourid);
   55:     $tourtitle{$tourid}=$tourtitle;
   56:     $copyright{$tourid}=$cright;
   57:     $editor{$tourid}=$editor;
   58:     $vid='';
   59:     $author='';
   60:     $eqauthor=1;
   61:     $qnumber=0;
   62:     while (@arr=$sth1->fetchrow, $arr[0])
   63:     {
   64: 	my($i, $name) = 0;
   65: 	$qnumber++;
   66: 	foreach $name (@{$sth1->{NAME}}) {
   67: 	        $arr[$i]=~s/^(.*?)\s*$/$1/;
   68: 		$Question{$tourid}[$qnumber]{$name} = $arr[$i++];
   69: 	}
   70: 	if ($vid)
   71:         {
   72:           if ($vid ne $Question{$tourid}[$qnumber]{'Type'}) {print WARN "Warning: Different types for Tournament $tourid\n"}
   73:         } else 
   74:         {
   75:             $vid=$Question{$tourid}[$qnumber]{'Type'};
   76:         } 
   77: 
   78: 	if ($author)
   79:         {
   80:           if ($author ne $Question{$tourid}[$qnumber]{'Authors'})  
   81:           {
   82:              $eqauthor=0;
   83:           }
   84:         } else 
   85:         {
   86:             $author=$Question{$tourid}[$qnumber]{'Authors'};
   87:             $eqauthor=0 unless $author;
   88:         } 
   89:     }
   90:     $vid{$tourid}=$vid;
   91:     $qnumber{$tourid}=$qnumber;
   92:     $author{$tourid}=$eqauthor ? $author : '';
   93:   }
   94: 
   95: 
   96:   $vid='';
   97:   $eqvid=1;
   98:   $eqauthor=1;
   99:   foreach (@tours)
  100:   {
  101:      $vid||=$vid{$_};
  102:      if ($vid{$_} ne $vid)
  103:      {
  104:         $eqvid=0;
  105:      }
  106:      $author||=$author{$_};
  107:      if (!$author{$_} || ($author{$_} ne $author))
  108:      {
  109:         $eqauthor=0;
  110:      }
  111:   }
  112:   
  113:   print OUT "Вид:\n$vid\n\n" if $eqvid;
  114:   print OUT "Автор:\n$author\n\n" if $eqauthor;
  115: 
  116:   foreach $tour(@tours)
  117:   {
  118:      print OUT "Тур:\n$tourtitle{$tour}\n\n";
  119:      print OUT "Вид:\n$vid{$tour}\n\n" if  !$eqvid;
  120:      print OUT "Копирайт:\n$copyright{$tour}\n\n" if $copyright{$tour} && ($copyright{$tour} ne $Copyright);
  121:      print OUT "Редактор:\n$editor{$tour}\n\n" if $editor{$tour} && ($editor{$tour} ne $Editors);
  122:      $tourauthor=0;
  123:      if (!$eqauthor && $author{$tour})
  124:      { 
  125:        print OUT "Автор:\n$author{$tour}\n\n";
  126:        $tourauthor=1;
  127:      }
  128:      foreach $q(1..$qnumber{$tour})
  129:      {
  130:         print OUT "Вопрос $q:\n".$Question{$tour}[$q]{'Question'}."\n\n";
  131: 	print OUT  "Ответ:\n".$Question{$tour}[$q]{'Answer'}."\n\n";
  132: 	print OUT  "Автор:\n".$Question{$tour}[$q]{'Authors'}."\n\n" 
  133:                if !$tourauthor && !$eqauthor && $Question{$tour}[$q]{'Authors'};
  134: 	print OUT  "Комментарий:\n".$Question{$tour}[$q]{'Comments'}."\n\n" 
  135:                if $Question{$tour}[$q]{'Comments'};
  136: 	print OUT "Источник:\n".$Question{$tour}[$q]{'Sources'}."\n\n" 
  137:                if $Question{$tour}[$q]{'Sources'};
  138: 	print OUT "Рейтинг:\n".$Question{$tour}[$q]{'Rating'}."\n\n" 
  139:                if $Question{$tour}[$q]{'Rating'};
  140: 
  141:      }
  142:   }
  143: 
  144:   close OUT;
  145: 
  146: 
  147: 
  148: }

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