Annotation of register/prgsrc/addclub.pl, revision 1.2

1.1       boris       1: #!/usr/bin/perl
                      2: 
                      3: =pod
                      4: 
                      5: =head1 NAME
                      6: 
                      7: addclub.pl - transform results of club registration form into a number of SQL statements
                      8: 
                      9: =head1 SYNOPSIS
                     10: 
                     11: cat text | addclub.pl
                     12: 
                     13: =head1 DESCRIPTION
                     14: 
                     15: This is a ocmapnion script for register.cgi. It transforms registration card
                     16: created by register.cgi into something that can be with minimal massage
                     17: fed into SQL
                     18: 
                     19: =head1 AUTHOR
                     20: 
                     21: Boris Veytsman
                     22: 
                     23: =head1 DATE
                     24: 
1.2     ! boris      25: $Date: 2001/09/12 16:47:32 $
1.1       boris      26: 
                     27: =head1 REVISION
                     28: 
1.2     ! boris      29: $Revision: 1.1 $
1.1       boris      30: 
                     31: =cut
                     32: 
                     33:     use strict;
                     34: 
                     35: my %ClubFields = ('Name'=>'Name', 'Address' => 'Address',
                     36:                  'URL' => 'URL', 'Phone' => 'Phone',
                     37:                  'Fax'=> 'Fax', 'Email' => 'Email',
                     38:                  'DoB'=>'DoB', 'Sponsor' => 'Sponsor',
                     39:                  'Meetings' => 'Meetings',
                     40:                  'AdultTeams' => 'AdultTeams',
                     41:                  'KidTeams'=>'KidTeams',
                     42:                  'ForeignFests'=>'ForeignFests',
                     43:                  'Braglist'=>'Braglist',
                     44:                  'OwnFests'=>'OwnFests',
                     45:                  );
                     46:                  
                     47: my %ClubClubFields = ('Parents' => 'Parents', 'Memebers' => 'Members');
                     48: 
                     49: my %PeopleFields = ();
                     50: my %ClubPeopleFields=();
                     51: my @PersonalFields=('Name', 'Address','URL','Phone','Fax','Email');
                     52: for (my $i=1; $i<=5; $i++) {
                     53:     foreach my $field (@PersonalFields) {
                     54:        $PeopleFields{"$field$i"}=$field;
                     55:     }
                     56:     $ClubPeopleFields{"Position$i"}='Position';
                     57: }
                     58: 
                     59: my %RegionFields = ('Latitude'=>'Lat', 'Longitude'=>'Lon');
                     60: 
                     61: my %AdditionalFields=('IgraA'=>'IgraA','IgraB'=>'IgraB','IgraC'=>'IgraC',
1.2     ! boris      62:                      'RegistrarName'=>'RegistrarName', 
1.1       boris      63:                      'RegistrarEmail'=>'RegistrarEmail');
                     64: 
                     65: 
                     66: my %Fields = (%ClubFields, %ClubClubFields, %PeopleFields, 
                     67: %RegionFields, %ClubPeopleFields, %AdditionalFields);
                     68: 
                     69: #  foreach my $key (keys %Fields) {
                     70: #      print "$key: $Fields{$key}\n";
                     71: #  }
                     72: 
                     73: my %Result=();
                     74: my $field="";
                     75: 
                     76: while (<>) {
                     77:     chomp;
                     78:     next if (/^\s*$/);
                     79:     s/\"/\\"/g;
                     80:     s/\'/\\'/g;
                     81:     if (/^([^=]+)=(.*)/ && exists $Fields{$1}) {
                     82:        $field=$1;
                     83:        $Result{$field}=$2;
                     84:     } elsif (/^Submit=Submit/) {
                     85:        PrintResults();
                     86:     } elsif ($field) {
                     87:        $Result{$field} .= " $_";
                     88:     }
                     89: }
                     90: 
                     91: exit 0;
                     92: 
                     93: sub PrintResults {
                     94: 
                     95:     my @Names=();
                     96:     my @Values=();
                     97:     foreach my $field (keys %ClubFields) {
                     98:        if (exists $Result{$field}) {
                     99:            push @Names, $field;
                    100:            push @Values, "\"$Result{$field}\"";
                    101:        }
                    102:     }
                    103:     print "INSERT INTO Clubs (\n",join(",\n",@Names),"\n) VALUES(\n",
                    104:     join(",\n",@Values),"\n);\n\n";
                    105: 
                    106:     my @Names=('Name');
                    107:     my @Values=("");
                    108:     foreach my $field (keys %RegionFields) {
                    109:        if (exists $Result{$field}) {
                    110:            push @Names, $field;
                    111:            push @Values, "\"$Result{$field}\"";
                    112:        }
                    113:     }
                    114:     print "SELECT rid,Name from Regions;\n";
                    115:     print "INSERT INTO Regions (\n",join(",\n",@Names),"\n) VALUES(\n",
                    116:     join(",\n",@Values),"\n);\n\n";
                    117:     print "INSERT INTO RegionRegion (Parent,Child) VALUES ();\n\n";
                    118:     print "SELECT cid,Name from Clubs;\n";
                    119:     print "INSERT INTO ClubRegion (rid,cid) VALUES ();\n\n";
                    120: 
                    121: 
                    122:     print "SELECT pid,Name from People;\n";
                    123:     for (my $i=1; $i<=5; $i++) {
                    124:        @Names=();
                    125:        @Values=();
                    126:        foreach my $field (@PersonalFields) {
                    127:            if (exists $Result{"$field$i"}) {
                    128:                push @Names, $PeopleFields{"$field$i"};
                    129:                push @Values, '"'.$Result{"$field$i"}.'"';
                    130:            }
                    131:        }
                    132:        if (scalar @Names) {
                    133:            print "INSERT INTO People (\n",join(",\n",@Names),"\n) VALUES(\n",
                    134:            join(",\n",@Values),"\n);\n\n";
                    135:        }
                    136:     }
                    137: 
                    138:     print "SELECT pid,Name from People;\n";
                    139:     for (my $i=1; $i<=5; $i++) {
                    140:        if (exists $Result{"Position$i"}) {
                    141:            print "INSERT INTO ClubPeople (cid,pid,Position,Weight) VALUES (,,", 
1.2     ! boris     142:            '"'.$Result{"Position$i"}.'"', ",10);\n";
1.1       boris     143:        }
                    144:     }
                    145: 
                    146:     foreach my $field (keys %ClubClubFields) {
                    147:        if (exists $Result{$field}) {
                    148:            print "\n# $field:\n";
                    149:            print "# $Result{$field}\n";
                    150:            print "INSERT INTO ClubClub (Parent, Child) VALUES (,);\n\n";
                    151:        }
                    152:     }
                    153:     %Result=();
                    154: 
                    155: }

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