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>