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>