Diff for /db/prgsrc/updatedb.pl between versions 1.32 and 1.39

version 1.32, 2003/01/09 19:48:44 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";  #open STDERR, ">errors";
 my $Interactive=$opt_i || 0;  my $Interactive=$opt_i || 0;
Line 60  use DBI; Line 61  use DBI;
 use strict;  use strict;
 my $isunsorted=0;  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 146  sub SelectGroup { Line 151  sub SelectGroup {
                 $ParentId = 9999;                  $ParentId = 9999;
                 my $tempsource=$source;                  my $tempsource=$source;
                 my $temptname=$TourName;                  my $temptname=$TourName;
                 $tempsource=~s/^\'(.*)\'$/$1;                  $tempsource=~s/^\'(.*)\'$/$1/;
                 $temptname=~s/^\'(.*)\'$/$1;                  $temptname=~s/^\'(.*)\'$/$1/;
                 print UNSORTED "$tempsource".((12 -length($source))x' ')."\t$temptn\n";                  print UNSORTED "$tempsource".((12 -length($source))x' ')."\t$temptname\n";
                 $isunsorted=1;                  $isunsorted=1;
                 $sth = $dbh->prepare("INSERT INTO Tournaments                  $sth = $dbh->prepare("INSERT INTO Tournaments
                               (Title, Type, ParentId, FileName)                                 (Title, Type, ParentId, FileName) 
Line 273  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, ">$DUMPDIR/unsorted";      open UNSORTED, ">$unsortedname";
     while ($source = shift) {      while ($source = shift) {
        push @sources,glob($source);         push @sources,glob($source);
     }      }
Line 284  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 319  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 358  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 406  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;      close UNSORTED;
     unlink "unsorted" unless $isunsorted;      unlink $unsortedname unless $isunsorted;
     $dbh->disconnect;      $dbh->disconnect;
 }  }

Removed from v.1.32  
changed lines
  Added in v.1.39


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