version 1.25, 2002/11/09 01:47:23
|
version 1.39, 2004/01/11 00:14:32
|
Line 35 Dmitry Rubinstein
|
Line 35 Dmitry Rubinstein
|
use vars qw($opt_i); |
use vars qw($opt_i); |
|
|
use Getopt::Std; |
use Getopt::Std; |
|
my $unsortedname="../dump/unsorted"; |
getopts('i'); |
getopts('i'); |
|
#open STDERR, ">errors"; |
my $Interactive=$opt_i || 0; |
my $Interactive=$opt_i || 0; |
|
my $DUMPDIR = $ENV{DUMPDIR} || "../dump"; |
|
|
my (%RevMonths) = |
my (%RevMonths) = |
('Jan', '1', 'Feb', '2', 'Mar', '3', 'Apr', '4', 'May', '5', 'Jun', '6', |
('Jan', '1', 'Feb', '2', 'Mar', '3', 'Apr', '4', 'May', '5', 'Jun', '6', |
Line 58 my ($sth);
|
Line 59 my ($sth);
|
|
|
use DBI; |
use DBI; |
use strict; |
use strict; |
|
my $isunsorted=0; |
sub UpdateParents { |
sub UpdateParents { |
my ($dbh, $ParentId, $all_qnum) = @_; |
my ($dbh, $ParentId, $all_qnum,$CreatedAt) = @_; |
if ($ParentId) { |
if ($ParentId) { |
my ($sth1) = $dbh->prepare("SELECT QuestionsNum, ParentId |
my ($sth1) = $dbh->prepare("SELECT QuestionsNum, ParentId, CreatedAt |
FROM Tournaments WHERE Id = $ParentId"); |
FROM Tournaments WHERE Id = $ParentId"); |
$sth1->execute; |
$sth1->execute; |
my ($q, $p) = ($sth1->fetchrow)[0, 1]; |
my ($q, $p,$c) = ($sth1->fetchrow)[0, 1, 2]; |
|
$c=$CreatedAt if $CreatedAt && ($CreatedAt gt $c); |
|
my $qc=$dbh->quote($c); |
$dbh->do("UPDATE Tournaments SET |
$dbh->do("UPDATE Tournaments SET |
QuestionsNum=$q + $all_qnum |
QuestionsNum=$q + $all_qnum, CreatedAt=$qc |
WHERE Id = $ParentId"); |
WHERE Id = $ParentId"); |
&UpdateParents($dbh, $p, $all_qnum); |
&UpdateParents($dbh, $p, $all_qnum,$c); |
} |
} |
} |
} |
|
|
|
|
sub getField { |
sub getField { |
my($desc, $dbh) = @_; |
my($desc, $dbh) = @_; |
my($key); |
my($key); |
Line 89 sub getField {
|
Line 93 sub getField {
|
$value =~ s/-(.*)-/-$month-/; |
$value =~ s/-(.*)-/-$month-/; |
$value =~ s/-00*$/-01/; |
$value =~ s/-00*$/-01/; |
} |
} |
|
if ($key eq 'Автор') {$value=~s/\.$//;} |
$value = $dbh->quote($value); |
$value = $dbh->quote($value); |
return ($key, $value); |
return ($key, $value); |
} |
} |
Line 143 sub SelectGroup {
|
Line 148 sub SelectGroup {
|
} else { |
} else { |
# Теперь, если файла нет в дереве турниров, никаких вопросов не |
# Теперь, если файла нет в дереве турниров, никаких вопросов не |
# задаётся, а вместо этого он добавляется в группу 9999 |
# задаётся, а вместо этого он добавляется в группу 9999 |
$ParentId = 9999; |
$ParentId = 9999; |
print STDERR "INSERT INTO Tournaments |
my $tempsource=$source; |
(Title, Type, ParentId, FileName) |
my $temptname=$TourName; |
VALUES ($TourName, 'Ч', $ParentId, |
$tempsource=~s/^\'(.*)\'$/$1/; |
$source)"; |
$temptname=~s/^\'(.*)\'$/$1/; |
|
print UNSORTED "$tempsource".((12 -length($source))x' ')."\t$temptname\n"; |
|
$isunsorted=1; |
$sth = $dbh->prepare("INSERT INTO Tournaments |
$sth = $dbh->prepare("INSERT INTO Tournaments |
(Title, Type, ParentId, FileName) |
(Title, Type, ParentId, FileName) |
VALUES ($TourName, 'Ч', $ParentId, |
VALUES ($TourName, 'Ч', $ParentId, |
Line 271 MAIN:
|
Line 278 MAIN:
|
my($dbh) = DBI->connect("DBI:mysql:chgk", "piataev", "") |
my($dbh) = DBI->connect("DBI:mysql:chgk", "piataev", "") |
or die "Can't connect to DB chgk\n"; |
or die "Can't connect to DB chgk\n"; |
my @sources; |
my @sources; |
|
open UNSORTED, ">$unsortedname"; |
while ($source = shift) { |
while ($source = shift) { |
push @sources,glob($source); |
push @sources,glob($source); |
} |
} |
Line 281 MAIN:
|
Line 289 MAIN:
|
my($tournum, $qnum, $all_qnum) = (0, 0, 0); |
my($tournum, $qnum, $all_qnum) = (0, 0, 0); |
my (@d) = (localtime((stat($source))[9]))[5,4,3]; |
my (@d) = (localtime((stat($source))[9]))[5,4,3]; |
$d[1]++; |
$d[1]++; |
|
$d[1]=sprintf("%02d",$d[1]); |
|
$d[2]=sprintf("%02d",$d[2]); |
$d[0]+=1900; |
$d[0]+=1900; |
my ($CreatedAt) = $dbh->quote( join('-', @d)); |
my $UnquotedCreated=join('-', @d); |
|
my ($CreatedAt) = $dbh->quote($UnquotedCreated); |
|
|
open INFD, $source |
open INFD, $source |
or die "Can't open input file: $!\n"; |
or die "Can't open input file: $!\n"; |
|
|
$source =~ s/^.*\/([^\/]*)$/$1/; |
$source =~ s/^.*\/([^\/]*)$/$1/; |
|
my $unquotedsource=$source; |
|
$unquotedsource=~s/\.txt\s*$//; |
$source = $dbh->quote($source); |
$source = $dbh->quote($source); |
print STDERR "Файл: $source, дата: $CreatedAt "; |
print STDERR "Файл: $source, дата: $CreatedAt "; |
my %TourDefaults=('CreatedAt'=>$CreatedAt); |
my %TourDefaults=('CreatedAt'=>$CreatedAt); |
Line 316 MAIN:
|
Line 329 MAIN:
|
} |
} |
if ($key =~ /Тур/) { |
if ($key =~ /Тур/) { |
if ($TourId) { |
if ($TourId) { |
$dbh->do("UPDATE Tournaments SET QuestionsNum=$qnum |
|
|
$dbh->do("UPDATE Tournaments SET QuestionsNum=$qnum |
WHERE Id=$TourId"); |
WHERE Id=$TourId"); |
} |
} |
$qnum = 0; |
$qnum = 0; |
$TourNum++; |
$TourNum++; |
|
$TourDefaults{'FileName'}=$dbh->quote( |
|
"$unquotedsource.$TourNum" |
|
); |
$TourId=CreateTour($dbh,$value,$TournamentId,$TourNum, |
$TourId=CreateTour($dbh,$value,$TournamentId,$TourNum, |
\%TourDefaults); |
\%TourDefaults); |
%QuestionDefaults=%QuestionGlobalDefaults; |
%QuestionDefaults=%QuestionGlobalDefaults; |
Line 355 MAIN:
|
Line 372 MAIN:
|
next; |
next; |
} |
} |
|
|
|
|
|
if ($key =~ /Зач[её]т/) { |
|
&UpdateQuestion($dbh, $QuestionId, "PassCriteria", $value); |
|
next; |
|
} |
|
|
|
|
|
|
if ($key =~ /Комментари/) { |
if ($key =~ /Комментари/) { |
&UpdateQuestion($dbh, $QuestionId, "Comments", $value); |
&UpdateQuestion($dbh, $QuestionId, "Comments", $value); |
next; |
next; |
} |
} |
|
|
|
if ($key =~ /Вид/) { |
|
if ($value =~ /^\s*Д\s*$/) {#Questions Д are really ЧД... |
|
$value = "ЧД"; |
|
} |
|
&UpdateQuestion($dbh, $QuestionId, "Type", $value); |
|
next; |
|
} |
|
|
|
|
|
|
my @Fields = grep { $key =~ /$_/ } keys %QuestionFields; |
my @Fields = grep { $key =~ /$_/ } keys %QuestionFields; |
|
|
Line 403 MAIN:
|
Line 438 MAIN:
|
WHERE Id=$TourId"); |
WHERE Id=$TourId"); |
$dbh->do("UPDATE Tournaments SET QuestionsNum=$all_qnum |
$dbh->do("UPDATE Tournaments SET QuestionsNum=$all_qnum |
WHERE Id=$TournamentId"); |
WHERE Id=$TournamentId"); |
&UpdateParents($dbh, $ParentId, $all_qnum); |
&UpdateParents($dbh, $ParentId, $all_qnum,$UnquotedCreated); |
print STDERR "Всего вопросов: $all_qnum \n"; |
print STDERR "Всего вопросов: $all_qnum \n"; |
} |
} |
|
close UNSORTED; |
|
unlink $unsortedname unless $isunsorted; |
$dbh->disconnect; |
$dbh->disconnect; |
} |
} |