Minor restructuring of program locations.
authorAlan Jack Pippin <ajp@pippin.(none)>
Sun, 6 Jan 2008 00:03:23 +0000 (17:03 -0700)
committerAlan J. Pippin <ajp@pippins.net>
Sun, 6 Jan 2008 00:03:23 +0000 (17:03 -0700)
Added new sql create script.
Updated docs/ folder with proper install instructions.
Added new "EQ Presidency Table Update" tool under Admin.

21 files changed:
bin/backup_phpgw_db [new file with mode: 0755]
bin/import_ward_data [new file with mode: 0755]
bin/parse_ward_data [new file with mode: 0755]
checkmark.gif [deleted file]
doc [deleted symlink]
eq.jpg [deleted file]
eq.spec
images/checkmark.gif [new file with mode: 0644]
images/x.gif [new file with mode: 0755]
images/x.psd [new file with mode: 0755]
import_ward_data [deleted file]
inc/class.eq.inc.php
parse_ward_data [deleted file]
setup/setup.inc.php
sql/dot.cmd [new file with mode: 0755]
sql/eq.jpg [new file with mode: 0644]
sql/eq.sql [new file with mode: 0644]
sql/schema.dot [new file with mode: 0644]
templates/default/admin.tpl
x.gif [deleted file]
x.psd [deleted file]

diff --git a/bin/backup_phpgw_db b/bin/backup_phpgw_db
new file mode 100755 (executable)
index 0000000..b00afda
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+MNTPNT="/backup"
+DSTDIR="/backup/mysql/"
+DBNAME=phpgroupware
+DBUSER=phpgroupware
+DBPASS=phpgroupware
+
+mount -w -o remount $MNTPNT 
+/usr/bin/mysqldump --databases $DBNAME -u $DBUSER --password=$DBPASS -c > $DSTDIR/mysql_phpgw_backup.sql
+ls -l $DSTDIR/mysql_phpgw_backup.sql
+mount -r -o remount $MNTPNT
+
diff --git a/bin/import_ward_data b/bin/import_ward_data
new file mode 100755 (executable)
index 0000000..bd707b4
--- /dev/null
@@ -0,0 +1,745 @@
+#!/usr/bin/perl
+
+use DBI;
+use Getopt::Std;
+###################################################
+# GLOBALS
+$dbname = "phpgroupware";
+$dbhost = "192.168.0.2";
+$dbport = 3306;
+$dbuser = "phpgroupware";
+$dbpass = "phpgroupware";
+%hometeaching_data = ();
+%membership_data = ();
+getopts('vsn:o:');
+
+$monthname2num{'Jan'} = '01';
+$monthname2num{'Feb'} = '02';
+$monthname2num{'Mar'} = '03';
+$monthname2num{'Apr'} = '04';
+$monthname2num{'May'} = '05';
+$monthname2num{'Jun'} = '06';
+$monthname2num{'Jul'} = '07';
+$monthname2num{'Aug'} = '08';
+$monthname2num{'Sep'} = '09';
+$monthname2num{'Oct'} = '10';
+$monthname2num{'Nov'} = '11';
+$monthname2num{'Dec'} = '12';
+
+######################################################################
+# SUBROUTINES
+######################################################################
+sub csv_to_hash
+{
+    my ($filename, $hashref) = @_;
+
+    open(FILE,$filename) || die "-E- Could not open $filename for reading\n";
+
+    my $found_header = 0; my $index = 0;
+    while(<FILE>)
+    {
+       $line = $_;
+       @data = split /\",/, $line;
+       if(!$found_header) { @header = @data; $found_header = 1; }
+       else {
+           foreach $i (0..$#data-1) {
+               $data[$i] =~ s/\"//g;
+               $header[$i] =~ s/\"//g;
+               $hashref->{$index}{$header[$i]} = $data[$i];
+               #print "$index: $i: $header[$i]: $data[$i]\n";
+           }
+           $index++;
+       }
+    }
+    
+    close(FILE);
+}
+
+######################################################################
+sub print_hash
+{
+    my ($hashref) = @_;
+
+    foreach $key (sort {$a <=> $b} keys %$hashref) {
+       print "Index: $key\n";
+       foreach $field (keys %{$hashref->{$key}}) {
+           print "$field: $hashref->{$key}{$field}\n";
+       }
+       print "\n";
+    }
+}
+
+######################################################################
+
+# EQ_AARONIC
+#+-------+--------------------+------+-----+---------+-------+
+#| Field | Type               | Null | Key | Default | Extra |
+#+-------+--------------------+------+-----+---------+-------+
+#| aaronic | int(16) unsigned |      | PRI | 0       |   A   |
+#| name    | varchar(60)      | YES  |     | NULL    |       |
+#| phone   | varchar(12)      | YES  |     | NULL    |       |
+#| valid   | tinyint(1)       | YES  |     | NULL    |       |
+#+-------+--------------------+------+-----+---------+-------+
+sub update_eq_aaronic_table
+{
+    print "\n-> Updating eq_aaronic table\n";
+
+    # Set all records to be invalid. Only mark them as valid if they appear on the new list.
+    $sth = $dbh->prepare("update eq_aaronic set valid=0");
+    $sth->execute or die "-E- DB error: $DBI::errstr\n";
+    
+    foreach $index (keys %membership_data)
+    {
+       $hashref = $membership_data{$index};
+       foreach $key (keys %$hashref) {
+           if($key =~ /Priesthood/i &&
+              ($membership_data{$index}{$key} =~ /^Deacon\s*$/i ||
+               $membership_data{$index}{$key} =~ /^Teacher\s*$/i ||
+               $membership_data{$index}{$key} =~ /^Priest\s*$/i)) {
+               $aaronic_name = $membership_data{$index}{'Preferred Name'};
+               $phone = $membership_data{$index}{'Phone 1'};
+               if($phone =~ /(\d\d\d-\d\d\d\d)/) { $phone = "970-$1"; }
+               if($phone =~ /^\(\d\d\d\) (\d\d\d-\d\d\d\d)/) { $phone = "$1-$2"; }
+               $sth = $dbh->prepare("select * from eq_aaronic where name='$aaronic_name'");
+               $sth->execute or die "-E- DB error: $DBI::errstr\n";
+               my @data = ();
+               while($sqlhashref = $sth->fetchrow_hashref) { push(@data, $sqlhashref); }
+               my $rows = scalar @data;
+               if($rows == 0) {
+                   # No existing records found for this aaronic, make a new entry
+                   print "   Adding new Aaronic: $aaronic_name\n";
+                   $sth = $dbh->prepare("insert into eq_aaronic values (NULL,'$aaronic_name','$phone',1)");
+                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
+               } elsif($rows == 1) {
+                   # An existing record was found for this aaronic, update it, mark it valid!
+                   print "   Updating existing aaronic: $aaronic_name\n";
+                   $sth = $dbh->prepare("update eq_aaronic set phone='$phone' where name='$aaronic_name'");
+                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
+                   $sth = $dbh->prepare("update eq_aaronic set valid=1 where name='$aaronic_name'");
+                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
+               } else {
+                   # More than one record was found. Error! This shouldn't happen.
+                   print "   -E- More than one record found ($rows) for aaronic name: $aaronic_name\n";
+               }
+           }
+       }
+    }
+    $sth->finish();
+}
+
+# EQ_ELDER
+#+-------------+------------------+------+-----+---------+----------------+
+#| Field       | Type             | Null | Key | Default | Extra          |
+#+-------------+------------------+------+-----+---------+----------------+
+#| elder       | int(16) unsigned |      | PRI | NULL    | auto_increment |
+#| name        | varchar(60)      | YES  |     | NULL    |                |
+#| phone       | varchar(12)      | YES  |     | NULL    |                |
+#| ppi_pri     | int(10) unsigned | YES  |     | 1       |                |
+#| ppi_notes   | varchar(128)     | YES  |     | NULL    |                |
+#| int_pri     | int(10) unsigned | YES  |     | 1       |                |
+#| int_notes   | varchar(128)     | YES  |     | NULL    |                |
+#| attending   | tinyint(1)       | YES  |     | 0       |                |
+#| valid       | tinyint(1)       | YES  |     | NULL    |                |
+#+-------------+------------------+------+-----+---------+----------------+
+sub update_eq_elder_table
+{
+    print "\n-> Updating eq_elder table\n";
+
+    # Set all records to be invalid. Only mark them as valid if they appear on the new list.
+    $sth = $dbh->prepare("update eq_elder set valid=0");
+    $sth->execute or die "-E- DB error: $DBI::errstr\n";
+    
+    foreach $index (keys %membership_data)
+    {
+       $hashref = $membership_data{$index};
+       foreach $key (keys %$hashref) {
+           if($key =~ /Priesthood/i && $membership_data{$index}{$key} =~ /Elder/i) {
+               $id = $membership_data{$index}{'Indiv ID'};
+               $elder_name = $membership_data{$index}{'Preferred Name'};
+               $phone = $membership_data{$index}{'Phone 1'};
+               $organization = $organization_by_id{$id};
+               $attending = 0;
+               if(($organization =~ /Elders/) ||
+                  ($organization =~ /Young Men/) ||
+                  ($organization =~ /Sunday School/) ||
+                  ($organization =~ /Primary/)
+                  ) { $attending = 1; }
+               if($phone =~ /(\d\d\d-\d\d\d\d)/) { $phone = "970-$1"; }
+               if($phone =~ /^\(\d\d\d\) (\d\d\d-\d\d\d\d)/) { $phone = "$1-$2"; }
+               $sth = $dbh->prepare("select * from eq_elder where name='$elder_name'");
+               $sth->execute or die "-E- DB error: $DBI::errstr\n";
+               my @data = ();
+               while($sqlhashref = $sth->fetchrow_hashref) { push(@data, $sqlhashref); }
+               my $rows = scalar @data;
+               if($rows == 0) {
+                   # No existing records found for this elder, make a new entry
+                   print "   Adding new Elder: $elder_name\n";
+                   $sth = $dbh->prepare("insert into eq_elder values (NULL,'$elder_name','$phone','1','','1','',$attending,1)");
+                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
+               } elsif($rows == 1) {
+                   # An existing record was found for this elder, update it
+                   print "   Updating existing Elder: $elder_name\n";
+                   $sth = $dbh->prepare("update eq_elder set valid=1 where name='$elder_name'");
+                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
+                   if($phone ne "") { 
+                       $sth = $dbh->prepare("update eq_elder set phone='$phone' where name='$elder_name'");
+                   } else {
+                       $sth = $dbh->prepare("update eq_elder set phone=NULL where name='$elder_name'");
+                   }
+                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
+                   $sth = $dbh->prepare("update eq_elder set attending='$attending' where name='$elder_name'");
+                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
+               } else {
+                   # More than one record was found. Error! This shouldn't happen.
+                   print "   -E- More than one record found ($rows) for Elder: $elder_name\n";
+               }
+           }
+       }
+    }
+    $sth->finish();
+}
+
+# EQ_CALLING
+#+--------------+------------------+------+-----+---------+-------+
+#| Field        | Type             | Null | Key | Default | Extra |
+#+--------------+------------------+------+-----+---------+-------+
+#| indiv_id     | int(16) unsigned | YES  |     | NULL    |       |
+#| name         | varchar(30)      | YES  |     | NULL    |       |
+#| organization | varchar(30)      | YES  |     | NULL    |       |
+#| position     | varchar(30)      | YES  |     | NULL    |       |
+#| sequence     | int(16) unsigned | YES  |     | NULL    |       |
+#| sustained    | date             | YES  |     | NULL    |       |
+#+--------------+------------------+------+-----+---------+-------+
+sub update_eq_calling_table()
+{
+    print "\n-> Updating eq_calling table\n";
+
+    #print "-> Organization Data Dump\n\n";
+    #&print_hash(\%organization_data);
+    
+    # Delete all records from the calling table. We have no history to
+    # save here. Just re-populate with the latest calling information.
+    $sth = $dbh->prepare("delete from eq_calling ");
+    $sth->execute or die "-E- DB error: $DBI::errstr\n";
+    
+    foreach $index (keys %organization_data)
+    {
+       $indiv_id = $organization_data{$index}{'Indiv ID'};
+       $name = $organization_data{$index}{'Indiv Name'};
+       $name =~ s/\'/\\'/g; #'
+       $organization = $organization_data{$index}{'Organization'};
+       $organization_by_name{$name} = $organization;
+       $organization_by_id{$indiv_id} = $organization;
+       $position = $organization_data{$index}{'Position'};
+       $sequence = $organization_data{$index}{'Org Seq'};
+       $sustained = $organization_data{$index}{'Sustained'};
+       $sustained =~ /(\S+) (\d+)/; $month=$1; $year=$2;
+       if($name eq "") { next; }
+       print "   Adding new Calling: $name -> $position\n";
+       $sth = $dbh->prepare("insert into eq_calling values ('$indiv_id','$name','$organization','$position','$sequence','$month $year')");
+       $sth->execute or die "-E- DB error: $DBI::errstr\n";
+    }
+}
+
+# EQ_DISTRICT
+#+------------+------------------+------+-----+---------+-------+
+#| Field      | Type             | Null | Key | Default | Extra |
+#+------------+------------------+------+-----+---------+-------+
+#| district   | int(16) unsigned |      | PRI | 0       |       |
+#| name       | varchar(30)      | YES  |     | NULL    |       |
+#| supervisor | int(16) unsigned | YES  |     | NULL    |       |
+#| valid      | tinyint(1)       | YES  |     | NULL    |       |
+#+------------+------------------+------+-----+---------+-------+
+sub update_eq_district_table
+{
+    # Districts should be created by hand. This subroutine only
+    # updates the supervisor's ID in each district.
+    print "\n-> Updating eq_district table\n";
+    $sth = $dbh->prepare("select * from eq_district");
+    $sth->execute or die "-E- DB error: $DBI::errstr\n";
+    while($sqlhashref = $sth->fetchrow_hashref) {
+       $supervisor_name = $sqlhashref->{name};
+       $district = $sqlhashref->{district};
+       $sth2 = $dbh->prepare("select * from eq_elder where name='$supervisor_name'");
+       $sth2->execute or die "-E- DB error: $DBI::errstr\n";
+       $sqlhashref2 = $sth2->fetchrow_hashref;
+       $supervisor_id = $sqlhashref2->{elder};
+       $sth2->finish();
+       $sth2 = $dbh->prepare("update eq_district set supervisor='$supervisor_id' where district='$district'");
+       $sth2->execute or die "-E- DB error: $DBI::errstr\n";
+       $sth2->finish();
+    }
+    $sth->finish();
+}
+
+# EQ_COMPANIONSHIP
+#+---------------+------------------+------+-----+---------+-------+
+#| Field         | Type             | Null | Key | Default | Extra |
+#+---------------+------------------+------+-----+---------+-------+
+#| companionship | int(16) unsigned |      |     | 0       |       |
+#| elder         | int(16) unsigned | YES  |     | NULL    |       |
+#| aaronic       | int(16) unsigned | YES  |     | NULL    |       |
+#| district      | int(16) unsigned | YES  |     | NULL    |       |
+#| valid         | tinyint(1)       | YES  |     | NULL    |       |
+#+---------------+------------------+------+-----+---------+-------+
+sub update_eq_companionship_table
+{
+    print "\n-> Updating eq_companionship table\n";
+
+    # First, mark all existing companionships as invalid in case they have been dissolved
+    $sth = $dbh->prepare("update eq_companionship set valid=0");
+    $sth->execute or die "-E- DB error: $DBI::errstr\n";
+    # Second, mark all the aaronic invalid. We'll only mark the ones as valid that are assigned to hometeach
+    $sth = $dbh->prepare("update eq_aaronic set valid=0");
+    $sth->execute or die "-E- DB error: $DBI::errstr\n";
+    
+    foreach $index (keys %hometeaching_data)
+    {
+       $hashref = $hometeaching_data{$index};
+       foreach $key (keys %$hashref) {
+           if($key =~ /Quorum/i && $hometeaching_data{$index}{$key} =~ /Elders/i) {
+               foreach $field ("Home Teacher 1","Home Teacher 2") {
+                   $elder_name = $hometeaching_data{$index}{$field};
+                   if($elder_name eq "") { next; }
+                   $sth2 = $dbh->prepare("select * from eq_elder where name='$elder_name'");
+                   $sth2->execute or die "-E- DB error: $DBI::errstr\n";
+                   $sqlhashref2 = $sth2->fetchrow_hashref;
+                   $elder = $sqlhashref2->{elder};
+                   $aaronic = "NULL";
+                   if($elder eq "") {
+                       $sth2 = $dbh->prepare("select * from eq_aaronic where name='$elder_name'");
+                       $sth2->execute or die "-E- DB error: $DBI::errstr\n";
+                       $sqlhashref2 = $sth2->fetchrow_hashref;
+                       $aaronic = $sqlhashref2->{aaronic};
+                       $elder = "NULL";
+                       if($aaronic eq "") { print "-W- Unable to find $elder_name in eq_elder or eq_aaronic tables\n"; next; }
+                   } 
+                   $id = $hometeaching_data{$index}{'Comp ID'};
+                   $district = $hometeaching_data{$index}{'HT District'};
+                   $sth = $dbh->prepare("select * from eq_companionship where elder='$elder' and aaronic='$aaronic' and companionship='$id'");
+                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
+                   my @data = ();
+                   while($sqlhashref = $sth->fetchrow_hashref) { push(@data, $sqlhashref); }
+                   my $rows = scalar @data;
+                   if($rows == 0) {
+                       # No existing records found for this companionship, make a new entry
+                       print "   Adding Companion to companionship: $elder_name -> $id\n";
+                       $sth = $dbh->prepare("insert into eq_companionship values ($id,'$elder','$aaronic','$district',1)");
+                       $sth->execute or die "-E- DB error: $DBI::errstr\n";
+                   } else {
+                       # An existing companionship was found for this companionship, update it
+                       $sth2 = $dbh->prepare("select * from eq_companionship where district='$district' and companionship='$id'");
+                       $sth2->execute or die "-E- DB error: $DBI::errstr\n";
+                       if($elder ne "NULL") {
+                           print "   Updating Companionship with Elder: $elder_name ($elder) -> $id\n";
+                           $sth = $dbh->prepare("update eq_companionship set district='$district' where elder='$elder' and companionship='$id'");
+                           $sth->execute or die "-E- DB error 'district': $DBI::errstr\n";
+                           $sth = $dbh->prepare("update eq_companionship set elder='$elder' where elder='$elder' and companionship='$id'");
+                           $sth->execute or die "-E- DB error 'elder': $DBI::errstr\n";
+                           $sth = $dbh->prepare("update eq_companionship set valid=1 where elder='$elder' and companionship='$id'");
+                           $sth->execute or die "-E- DB error 'valid': $DBI::errstr\n";
+                       } else {
+                           print "   Updating Companionship with Aaronic: $elder_name ($aaronic) -> $id\n";
+                           $sth = $dbh->prepare("update eq_companionship set district='$district' where aaronic='$aaronic' and companionship='$id'");
+                           $sth->execute or die "-E- DB error: $DBI::errstr\n";
+                           $sth = $dbh->prepare("update eq_companionship set aaronic='$aaronic' where aaronic='$aaronic' and companionship='$id'");
+                           $sth->execute or die "-E- DB error: $DBI::errstr\n";
+                           $sth = $dbh->prepare("update eq_companionship set valid=1 where aaronic='$aaronic' and companionship='$id'");
+                           $sth->execute or die "-E- DB error: $DBI::errstr\n";                            
+                           $sth = $dbh->prepare("update eq_aaronic set valid=1 where aaronic='$aaronic'");
+                           $sth->execute or die "-E- DB error: $DBI::errstr\n";
+                       }
+                   }
+                   $sth->finish();
+                   $sth2->finish();                
+               }
+           }
+       }
+    }
+}
+
+# EQ_FAMILY
+#+---------------+------------------+------+-----+---------+-------+
+#| Field         | Type             | Null | Key | Default | Extra |
+#+---------------+------------------+------+-----+---------+-------+
+#| family        | int(16) unsigned |      | PRI | 0       |   A   |
+#| hofh_id       | int(16) unsigned | YES  |     | NULL    |       |
+#| name          | varchar(30)      | YES  |     | NULL    |       |
+#| name_id       | varchar(30)      | YES  |     | NULL    |       |
+#| elder_id      | int(16) unsigned | YES  |     | NULL    |       |
+#| companionship | int(16) unsigned | YES  |     | NULL    |       |
+#| visit_pri     | int(10) unsigned | YES  |     | 1       |       |
+#| visit_notes   | varchar(128)     | YES  |     | NULL    |       |
+#| valid         | tinyint(1)       | YES  |     | NULL    |       |
+#+---------------+------------------+------+-----+---------+-------+
+sub update_eq_family_table
+{
+    print "\n-> Updating eq_family table\n";
+
+    # Set all records to be invalid. Only mark them as valid if they appear on the new list.
+    $sth = $dbh->prepare("update eq_family set valid=0");
+    $sth->execute or die "-E- DB error: $DBI::errstr\n";
+    $sth = $dbh->prepare("update eq_family set companionship=0");
+    $sth->execute or die "-E- DB error: $DBI::errstr\n";
+    
+    foreach $index (keys %membership_data)
+    {
+       $hashref = $membership_data{$index};
+       foreach $key (keys %$hashref) {
+           if($key =~ /HH Position/i && $membership_data{$index}{$key} =~ /Head of Household/i) {
+               $family_name = $membership_data{$index}{'Preferred Name'};
+               $family_name =~ s/\'/\\'/g; #'
+               $id = $membership_data{$index}{'HofH ID'};
+               $name_id = uc($family_name);
+
+               # Find out how many families match this family's name
+               $sth = $dbh->prepare("select * from eq_family where name_id='$name_id'");
+               $sth->execute or die "-E- DB error: $DBI::errstr\n";
+               my @data = ();
+               while($sqlhashref = $sth->fetchrow_hashref) { push(@data, $sqlhashref); }
+               my $rows = scalar @data;
+               
+               if($rows == 0) {
+                   # No existing records found for this family, make a new entry
+                   print "   Adding new Family: $family_name\n";
+                   $sth = $dbh->prepare("insert into eq_family values (NULL,$id,'$family_name','$name_id','0','0','1','',1)");
+                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
+               } elsif($rows == 1) {
+                   # An existing record was found for this family, update it
+                   print "   Updating existing family: $family_name\n";
+                   $sth = $dbh->prepare("update eq_family set hofh_id=$id where name_id='$name_id'");
+                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
+                   $sth = $dbh->prepare("update eq_family set valid=1 where name_id='$name_id'");
+                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
+               } else {
+                   # More than one record was found. Error! This shouldn't happen.
+                   print "   -E- More than one record found ($rows) for family name: $family_name\n";
+               }
+
+                # Now update the elder_id field for this family
+               $sth = $dbh->prepare("select * from eq_elder WHERE name='$family_name'");
+               $sth->execute or die "-E- DB error: $DBI::errstr\n";
+               while($sqlhashref = $sth->fetchrow_hashref) {
+                   $elder_id = $sqlhashref->{elder};
+                   print "   Updating family elder_id: $family_name -> $elder_id\n";
+                   $sth = $dbh->prepare("update eq_family set elder_id=$elder_id where name_id='$name_id'");
+                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
+               }
+               
+               # Now update the hometeaching field for this family
+               foreach $index (keys %hometeaching_data)
+               {
+                   $hashref = $hometeaching_data{$index};
+                   foreach $key (keys %$hashref) {
+                       if($hometeaching_data{$index}{'Household'} =~ /(\S+)\s+(\S+),\s+(\S+)\s+(.*)/) {
+                           $a = $1; $b = $2; $c = $3; $d = $4;
+                           if($family_name =~ /$a/ && $hometeaching_data{$index}{'Household'} !~ /$family_name/i) { 
+                               print "I: Adjusting hometeaching match from: $hometeaching_data{$index}{'Household'} to $a, $c $d\n";
+                               $hometeaching_data{$index}{'Household'} = "$a, $c $d";
+                           }
+                       }
+                       if($key =~ /Quorum/i &&
+                          $hometeaching_data{$index}{$key} =~ /Elders/i &&
+                          $hometeaching_data{$index}{'Household'} =~ /$family_name/i &&
+                          $data[0]->{companionship} != $hometeaching_data{$index}{'Comp ID'}
+                          )
+                       {
+                           print "   Updating hometeaching assignment for $family_name family\n";
+                           $companionship = $hometeaching_data{$index}{'Comp ID'};
+                           $sth = $dbh->prepare("update eq_family set companionship='$companionship' where name_id='$name_id'");
+                           $sth->execute or die "-E- DB error: $DBI::errstr\n";
+                       }
+                   }
+               }
+               $sth->finish();
+           }
+       }
+    }
+}
+
+# EQ_PARENT
+#+----------+------------------+------+-----+---------+-------+
+#| Field    | Type             | Null | Key | Default | Extra |
+#+----------+------------------+------+-----+---------+-------+
+#| parent   | int(16) unsigned |      | PRI | 0       |   A   |
+#| family   | int(16) unsigned | YES  |     | NULL    |       |
+#| name     | varchar(30)      | YES  |     | NULL    |       |
+#| birthday | date             | YES  |     | NULL    |       |
+#| phone    | varchar(12)      | YES  |     | NULL    |       |
+#| address  | varchar(255)     | YES  |     | NULL    |       |
+#| indiv_id | int(16) unsigned | YES  | UNI | NULL    |       |
+#| valid    | tinyint(1)       | YES  |     | NULL    |       |
+#+----------+------------------+------+-----+---------+-------+
+sub update_eq_parent_table
+{
+    print "\n-> Updating eq_parent table\n";
+
+    # Set all records to be invalid. Only mark them as valid if they appear on the new list.
+    $sth = $dbh->prepare("update eq_parent set valid=0");
+    $sth->execute or die "-E- DB error: $DBI::errstr\n";
+    
+    foreach $index (keys %membership_data)
+    {
+       $hashref = $membership_data{$index};
+       foreach $key (keys %$hashref) {
+           if($key =~ /HH Position/i &&
+              $membership_data{$index}{$key} =~ /Head of Household/i ||
+              $membership_data{$index}{$key} =~ /Spouse/i
+              ) {
+               # Get some information from the hash about this parent
+               $parent_name = $membership_data{$index}{'Preferred Name'};
+               $parent_name =~ s/\'/\\'/g; #'
+               $birthday = $membership_data{$index}{'Birth'};
+               $birthday =~ /(\d+) (\S+) (\d+)/; $day=$1; $month=$monthname2num{$2}; $year=$3;
+               $hofh_id = $membership_data{$index}{'HofH ID'};
+               $id = $membership_data{$index}{'Indiv ID'};
+               $phone = $membership_data{$index}{'Phone 1'};
+               if($phone =~ /(\d\d\d-\d\d\d\d)/) { $phone = "970-$1"; }
+               if($phone =~ /^\(\d\d\d\) (\d\d\d-\d\d\d\d)/) { $phone = "$1-$2"; }
+               $address = $membership_data{$index}{'Street 1'};
+               if($membership_data{$index}{'Street 2'} ne "") { 
+                   $address .= " " . $membership_data{$index}{'Street 2'};
+               }
+
+               # Find the family id for this parent's HofH_ID.
+               $sth = $dbh->prepare("select * from eq_family where hofh_id='$hofh_id' and valid=1");
+               $sth->execute or die "-E- DB error: $DBI::errstr\n";
+               my @family_data = ();
+               while($sqlhashref = $sth->fetchrow_hashref) { push(@family_data, $sqlhashref); }
+               my $family_rows = scalar @family_data;
+               if($family_rows > 0) { $family_id = $family_data[0]->{'family'}; }
+               else { $family_id = 0; }
+               
+               # Find out how many parents match this parent's name
+               $sth = $dbh->prepare("select * from eq_parent where name='$parent_name'");
+               $sth->execute or die "-E- DB error: $DBI::errstr\n";
+               my @data = ();
+               while($sqlhashref = $sth->fetchrow_hashref) { push(@data, $sqlhashref); }
+               my $rows = scalar @data;
+               
+               if($rows == 0 && $family_rows > 0) {
+                   # No existing records found for this parent, make a new entry
+                   print "   Adding new Parent: $parent_name\n";
+                   $sth = $dbh->prepare("insert into eq_parent values (NULL,$family_id,'$parent_name','$year-$month-$day','$phone','$address','$id',1)");
+                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
+               } elsif($rows == 1 && $family_rows > 0) {
+                   # An existing record was found for this parent, update it
+                   print "   Updating existing parent: $parent_name\n";
+                   $sth = $dbh->prepare("update eq_parent set family='$family_id' where name='$parent_name'");
+                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
+                   $sth = $dbh->prepare("update eq_parent set birthday='$year-$month-$day' where name='$parent_name'");
+                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
+                   $sth = $dbh->prepare("update eq_parent set phone='$phone' where name='$parent_name'");
+                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
+                   $sth = $dbh->prepare("update eq_parent set address='$address' where name='$parent_name'");
+                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
+                   $sth = $dbh->prepare("update eq_parent set valid=1 where name='$parent_name'");
+                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
+                   $sth = $dbh->prepare("update eq_parent set indiv_id='$id' where name='$parent_name'");
+                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
+               } elsif($rows > 1) {
+                   # More than one record was found. Error! This shouldn't happen.
+                   print "   -E- More than one record found with same parent name: $parent_name with hofh_id: $hofh_id\n";
+               } else {
+                   print "   -E- Unable to find a family to attach this parent to: $parent_name with hofh_id: $hofh_id\n";
+               }
+               $sth->finish();
+           }
+       }
+    }
+}
+
+# EQ_CHILD
+#+----------+------------------+------+-----+---------+-------+
+#| Field    | Type             | Null | Key | Default | Extra |
+#+----------+------------------+------+-----+---------+-------+
+#| child    | int(16) unsigned |      | PRI | 0       |   A   |
+#| family   | int(16) unsigned | YES  |     | NULL    |       |
+#| name     | varchar(30)      | YES  |     | NULL    |       |
+#| birthday | date             | YES  |     | NULL    |       |
+#| indiv_id | int(16) unsigned | YES  | UNI | NULL    |       |
+#| valid    | tinyint(1)       | YES  |     | NULL    |       |
+#+----------+------------------+------+-----+---------+-------+
+sub update_eq_child_table
+{
+    print "\n-> Updating eq_child table\n";
+
+    # Set all records to be invalid. Only mark them as valid if they appear on the new list.
+    $sth = $dbh->prepare("update eq_child set valid=0");
+    $sth->execute or die "-E- DB error: $DBI::errstr\n";
+    
+    foreach $index (keys %membership_data)
+    {
+       $hashref = $membership_data{$index};
+       foreach $key (keys %$hashref) {
+           if($key =~ /HH Position/i && $membership_data{$index}{$key} =~ /Other/i ) {
+               $child_name = $membership_data{$index}{'Full Name'};
+               $child_name =~ s/\'/\\'/g; #'
+               $birthday = $membership_data{$index}{'Birth'};
+               $birthday =~ /(\d+) (\S+) (\d+)/; $day=$1; $month=$monthname2num{$2}; $year=$3;
+               $id = $membership_data{$index}{'Indiv ID'};
+               $hofh_id = $membership_data{$index}{'HofH ID'};
+
+               # Find the family id for this child's HofH_ID.
+               $sth = $dbh->prepare("select * from eq_family where hofh_id='$hofh_id' and valid=1");
+               $sth->execute or die "-E- DB error: $DBI::errstr\n";
+               my @family_data = ();
+               while($sqlhashref = $sth->fetchrow_hashref) { push(@family_data, $sqlhashref); }
+               my $family_rows = scalar @family_data;
+               if($family_rows > 0) { $family_id = $family_data[0]->{'family'}; }
+               else { $family_id = 0; }
+               
+               # Find out how many children have the same name for the same family
+               $sth = $dbh->prepare("select * from eq_child where name='$child_name'");
+               $sth->execute or die "-E- DB error: $DBI::errstr\n";
+               my @data = ();
+               while($sqlhashref = $sth->fetchrow_hashref) { push(@data, $sqlhashref); }
+               my $rows = scalar @data;
+               
+               if($rows == 0 && $family_rows > 0) {
+                   # No existing records found for this child, make a new entry
+                   print "   Adding new Child: $child_name\n";
+                   $sth = $dbh->prepare("insert into eq_child values (NULL,$family_id,'$child_name','$year-$month-$day','$id',1)");
+                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
+               } elsif($rows == 1 && $family_rows > 0) {
+                   # An existing record was found for this child, update it
+                   print "   Updating existing child: $child_name\n";
+                   $sth = $dbh->prepare("update eq_child set family='$family_id' where name='$child_name'");
+                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
+                   $sth = $dbh->prepare("update eq_child set birthday='$year-$month-$day' where name='$child_name'");
+                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
+                   $sth = $dbh->prepare("update eq_child set valid=1 where name='$child_name'");
+                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
+                   $sth = $dbh->prepare("update eq_child set indiv_id='$id' where name='$child_name'");
+                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
+               } else {
+                   # More than one record was found. Error! This shouldn't happen.
+                   print "   -E- More than one record found ($rows) with same child name: $child_name\n";
+               }
+               $sth->finish();
+           }
+       }
+    }
+}
+
+######################################################################
+sub check_for_changed_ids
+{
+    # If the Indiv ID & HofH ID has changed between data sets, we could have problems
+    my ($oldhashref, $newhashref) = @_;
+    my $found_problem = 0;
+    
+    foreach $oldindex (keys %$oldhashref)
+    {
+       $indiv_id = $oldhashref->{$oldindex}{'Indiv ID'};
+       $hofh_id  = $oldhashref->{$oldindex}{'HofH ID'};
+       $full_name = $oldhashref->{$oldindex}{'Full Name'};
+       $hh_position = $oldhashref->{$oldindex}{'HH Position'};
+       if($hh_position =~ /Other/i) { next; }
+
+       foreach $newindex (keys %$newhashref)
+       {
+           if($newhashref->{$newindex}{'Full Name'} eq $full_name &&
+              $indiv_id != $newhashref->{$newindex}{'Indiv ID'})
+           {
+               print "-W- Indiv ID for $full_name changed from $indiv_id to $newhashref->{$newindex}{'Indiv ID'}\n";
+               $found_problem = 1;
+           }
+
+           if($newhashref->{$newindex}{'Full Name'} eq $full_name &&
+              $hofh_id != $newhashref->{$newindex}{'HofH ID'})
+           {
+               print "-W- HofH ID for $full_name changed from $hofh_id to $newhashref->{$newindex}{'HofH ID'}\n";
+               $found_problem = 1;
+           }
+       }
+    }
+    
+    return $found_problem;
+}
+
+######################################################################
+# MAIN
+######################################################################
+
+###################################################
+# Open a connection to the database
+$dbh=DBI->connect("dbi:mysql:dbname=$dbname;host=$dbhost port=$dbport",$dbuser,$dbpass,{
+    AutoCommit=>0,
+    PrintError=>0}) or print "Connect Failure:".$DBI::errstr."\n" and exit 2;
+
+###################################################
+# Check old directory against new directory to ensure
+# that the Indiv ID & HofH ID have not changed between updates
+if(defined $opt_o) {
+    print "-> Comparing old data files to new ones: $opt_o => $opt_n\n";
+    my %old_membership_data = ();
+    my %new_membership_data = ();
+    &csv_to_hash("$opt_o/Membership.csv",\%old_membership_data);
+    &csv_to_hash("$opt_n/Membership.csv",\%new_membership_data);
+
+    $changed_ids=&check_for_changed_ids(\%old_membership_data, \%new_membership_data);
+    
+    if($changed_ids) {
+       print "\n";
+       print "-E- Some Indiv IDs and HofH IDs have changed for Head of Households between \n";
+       print "    $opt_o and $opt_n data sets.\n";
+       print "    This script is not currently setup to handle this properly.\n";
+       print "\n";
+       print "    Exiting without updating...\n\n";
+       exit;
+    }
+}
+
+###################################################
+# Process command line options
+if(defined $opt_n) { $datadir = $opt_n; }
+else { $datadir = shift(@ARGV); }
+print "\n-> Processing all ward data files in $datadir\n";
+
+###################################################
+# Parse Ward Data Files
+&csv_to_hash("$datadir/Membership.csv",\%membership_data);
+&csv_to_hash("$datadir/HomeTeaching.csv",\%hometeaching_data);
+&csv_to_hash("$datadir/Organization.csv",\%organization_data);
+%organization_by_name = ();
+%organization_by_id = ();
+
+if($opt_v) {
+    print "-> Membership Data Dump\n\n";
+    &print_hash(\%membership_data);
+    print "-> HomeTeaching Data Dump\n\n";
+    &print_hash(\%hometeaching_data);
+    print "-> Organization Data Dump\n\n";
+    &print_hash(\%organization_data);
+}
+
+if($opt_s) { $dbh->disconnect(); exit; }
+
+# Now update the various eq DB tables
+&update_eq_calling_table();
+&update_eq_elder_table();
+&update_eq_aaronic_table();
+&update_eq_district_table();
+&update_eq_companionship_table();
+&update_eq_family_table();
+&update_eq_parent_table();
+&update_eq_child_table();
+
+###################################################
+# Disconnect from the database
+$dbh->disconnect();
+
+######################################################################
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/bin/parse_ward_data b/bin/parse_ward_data
new file mode 100755 (executable)
index 0000000..82a1730
--- /dev/null
@@ -0,0 +1,136 @@
+#!/usr/bin/perl
+
+use DBI;
+use Getopt::Std;
+###################################################
+# GLOBALS
+$dbname = "phpgroupware";
+$dbhost = "192.168.0.2";
+$dbport = 3306;
+$dbuser = "phpgroupware";
+$dbpass = "phpgroupware";
+%hometeaching_data = ();
+%membership_data = ();
+getopts('vsn:o:b');
+
+$monthname2num{'Jan'} = '01';
+$monthname2num{'Feb'} = '02';
+$monthname2num{'Mar'} = '03';
+$monthname2num{'Apr'} = '04';
+$monthname2num{'May'} = '05';
+$monthname2num{'Jun'} = '06';
+$monthname2num{'Jul'} = '07';
+$monthname2num{'Aug'} = '08';
+$monthname2num{'Sep'} = '09';
+$monthname2num{'Oct'} = '10';
+$monthname2num{'Nov'} = '11';
+$monthname2num{'Dec'} = '12';
+
+######################################################################
+# SUBROUTINES
+######################################################################
+sub csv_to_hash
+{
+    my ($filename, $hashref) = @_;
+
+    open(FILE,$filename) || die "-E- Could not open $filename for reading\n";
+
+    my $found_header = 0; my $index = 0;
+    while(<FILE>)
+    {
+       $line = $_;
+       @data = split /\",/, $line;
+       if(!$found_header) { @header = @data; $found_header = 1; }
+       else {
+           foreach $i (0..$#data-1) {
+               $data[$i] =~ s/\"//g;
+               $header[$i] =~ s/\"//g;
+               $hashref->{$index}{$header[$i]} = $data[$i];
+               #print "$index: $i: $header[$i]: $data[$i]\n";
+           }
+           $index++;
+       }
+    }
+    
+    close(FILE);
+}
+
+######################################################################
+sub print_hash
+{
+    my ($hashref) = @_;
+
+    foreach $key (sort {$a <=> $b} keys %$hashref) {
+       print "Index: $key\n";
+       foreach $field (keys %{$hashref->{$key}}) {
+           print "$field: $hashref->{$key}{$field}\n";
+       }
+       print "\n";
+    }
+}
+
+######################################################################
+sub print_birthdays
+{
+    my ($hashref) = @_;
+
+    foreach $key (sort {$a <=> $b} keys %$hashref) {
+       $name = "";
+       $birthday = "";
+       foreach $field (keys %{$hashref->{$key}}) {
+           if($field =~ /Full Name/) { $name = $hashref->{$key}{$field}; }
+           if($field =~ /Birth/) { $birthday = $hashref->{$key}{$field}; }
+       }
+       if($name ne "" && $birthday ne "") { printf "%-30s %-10s\n",$name,$birthday; }
+    }
+}
+
+######################################################################
+# MAIN
+######################################################################
+
+###################################################
+# Open a connection to the database
+$dbh=DBI->connect("dbi:mysql:dbname=$dbname;host=$dbhost port=$dbport",$dbuser,$dbpass,{
+    AutoCommit=>0,
+    PrintError=>0}) or print "Connect Failure:".$DBI::errstr."\n" and exit 2;
+
+###################################################
+# Process command line options
+if(defined $opt_n) { $datadir = $opt_n; }
+else { $datadir = shift(@ARGV); }
+print "-> Processing all ward data files in $datadir\n";
+
+###################################################
+# Parse Ward Data Files
+&csv_to_hash("$datadir/Membership.csv",\%membership_data);
+&csv_to_hash("$datadir/HomeTeaching.csv",\%hometeaching_data);
+
+if($opt_v) {
+    print "-> Membership Data Dump\n\n";
+    &print_hash(\%membership_data);
+    print "-> HomeTeaching Data Dump\n\n";
+    &print_hash(\%hometeaching_data);
+}
+
+if($opt_b) { &print_birthdays(\%membership_data); }
+
+if($opt_s) { $dbh->disconnect(); exit; }
+
+###################################################
+# Disconnect from the database
+$dbh->disconnect();
+
+######################################################################
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/checkmark.gif b/checkmark.gif
deleted file mode 100644 (file)
index ae70f59..0000000
Binary files a/checkmark.gif and /dev/null differ
diff --git a/doc b/doc
deleted file mode 120000 (symlink)
index 01b66f7..0000000
--- a/doc
+++ /dev/null
@@ -1 +0,0 @@
-../../doc/phpgroupware-skel
\ No newline at end of file
diff --git a/eq.jpg b/eq.jpg
deleted file mode 100644 (file)
index 5f1886d..0000000
Binary files a/eq.jpg and /dev/null differ
diff --git a/eq.spec b/eq.spec
index 40621d6aeb8db0a1652532c111393966c595a1b9..a86bfbb819a1810887e9412152dacc39da287dd3 100644 (file)
--- a/eq.spec
+++ b/eq.spec
@@ -12,7 +12,7 @@
 %define httpdroot  /home/httpd/html/phpgroupware
 %define packaging 1
 
-Summary: Skeleton App for phpGroupWare. 
+Summary: Tools for Managing an Elders Quorum app for phpGroupWare. 
 Name: %{packagename}
 Version: %{version}
 Release: %{packaging}
@@ -27,7 +27,7 @@ requires: phpgroupware >= 0.9.10
 AutoReq: 0
 
 %description
-This is an Elder's Quorum Presidency Application.
+This is an Elders Quorum Presidency Application.
 
 %prep
 %setup -n %{phpgwdirname}
diff --git a/images/checkmark.gif b/images/checkmark.gif
new file mode 100644 (file)
index 0000000..ae70f59
Binary files /dev/null and b/images/checkmark.gif differ
diff --git a/images/x.gif b/images/x.gif
new file mode 100755 (executable)
index 0000000..12ed1d5
Binary files /dev/null and b/images/x.gif differ
diff --git a/images/x.psd b/images/x.psd
new file mode 100755 (executable)
index 0000000..8353958
Binary files /dev/null and b/images/x.psd differ
diff --git a/import_ward_data b/import_ward_data
deleted file mode 100755 (executable)
index bd707b4..0000000
+++ /dev/null
@@ -1,745 +0,0 @@
-#!/usr/bin/perl
-
-use DBI;
-use Getopt::Std;
-###################################################
-# GLOBALS
-$dbname = "phpgroupware";
-$dbhost = "192.168.0.2";
-$dbport = 3306;
-$dbuser = "phpgroupware";
-$dbpass = "phpgroupware";
-%hometeaching_data = ();
-%membership_data = ();
-getopts('vsn:o:');
-
-$monthname2num{'Jan'} = '01';
-$monthname2num{'Feb'} = '02';
-$monthname2num{'Mar'} = '03';
-$monthname2num{'Apr'} = '04';
-$monthname2num{'May'} = '05';
-$monthname2num{'Jun'} = '06';
-$monthname2num{'Jul'} = '07';
-$monthname2num{'Aug'} = '08';
-$monthname2num{'Sep'} = '09';
-$monthname2num{'Oct'} = '10';
-$monthname2num{'Nov'} = '11';
-$monthname2num{'Dec'} = '12';
-
-######################################################################
-# SUBROUTINES
-######################################################################
-sub csv_to_hash
-{
-    my ($filename, $hashref) = @_;
-
-    open(FILE,$filename) || die "-E- Could not open $filename for reading\n";
-
-    my $found_header = 0; my $index = 0;
-    while(<FILE>)
-    {
-       $line = $_;
-       @data = split /\",/, $line;
-       if(!$found_header) { @header = @data; $found_header = 1; }
-       else {
-           foreach $i (0..$#data-1) {
-               $data[$i] =~ s/\"//g;
-               $header[$i] =~ s/\"//g;
-               $hashref->{$index}{$header[$i]} = $data[$i];
-               #print "$index: $i: $header[$i]: $data[$i]\n";
-           }
-           $index++;
-       }
-    }
-    
-    close(FILE);
-}
-
-######################################################################
-sub print_hash
-{
-    my ($hashref) = @_;
-
-    foreach $key (sort {$a <=> $b} keys %$hashref) {
-       print "Index: $key\n";
-       foreach $field (keys %{$hashref->{$key}}) {
-           print "$field: $hashref->{$key}{$field}\n";
-       }
-       print "\n";
-    }
-}
-
-######################################################################
-
-# EQ_AARONIC
-#+-------+--------------------+------+-----+---------+-------+
-#| Field | Type               | Null | Key | Default | Extra |
-#+-------+--------------------+------+-----+---------+-------+
-#| aaronic | int(16) unsigned |      | PRI | 0       |   A   |
-#| name    | varchar(60)      | YES  |     | NULL    |       |
-#| phone   | varchar(12)      | YES  |     | NULL    |       |
-#| valid   | tinyint(1)       | YES  |     | NULL    |       |
-#+-------+--------------------+------+-----+---------+-------+
-sub update_eq_aaronic_table
-{
-    print "\n-> Updating eq_aaronic table\n";
-
-    # Set all records to be invalid. Only mark them as valid if they appear on the new list.
-    $sth = $dbh->prepare("update eq_aaronic set valid=0");
-    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-    
-    foreach $index (keys %membership_data)
-    {
-       $hashref = $membership_data{$index};
-       foreach $key (keys %$hashref) {
-           if($key =~ /Priesthood/i &&
-              ($membership_data{$index}{$key} =~ /^Deacon\s*$/i ||
-               $membership_data{$index}{$key} =~ /^Teacher\s*$/i ||
-               $membership_data{$index}{$key} =~ /^Priest\s*$/i)) {
-               $aaronic_name = $membership_data{$index}{'Preferred Name'};
-               $phone = $membership_data{$index}{'Phone 1'};
-               if($phone =~ /(\d\d\d-\d\d\d\d)/) { $phone = "970-$1"; }
-               if($phone =~ /^\(\d\d\d\) (\d\d\d-\d\d\d\d)/) { $phone = "$1-$2"; }
-               $sth = $dbh->prepare("select * from eq_aaronic where name='$aaronic_name'");
-               $sth->execute or die "-E- DB error: $DBI::errstr\n";
-               my @data = ();
-               while($sqlhashref = $sth->fetchrow_hashref) { push(@data, $sqlhashref); }
-               my $rows = scalar @data;
-               if($rows == 0) {
-                   # No existing records found for this aaronic, make a new entry
-                   print "   Adding new Aaronic: $aaronic_name\n";
-                   $sth = $dbh->prepare("insert into eq_aaronic values (NULL,'$aaronic_name','$phone',1)");
-                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
-               } elsif($rows == 1) {
-                   # An existing record was found for this aaronic, update it, mark it valid!
-                   print "   Updating existing aaronic: $aaronic_name\n";
-                   $sth = $dbh->prepare("update eq_aaronic set phone='$phone' where name='$aaronic_name'");
-                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update eq_aaronic set valid=1 where name='$aaronic_name'");
-                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
-               } else {
-                   # More than one record was found. Error! This shouldn't happen.
-                   print "   -E- More than one record found ($rows) for aaronic name: $aaronic_name\n";
-               }
-           }
-       }
-    }
-    $sth->finish();
-}
-
-# EQ_ELDER
-#+-------------+------------------+------+-----+---------+----------------+
-#| Field       | Type             | Null | Key | Default | Extra          |
-#+-------------+------------------+------+-----+---------+----------------+
-#| elder       | int(16) unsigned |      | PRI | NULL    | auto_increment |
-#| name        | varchar(60)      | YES  |     | NULL    |                |
-#| phone       | varchar(12)      | YES  |     | NULL    |                |
-#| ppi_pri     | int(10) unsigned | YES  |     | 1       |                |
-#| ppi_notes   | varchar(128)     | YES  |     | NULL    |                |
-#| int_pri     | int(10) unsigned | YES  |     | 1       |                |
-#| int_notes   | varchar(128)     | YES  |     | NULL    |                |
-#| attending   | tinyint(1)       | YES  |     | 0       |                |
-#| valid       | tinyint(1)       | YES  |     | NULL    |                |
-#+-------------+------------------+------+-----+---------+----------------+
-sub update_eq_elder_table
-{
-    print "\n-> Updating eq_elder table\n";
-
-    # Set all records to be invalid. Only mark them as valid if they appear on the new list.
-    $sth = $dbh->prepare("update eq_elder set valid=0");
-    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-    
-    foreach $index (keys %membership_data)
-    {
-       $hashref = $membership_data{$index};
-       foreach $key (keys %$hashref) {
-           if($key =~ /Priesthood/i && $membership_data{$index}{$key} =~ /Elder/i) {
-               $id = $membership_data{$index}{'Indiv ID'};
-               $elder_name = $membership_data{$index}{'Preferred Name'};
-               $phone = $membership_data{$index}{'Phone 1'};
-               $organization = $organization_by_id{$id};
-               $attending = 0;
-               if(($organization =~ /Elders/) ||
-                  ($organization =~ /Young Men/) ||
-                  ($organization =~ /Sunday School/) ||
-                  ($organization =~ /Primary/)
-                  ) { $attending = 1; }
-               if($phone =~ /(\d\d\d-\d\d\d\d)/) { $phone = "970-$1"; }
-               if($phone =~ /^\(\d\d\d\) (\d\d\d-\d\d\d\d)/) { $phone = "$1-$2"; }
-               $sth = $dbh->prepare("select * from eq_elder where name='$elder_name'");
-               $sth->execute or die "-E- DB error: $DBI::errstr\n";
-               my @data = ();
-               while($sqlhashref = $sth->fetchrow_hashref) { push(@data, $sqlhashref); }
-               my $rows = scalar @data;
-               if($rows == 0) {
-                   # No existing records found for this elder, make a new entry
-                   print "   Adding new Elder: $elder_name\n";
-                   $sth = $dbh->prepare("insert into eq_elder values (NULL,'$elder_name','$phone','1','','1','',$attending,1)");
-                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
-               } elsif($rows == 1) {
-                   # An existing record was found for this elder, update it
-                   print "   Updating existing Elder: $elder_name\n";
-                   $sth = $dbh->prepare("update eq_elder set valid=1 where name='$elder_name'");
-                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   if($phone ne "") { 
-                       $sth = $dbh->prepare("update eq_elder set phone='$phone' where name='$elder_name'");
-                   } else {
-                       $sth = $dbh->prepare("update eq_elder set phone=NULL where name='$elder_name'");
-                   }
-                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update eq_elder set attending='$attending' where name='$elder_name'");
-                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
-               } else {
-                   # More than one record was found. Error! This shouldn't happen.
-                   print "   -E- More than one record found ($rows) for Elder: $elder_name\n";
-               }
-           }
-       }
-    }
-    $sth->finish();
-}
-
-# EQ_CALLING
-#+--------------+------------------+------+-----+---------+-------+
-#| Field        | Type             | Null | Key | Default | Extra |
-#+--------------+------------------+------+-----+---------+-------+
-#| indiv_id     | int(16) unsigned | YES  |     | NULL    |       |
-#| name         | varchar(30)      | YES  |     | NULL    |       |
-#| organization | varchar(30)      | YES  |     | NULL    |       |
-#| position     | varchar(30)      | YES  |     | NULL    |       |
-#| sequence     | int(16) unsigned | YES  |     | NULL    |       |
-#| sustained    | date             | YES  |     | NULL    |       |
-#+--------------+------------------+------+-----+---------+-------+
-sub update_eq_calling_table()
-{
-    print "\n-> Updating eq_calling table\n";
-
-    #print "-> Organization Data Dump\n\n";
-    #&print_hash(\%organization_data);
-    
-    # Delete all records from the calling table. We have no history to
-    # save here. Just re-populate with the latest calling information.
-    $sth = $dbh->prepare("delete from eq_calling ");
-    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-    
-    foreach $index (keys %organization_data)
-    {
-       $indiv_id = $organization_data{$index}{'Indiv ID'};
-       $name = $organization_data{$index}{'Indiv Name'};
-       $name =~ s/\'/\\'/g; #'
-       $organization = $organization_data{$index}{'Organization'};
-       $organization_by_name{$name} = $organization;
-       $organization_by_id{$indiv_id} = $organization;
-       $position = $organization_data{$index}{'Position'};
-       $sequence = $organization_data{$index}{'Org Seq'};
-       $sustained = $organization_data{$index}{'Sustained'};
-       $sustained =~ /(\S+) (\d+)/; $month=$1; $year=$2;
-       if($name eq "") { next; }
-       print "   Adding new Calling: $name -> $position\n";
-       $sth = $dbh->prepare("insert into eq_calling values ('$indiv_id','$name','$organization','$position','$sequence','$month $year')");
-       $sth->execute or die "-E- DB error: $DBI::errstr\n";
-    }
-}
-
-# EQ_DISTRICT
-#+------------+------------------+------+-----+---------+-------+
-#| Field      | Type             | Null | Key | Default | Extra |
-#+------------+------------------+------+-----+---------+-------+
-#| district   | int(16) unsigned |      | PRI | 0       |       |
-#| name       | varchar(30)      | YES  |     | NULL    |       |
-#| supervisor | int(16) unsigned | YES  |     | NULL    |       |
-#| valid      | tinyint(1)       | YES  |     | NULL    |       |
-#+------------+------------------+------+-----+---------+-------+
-sub update_eq_district_table
-{
-    # Districts should be created by hand. This subroutine only
-    # updates the supervisor's ID in each district.
-    print "\n-> Updating eq_district table\n";
-    $sth = $dbh->prepare("select * from eq_district");
-    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-    while($sqlhashref = $sth->fetchrow_hashref) {
-       $supervisor_name = $sqlhashref->{name};
-       $district = $sqlhashref->{district};
-       $sth2 = $dbh->prepare("select * from eq_elder where name='$supervisor_name'");
-       $sth2->execute or die "-E- DB error: $DBI::errstr\n";
-       $sqlhashref2 = $sth2->fetchrow_hashref;
-       $supervisor_id = $sqlhashref2->{elder};
-       $sth2->finish();
-       $sth2 = $dbh->prepare("update eq_district set supervisor='$supervisor_id' where district='$district'");
-       $sth2->execute or die "-E- DB error: $DBI::errstr\n";
-       $sth2->finish();
-    }
-    $sth->finish();
-}
-
-# EQ_COMPANIONSHIP
-#+---------------+------------------+------+-----+---------+-------+
-#| Field         | Type             | Null | Key | Default | Extra |
-#+---------------+------------------+------+-----+---------+-------+
-#| companionship | int(16) unsigned |      |     | 0       |       |
-#| elder         | int(16) unsigned | YES  |     | NULL    |       |
-#| aaronic       | int(16) unsigned | YES  |     | NULL    |       |
-#| district      | int(16) unsigned | YES  |     | NULL    |       |
-#| valid         | tinyint(1)       | YES  |     | NULL    |       |
-#+---------------+------------------+------+-----+---------+-------+
-sub update_eq_companionship_table
-{
-    print "\n-> Updating eq_companionship table\n";
-
-    # First, mark all existing companionships as invalid in case they have been dissolved
-    $sth = $dbh->prepare("update eq_companionship set valid=0");
-    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-    # Second, mark all the aaronic invalid. We'll only mark the ones as valid that are assigned to hometeach
-    $sth = $dbh->prepare("update eq_aaronic set valid=0");
-    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-    
-    foreach $index (keys %hometeaching_data)
-    {
-       $hashref = $hometeaching_data{$index};
-       foreach $key (keys %$hashref) {
-           if($key =~ /Quorum/i && $hometeaching_data{$index}{$key} =~ /Elders/i) {
-               foreach $field ("Home Teacher 1","Home Teacher 2") {
-                   $elder_name = $hometeaching_data{$index}{$field};
-                   if($elder_name eq "") { next; }
-                   $sth2 = $dbh->prepare("select * from eq_elder where name='$elder_name'");
-                   $sth2->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sqlhashref2 = $sth2->fetchrow_hashref;
-                   $elder = $sqlhashref2->{elder};
-                   $aaronic = "NULL";
-                   if($elder eq "") {
-                       $sth2 = $dbh->prepare("select * from eq_aaronic where name='$elder_name'");
-                       $sth2->execute or die "-E- DB error: $DBI::errstr\n";
-                       $sqlhashref2 = $sth2->fetchrow_hashref;
-                       $aaronic = $sqlhashref2->{aaronic};
-                       $elder = "NULL";
-                       if($aaronic eq "") { print "-W- Unable to find $elder_name in eq_elder or eq_aaronic tables\n"; next; }
-                   } 
-                   $id = $hometeaching_data{$index}{'Comp ID'};
-                   $district = $hometeaching_data{$index}{'HT District'};
-                   $sth = $dbh->prepare("select * from eq_companionship where elder='$elder' and aaronic='$aaronic' and companionship='$id'");
-                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   my @data = ();
-                   while($sqlhashref = $sth->fetchrow_hashref) { push(@data, $sqlhashref); }
-                   my $rows = scalar @data;
-                   if($rows == 0) {
-                       # No existing records found for this companionship, make a new entry
-                       print "   Adding Companion to companionship: $elder_name -> $id\n";
-                       $sth = $dbh->prepare("insert into eq_companionship values ($id,'$elder','$aaronic','$district',1)");
-                       $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   } else {
-                       # An existing companionship was found for this companionship, update it
-                       $sth2 = $dbh->prepare("select * from eq_companionship where district='$district' and companionship='$id'");
-                       $sth2->execute or die "-E- DB error: $DBI::errstr\n";
-                       if($elder ne "NULL") {
-                           print "   Updating Companionship with Elder: $elder_name ($elder) -> $id\n";
-                           $sth = $dbh->prepare("update eq_companionship set district='$district' where elder='$elder' and companionship='$id'");
-                           $sth->execute or die "-E- DB error 'district': $DBI::errstr\n";
-                           $sth = $dbh->prepare("update eq_companionship set elder='$elder' where elder='$elder' and companionship='$id'");
-                           $sth->execute or die "-E- DB error 'elder': $DBI::errstr\n";
-                           $sth = $dbh->prepare("update eq_companionship set valid=1 where elder='$elder' and companionship='$id'");
-                           $sth->execute or die "-E- DB error 'valid': $DBI::errstr\n";
-                       } else {
-                           print "   Updating Companionship with Aaronic: $elder_name ($aaronic) -> $id\n";
-                           $sth = $dbh->prepare("update eq_companionship set district='$district' where aaronic='$aaronic' and companionship='$id'");
-                           $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                           $sth = $dbh->prepare("update eq_companionship set aaronic='$aaronic' where aaronic='$aaronic' and companionship='$id'");
-                           $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                           $sth = $dbh->prepare("update eq_companionship set valid=1 where aaronic='$aaronic' and companionship='$id'");
-                           $sth->execute or die "-E- DB error: $DBI::errstr\n";                            
-                           $sth = $dbh->prepare("update eq_aaronic set valid=1 where aaronic='$aaronic'");
-                           $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                       }
-                   }
-                   $sth->finish();
-                   $sth2->finish();                
-               }
-           }
-       }
-    }
-}
-
-# EQ_FAMILY
-#+---------------+------------------+------+-----+---------+-------+
-#| Field         | Type             | Null | Key | Default | Extra |
-#+---------------+------------------+------+-----+---------+-------+
-#| family        | int(16) unsigned |      | PRI | 0       |   A   |
-#| hofh_id       | int(16) unsigned | YES  |     | NULL    |       |
-#| name          | varchar(30)      | YES  |     | NULL    |       |
-#| name_id       | varchar(30)      | YES  |     | NULL    |       |
-#| elder_id      | int(16) unsigned | YES  |     | NULL    |       |
-#| companionship | int(16) unsigned | YES  |     | NULL    |       |
-#| visit_pri     | int(10) unsigned | YES  |     | 1       |       |
-#| visit_notes   | varchar(128)     | YES  |     | NULL    |       |
-#| valid         | tinyint(1)       | YES  |     | NULL    |       |
-#+---------------+------------------+------+-----+---------+-------+
-sub update_eq_family_table
-{
-    print "\n-> Updating eq_family table\n";
-
-    # Set all records to be invalid. Only mark them as valid if they appear on the new list.
-    $sth = $dbh->prepare("update eq_family set valid=0");
-    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-    $sth = $dbh->prepare("update eq_family set companionship=0");
-    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-    
-    foreach $index (keys %membership_data)
-    {
-       $hashref = $membership_data{$index};
-       foreach $key (keys %$hashref) {
-           if($key =~ /HH Position/i && $membership_data{$index}{$key} =~ /Head of Household/i) {
-               $family_name = $membership_data{$index}{'Preferred Name'};
-               $family_name =~ s/\'/\\'/g; #'
-               $id = $membership_data{$index}{'HofH ID'};
-               $name_id = uc($family_name);
-
-               # Find out how many families match this family's name
-               $sth = $dbh->prepare("select * from eq_family where name_id='$name_id'");
-               $sth->execute or die "-E- DB error: $DBI::errstr\n";
-               my @data = ();
-               while($sqlhashref = $sth->fetchrow_hashref) { push(@data, $sqlhashref); }
-               my $rows = scalar @data;
-               
-               if($rows == 0) {
-                   # No existing records found for this family, make a new entry
-                   print "   Adding new Family: $family_name\n";
-                   $sth = $dbh->prepare("insert into eq_family values (NULL,$id,'$family_name','$name_id','0','0','1','',1)");
-                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
-               } elsif($rows == 1) {
-                   # An existing record was found for this family, update it
-                   print "   Updating existing family: $family_name\n";
-                   $sth = $dbh->prepare("update eq_family set hofh_id=$id where name_id='$name_id'");
-                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update eq_family set valid=1 where name_id='$name_id'");
-                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
-               } else {
-                   # More than one record was found. Error! This shouldn't happen.
-                   print "   -E- More than one record found ($rows) for family name: $family_name\n";
-               }
-
-                # Now update the elder_id field for this family
-               $sth = $dbh->prepare("select * from eq_elder WHERE name='$family_name'");
-               $sth->execute or die "-E- DB error: $DBI::errstr\n";
-               while($sqlhashref = $sth->fetchrow_hashref) {
-                   $elder_id = $sqlhashref->{elder};
-                   print "   Updating family elder_id: $family_name -> $elder_id\n";
-                   $sth = $dbh->prepare("update eq_family set elder_id=$elder_id where name_id='$name_id'");
-                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
-               }
-               
-               # Now update the hometeaching field for this family
-               foreach $index (keys %hometeaching_data)
-               {
-                   $hashref = $hometeaching_data{$index};
-                   foreach $key (keys %$hashref) {
-                       if($hometeaching_data{$index}{'Household'} =~ /(\S+)\s+(\S+),\s+(\S+)\s+(.*)/) {
-                           $a = $1; $b = $2; $c = $3; $d = $4;
-                           if($family_name =~ /$a/ && $hometeaching_data{$index}{'Household'} !~ /$family_name/i) { 
-                               print "I: Adjusting hometeaching match from: $hometeaching_data{$index}{'Household'} to $a, $c $d\n";
-                               $hometeaching_data{$index}{'Household'} = "$a, $c $d";
-                           }
-                       }
-                       if($key =~ /Quorum/i &&
-                          $hometeaching_data{$index}{$key} =~ /Elders/i &&
-                          $hometeaching_data{$index}{'Household'} =~ /$family_name/i &&
-                          $data[0]->{companionship} != $hometeaching_data{$index}{'Comp ID'}
-                          )
-                       {
-                           print "   Updating hometeaching assignment for $family_name family\n";
-                           $companionship = $hometeaching_data{$index}{'Comp ID'};
-                           $sth = $dbh->prepare("update eq_family set companionship='$companionship' where name_id='$name_id'");
-                           $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                       }
-                   }
-               }
-               $sth->finish();
-           }
-       }
-    }
-}
-
-# EQ_PARENT
-#+----------+------------------+------+-----+---------+-------+
-#| Field    | Type             | Null | Key | Default | Extra |
-#+----------+------------------+------+-----+---------+-------+
-#| parent   | int(16) unsigned |      | PRI | 0       |   A   |
-#| family   | int(16) unsigned | YES  |     | NULL    |       |
-#| name     | varchar(30)      | YES  |     | NULL    |       |
-#| birthday | date             | YES  |     | NULL    |       |
-#| phone    | varchar(12)      | YES  |     | NULL    |       |
-#| address  | varchar(255)     | YES  |     | NULL    |       |
-#| indiv_id | int(16) unsigned | YES  | UNI | NULL    |       |
-#| valid    | tinyint(1)       | YES  |     | NULL    |       |
-#+----------+------------------+------+-----+---------+-------+
-sub update_eq_parent_table
-{
-    print "\n-> Updating eq_parent table\n";
-
-    # Set all records to be invalid. Only mark them as valid if they appear on the new list.
-    $sth = $dbh->prepare("update eq_parent set valid=0");
-    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-    
-    foreach $index (keys %membership_data)
-    {
-       $hashref = $membership_data{$index};
-       foreach $key (keys %$hashref) {
-           if($key =~ /HH Position/i &&
-              $membership_data{$index}{$key} =~ /Head of Household/i ||
-              $membership_data{$index}{$key} =~ /Spouse/i
-              ) {
-               # Get some information from the hash about this parent
-               $parent_name = $membership_data{$index}{'Preferred Name'};
-               $parent_name =~ s/\'/\\'/g; #'
-               $birthday = $membership_data{$index}{'Birth'};
-               $birthday =~ /(\d+) (\S+) (\d+)/; $day=$1; $month=$monthname2num{$2}; $year=$3;
-               $hofh_id = $membership_data{$index}{'HofH ID'};
-               $id = $membership_data{$index}{'Indiv ID'};
-               $phone = $membership_data{$index}{'Phone 1'};
-               if($phone =~ /(\d\d\d-\d\d\d\d)/) { $phone = "970-$1"; }
-               if($phone =~ /^\(\d\d\d\) (\d\d\d-\d\d\d\d)/) { $phone = "$1-$2"; }
-               $address = $membership_data{$index}{'Street 1'};
-               if($membership_data{$index}{'Street 2'} ne "") { 
-                   $address .= " " . $membership_data{$index}{'Street 2'};
-               }
-
-               # Find the family id for this parent's HofH_ID.
-               $sth = $dbh->prepare("select * from eq_family where hofh_id='$hofh_id' and valid=1");
-               $sth->execute or die "-E- DB error: $DBI::errstr\n";
-               my @family_data = ();
-               while($sqlhashref = $sth->fetchrow_hashref) { push(@family_data, $sqlhashref); }
-               my $family_rows = scalar @family_data;
-               if($family_rows > 0) { $family_id = $family_data[0]->{'family'}; }
-               else { $family_id = 0; }
-               
-               # Find out how many parents match this parent's name
-               $sth = $dbh->prepare("select * from eq_parent where name='$parent_name'");
-               $sth->execute or die "-E- DB error: $DBI::errstr\n";
-               my @data = ();
-               while($sqlhashref = $sth->fetchrow_hashref) { push(@data, $sqlhashref); }
-               my $rows = scalar @data;
-               
-               if($rows == 0 && $family_rows > 0) {
-                   # No existing records found for this parent, make a new entry
-                   print "   Adding new Parent: $parent_name\n";
-                   $sth = $dbh->prepare("insert into eq_parent values (NULL,$family_id,'$parent_name','$year-$month-$day','$phone','$address','$id',1)");
-                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
-               } elsif($rows == 1 && $family_rows > 0) {
-                   # An existing record was found for this parent, update it
-                   print "   Updating existing parent: $parent_name\n";
-                   $sth = $dbh->prepare("update eq_parent set family='$family_id' where name='$parent_name'");
-                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update eq_parent set birthday='$year-$month-$day' where name='$parent_name'");
-                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update eq_parent set phone='$phone' where name='$parent_name'");
-                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update eq_parent set address='$address' where name='$parent_name'");
-                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update eq_parent set valid=1 where name='$parent_name'");
-                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update eq_parent set indiv_id='$id' where name='$parent_name'");
-                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
-               } elsif($rows > 1) {
-                   # More than one record was found. Error! This shouldn't happen.
-                   print "   -E- More than one record found with same parent name: $parent_name with hofh_id: $hofh_id\n";
-               } else {
-                   print "   -E- Unable to find a family to attach this parent to: $parent_name with hofh_id: $hofh_id\n";
-               }
-               $sth->finish();
-           }
-       }
-    }
-}
-
-# EQ_CHILD
-#+----------+------------------+------+-----+---------+-------+
-#| Field    | Type             | Null | Key | Default | Extra |
-#+----------+------------------+------+-----+---------+-------+
-#| child    | int(16) unsigned |      | PRI | 0       |   A   |
-#| family   | int(16) unsigned | YES  |     | NULL    |       |
-#| name     | varchar(30)      | YES  |     | NULL    |       |
-#| birthday | date             | YES  |     | NULL    |       |
-#| indiv_id | int(16) unsigned | YES  | UNI | NULL    |       |
-#| valid    | tinyint(1)       | YES  |     | NULL    |       |
-#+----------+------------------+------+-----+---------+-------+
-sub update_eq_child_table
-{
-    print "\n-> Updating eq_child table\n";
-
-    # Set all records to be invalid. Only mark them as valid if they appear on the new list.
-    $sth = $dbh->prepare("update eq_child set valid=0");
-    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-    
-    foreach $index (keys %membership_data)
-    {
-       $hashref = $membership_data{$index};
-       foreach $key (keys %$hashref) {
-           if($key =~ /HH Position/i && $membership_data{$index}{$key} =~ /Other/i ) {
-               $child_name = $membership_data{$index}{'Full Name'};
-               $child_name =~ s/\'/\\'/g; #'
-               $birthday = $membership_data{$index}{'Birth'};
-               $birthday =~ /(\d+) (\S+) (\d+)/; $day=$1; $month=$monthname2num{$2}; $year=$3;
-               $id = $membership_data{$index}{'Indiv ID'};
-               $hofh_id = $membership_data{$index}{'HofH ID'};
-
-               # Find the family id for this child's HofH_ID.
-               $sth = $dbh->prepare("select * from eq_family where hofh_id='$hofh_id' and valid=1");
-               $sth->execute or die "-E- DB error: $DBI::errstr\n";
-               my @family_data = ();
-               while($sqlhashref = $sth->fetchrow_hashref) { push(@family_data, $sqlhashref); }
-               my $family_rows = scalar @family_data;
-               if($family_rows > 0) { $family_id = $family_data[0]->{'family'}; }
-               else { $family_id = 0; }
-               
-               # Find out how many children have the same name for the same family
-               $sth = $dbh->prepare("select * from eq_child where name='$child_name'");
-               $sth->execute or die "-E- DB error: $DBI::errstr\n";
-               my @data = ();
-               while($sqlhashref = $sth->fetchrow_hashref) { push(@data, $sqlhashref); }
-               my $rows = scalar @data;
-               
-               if($rows == 0 && $family_rows > 0) {
-                   # No existing records found for this child, make a new entry
-                   print "   Adding new Child: $child_name\n";
-                   $sth = $dbh->prepare("insert into eq_child values (NULL,$family_id,'$child_name','$year-$month-$day','$id',1)");
-                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
-               } elsif($rows == 1 && $family_rows > 0) {
-                   # An existing record was found for this child, update it
-                   print "   Updating existing child: $child_name\n";
-                   $sth = $dbh->prepare("update eq_child set family='$family_id' where name='$child_name'");
-                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update eq_child set birthday='$year-$month-$day' where name='$child_name'");
-                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update eq_child set valid=1 where name='$child_name'");
-                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update eq_child set indiv_id='$id' where name='$child_name'");
-                   $sth->execute or die "-E- DB error: $DBI::errstr\n";
-               } else {
-                   # More than one record was found. Error! This shouldn't happen.
-                   print "   -E- More than one record found ($rows) with same child name: $child_name\n";
-               }
-               $sth->finish();
-           }
-       }
-    }
-}
-
-######################################################################
-sub check_for_changed_ids
-{
-    # If the Indiv ID & HofH ID has changed between data sets, we could have problems
-    my ($oldhashref, $newhashref) = @_;
-    my $found_problem = 0;
-    
-    foreach $oldindex (keys %$oldhashref)
-    {
-       $indiv_id = $oldhashref->{$oldindex}{'Indiv ID'};
-       $hofh_id  = $oldhashref->{$oldindex}{'HofH ID'};
-       $full_name = $oldhashref->{$oldindex}{'Full Name'};
-       $hh_position = $oldhashref->{$oldindex}{'HH Position'};
-       if($hh_position =~ /Other/i) { next; }
-
-       foreach $newindex (keys %$newhashref)
-       {
-           if($newhashref->{$newindex}{'Full Name'} eq $full_name &&
-              $indiv_id != $newhashref->{$newindex}{'Indiv ID'})
-           {
-               print "-W- Indiv ID for $full_name changed from $indiv_id to $newhashref->{$newindex}{'Indiv ID'}\n";
-               $found_problem = 1;
-           }
-
-           if($newhashref->{$newindex}{'Full Name'} eq $full_name &&
-              $hofh_id != $newhashref->{$newindex}{'HofH ID'})
-           {
-               print "-W- HofH ID for $full_name changed from $hofh_id to $newhashref->{$newindex}{'HofH ID'}\n";
-               $found_problem = 1;
-           }
-       }
-    }
-    
-    return $found_problem;
-}
-
-######################################################################
-# MAIN
-######################################################################
-
-###################################################
-# Open a connection to the database
-$dbh=DBI->connect("dbi:mysql:dbname=$dbname;host=$dbhost port=$dbport",$dbuser,$dbpass,{
-    AutoCommit=>0,
-    PrintError=>0}) or print "Connect Failure:".$DBI::errstr."\n" and exit 2;
-
-###################################################
-# Check old directory against new directory to ensure
-# that the Indiv ID & HofH ID have not changed between updates
-if(defined $opt_o) {
-    print "-> Comparing old data files to new ones: $opt_o => $opt_n\n";
-    my %old_membership_data = ();
-    my %new_membership_data = ();
-    &csv_to_hash("$opt_o/Membership.csv",\%old_membership_data);
-    &csv_to_hash("$opt_n/Membership.csv",\%new_membership_data);
-
-    $changed_ids=&check_for_changed_ids(\%old_membership_data, \%new_membership_data);
-    
-    if($changed_ids) {
-       print "\n";
-       print "-E- Some Indiv IDs and HofH IDs have changed for Head of Households between \n";
-       print "    $opt_o and $opt_n data sets.\n";
-       print "    This script is not currently setup to handle this properly.\n";
-       print "\n";
-       print "    Exiting without updating...\n\n";
-       exit;
-    }
-}
-
-###################################################
-# Process command line options
-if(defined $opt_n) { $datadir = $opt_n; }
-else { $datadir = shift(@ARGV); }
-print "\n-> Processing all ward data files in $datadir\n";
-
-###################################################
-# Parse Ward Data Files
-&csv_to_hash("$datadir/Membership.csv",\%membership_data);
-&csv_to_hash("$datadir/HomeTeaching.csv",\%hometeaching_data);
-&csv_to_hash("$datadir/Organization.csv",\%organization_data);
-%organization_by_name = ();
-%organization_by_id = ();
-
-if($opt_v) {
-    print "-> Membership Data Dump\n\n";
-    &print_hash(\%membership_data);
-    print "-> HomeTeaching Data Dump\n\n";
-    &print_hash(\%hometeaching_data);
-    print "-> Organization Data Dump\n\n";
-    &print_hash(\%organization_data);
-}
-
-if($opt_s) { $dbh->disconnect(); exit; }
-
-# Now update the various eq DB tables
-&update_eq_calling_table();
-&update_eq_elder_table();
-&update_eq_aaronic_table();
-&update_eq_district_table();
-&update_eq_companionship_table();
-&update_eq_family_table();
-&update_eq_parent_table();
-&update_eq_child_table();
-
-###################################################
-# Disconnect from the database
-$dbh->disconnect();
-
-######################################################################
-
-
-
-
-
-
-
-
-
-
-
-
index 9bc77a08047864924c5f710379d6b678ce167707..4198742697a8bd37196a62f2f05f8f6d326404a3 100644 (file)
@@ -8,7 +8,7 @@
   *  Free Software Foundation; either version 2 of the License, or (at your  *
   *  option) any later version.                                              *
   \**************************************************************************/
-       /* $Id: class.eq.inc.php,v 1.1.1.1 2001/05/20 07:40:32 seek3r Exp $ */
+      /* $Id: class.eq.inc.php,v 1.1.1.1 2005/07/20 07:40:32 ajp Exp $ */
 
 class eq
 {
@@ -26,11 +26,13 @@ class eq
   var $default_int_num_years;
   var $default_vis_num_years;
   var $default_att_num_quarters;
+  var $max_num_districts;
   var $current_year;
   var $current_month;
   var $upload_target_path;
   var $script_path;
   var $max_appointments;
+  var $max_presidency_members;
   
   var $public_functions = array
     (
@@ -65,6 +67,9 @@ class eq
  
   function eq()
     {
+      // LOCAL CONFIGURATION. PLEASE UPDATE AS APPROPRIATE.
+      $this->upload_target_path = "/home/users/eqpres/eq_data/";
+      $this->script_path = "/usr/share/phpgroupware/eq/bin/";
       $this->default_ht_num_months = 3;
       $this->default_ppi_num_months = 3;
       $this->default_ppi_num_years = 0;
@@ -72,9 +77,10 @@ class eq
       $this->default_int_num_years = 0;
       $this->default_att_num_quarters = 1;
       $this->default_vis_num_years = 1;
+      $this->max_num_districts = 4;
+      $this->max_presidency_members = 99;
       $this->max_appointments = 32768;
-      $this->upload_target_path = "/home/users/eqpres/eq_data/";
-      $this->script_path = "/usr/share/phpgroupware/eq/";
+      // END LOCAL CONFIGURATION
       
       $this->db                = $GLOBALS['phpgw']->db;
       $this->db2       = $this->db;
@@ -91,7 +97,7 @@ class eq
                                 mondayFirst : false,
                                 weekNumbers : false';
        
-      $GLOBALS['phpgw_info']['flags']['app_header'] = 'Elders Quorum Tools';
+      $GLOBALS['phpgw_info']['flags']['app_header'] = 'Elders Quorum Tools - The 3rd Counselor';
       $GLOBALS['phpgw']->common->phpgw_header();
 
       $this->current_day = `date '+%d'`;
@@ -313,10 +319,10 @@ class eq
                if($this->db2->next_record()) {
                  if($this->db2->f('visited') == 'y') {
                    $visits[$m]++; $total_visits[$m]++;           
-                   $table_data .= '<td align=center><a href="'.$link.'"><img src="checkmark.gif"></a></td>';
+                   $table_data .= '<td align=center><a href="'.$link.'"><img src="images/checkmark.gif"></a></td>';
                  }
                  else if($this->db2->f('visited') == 'n') {
-                   $table_data .= '<td align=center><a href="'.$link.'"><img src="x.gif"></a></td>';
+                   $table_data .= '<td align=center><a href="'.$link.'"><img src="images/x.gif"></a></td>';
                  }
                  else {
                    $visits[$m]++; $total_visits[$m]++;
@@ -1070,14 +1076,14 @@ class eq
            }
          }
          if($checkmark) {
-           $part_table .= '<td align=center><img src="checkmark.gif">';
+           $part_table .= '<td align=center><img src="images/checkmark.gif">';
            $part_table .= '<font size=-2>'.$num_matches.'</font><br>';
            $part_table .= '<font size=-2>'.$date.'</font></td>';
          } else {
            $part_table .= '<td>&nbsp;</td>';
          }
        }
-       if($participated) { $part_table .= '<td align=center><img src="checkmark.gif">'.$participated.'</td>'; }
+       if($participated) { $part_table .= '<td align=center><img src="images/checkmark.gif">'.$participated.'</td>'; }
        else { $part_table .= '<td>&nbsp;</td>'; }
        $this->t->set_var('part_table',$part_table);
        $this->t->fp('list2','elder_list',True);
@@ -1194,10 +1200,10 @@ class eq
            if($this->db->f('willing') == 'y') {
              $total_willing[$j]++;
              $elder_willing=1;
-             $willing_table .= '<td align=center><img src="checkmark.gif"><br><font size=-2>'.$date_part.'</font></td></td>';
+             $willing_table .= '<td align=center><img src="images/checkmark.gif"><br><font size=-2>'.$date_part.'</font></td></td>';
            }
            else if($this->db->f('willing') == 'n') {
-             $willing_table .= '<td align=center><img src="x.gif"></td>';
+             $willing_table .= '<td align=center><img src="images/x.gif"></td>';
            }
            else {
              $elder_willing=1;
@@ -2079,7 +2085,7 @@ class eq
       $appt_table_data = ""; 
 
       // Find out what the EQ Presidency ID is
-      $sql = "SELECT * FROM eq_presidency where president=0 and counselor=0 and secretary=0 and valid=1";
+      $sql = "SELECT * FROM eq_presidency where eqpres=1 and valid=1";
       $this->db->query($sql,__LINE__,__FILE__);
       if($this->db->next_record()) {
        $presidency_name = $this->db->f('name');
@@ -2387,7 +2393,7 @@ class eq
            $month = $date_array[1];
            $day   = $date_array[2];
            $link = $GLOBALS['phpgw']->link('/eq/index.php',$link_data);
-           $table_data .= '<td align=center><a href='.$link.'><img src="checkmark.gif">&nbsp;'.$month.'-'.$day.'</a></td>';
+           $table_data .= '<td align=center><a href='.$link.'><img src="images/checkmark.gif">&nbsp;'.$month.'-'.$day.'</a></td>';
          }
          else { $table_data .= "<td>&nbsp;</td>"; }
        }
@@ -2684,7 +2690,7 @@ class eq
                  $month = $date_array[1];
                  $day   = $date_array[2];
                  $link = $GLOBALS['phpgw']->link('/eq/index.php',$link_data);
-                 $table_data .= '<td align=center><a href='.$link.'><img src="checkmark.gif">&nbsp;'.$month.'-'.$day.'</a></td>';
+                 $table_data .= '<td align=center><a href='.$link.'><img src="images/checkmark.gif">&nbsp;'.$month.'-'.$day.'</a></td>';
                }
                else { $table_data .= "<td>&nbsp;</td>"; }
              }
@@ -3191,7 +3197,7 @@ class eq
              $attended[$i][$cur_month]=1;
              $attendance[$monthnum[$cur_month]]++;
            } 
-           $att_table .= '<td align=center><img src="checkmark.gif"></td>';
+           $att_table .= '<td align=center><img src="images/checkmark.gif"></td>';
          } else {
            $att_table .= '<td>&nbsp;</td>';
          }
@@ -3805,13 +3811,27 @@ class eq
       $this->t->set_block('admin_t','upload','uploadhandle');
       $this->t->set_block('admin_t','admin','adminhandle');
       $this->t->set_block('admin_t','cmd','cmdhandle');
+      $this->t->set_block('admin_t','presidency','presidencyhandle');
       
       $this->t->set_var('upload_action',$GLOBALS['phpgw']->link('/eq/index.php','menuaction=eq.eq.admin&action=upload'));
+      $this->t->set_var('presidency_action',$GLOBALS['phpgw']->link('/eq/index.php','menuaction=eq.eq.admin&action=presidency'));
       
       $action = get_var('action',array('GET','POST'));
 
       $this->t->pfp('out','admin_t');
-      
+
+      $sql = "SELECT * FROM eq_elder where valid=1 ORDER BY elder ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      while ($this->db->next_record())
+       {
+         $elder_id[$i] = $this->db->f('elder');
+         $elder_name[$i] = $this->db->f('name');
+         $elder2name[$elder_id[$i]] = $elder_name[$i];
+         $i++;
+       }
+      array_multisort($elder_name, $elder_id);
+
       if($action == 'upload')
        {        
          $target_path = $this->upload_target_path . basename( $_FILES['uploadedfile']['name']);
@@ -3915,12 +3935,238 @@ class eq
            $this->t->pfp('uploadhandle','upload',True);
          }
        }
+      else if($action == "presidency")
+       {
+         $new_data = get_var('eqpres',array('POST'));
+         foreach ($new_data as $entry)
+          {
+            $id = $entry['id'];
+            $email = $entry['email'];
+            $elder = $entry['elder'];
+            $name = $entry['name'];
+            $district = $entry['district'];
+            $president = $entry['president'];
+            $counselor = $entry['counselor'];
+            $secretary = $entry['secretary'];
+            $eqpresidency = $entry['eqpresidency'];
+            // Set the elder id to 0 for EQ Presidency tagged entry
+            if($eqpresidency == 1) { $elder="0"; }
+            // Re-look up the elder name for the ID if we aren't an EQ Presidency tagged entry
+            else { $name = $elder2name[$elder]; }
+            //print "id=$id elder=$elder name=$name email=$email district=$district president=$president ";
+            //print "counselor=$counselor secretary=$secretary eqpres=$eqpresidency<br>";
+
+            if(($elder > 0) || ($name != "")) {
+              if($id < $this->max_presidency_members) {
+                //print "Updating Existing Entry<br>";
+                $this->db2->query("UPDATE eq_presidency set" .
+                                  " elder=" . $elder . 
+                                  " ,district=" . $district . 
+                                  " ,name='" . $name . "'" .
+                                  " ,email='" . $email . "'" .
+                                  " ,president='" . $president . "'" .
+                                  " ,counselor='" . $counselor . "'" .
+                                  " ,secretary='" . $secretary . "'" .
+                                  " ,eqpres='" . $eqpresidency . "'" .
+                                  " WHERE presidency=" . $id,__LINE__,__FILE__);
+                
+              } else {
+                //print "Adding New Entry<br>";
+                $this->db2->query("INSERT INTO eq_presidency (presidency,elder,district,name,"
+                                  . "email,president,counselor,secretary,eqpres,valid) "
+                                  . "VALUES (NULL,'" . $elder . "','" . $district . "','"
+                                  . $name . "','" . $email . "','" . $president  . "','"
+                                  . $counselor . "','" . $secretary . "','" . $eqpres  . "','1'"
+                                  .")",__LINE__,__FILE__);
+              }
+            } else {
+              //print "Ignoring Blank Entry<br>";
+            }
+          }
+
+         // Now update the eq_district table appropriately
+         
+         // Delete all the previous district entries from the table
+         $this->db->query("DELETE from eq_district where valid=1",__LINE__,__FILE__);
+         $this->db->query("DELETE from eq_district where valid=0",__LINE__,__FILE__);
+
+         // Always add a "District 0" assigned to the High Priests Group
+         $district = 0;
+         $name = "High Priests";
+         $elder = 0;
+         $valid = 0;
+         $this->db2->query("INSERT INTO eq_district (district,name,supervisor,valid) "
+                           . "VALUES ('" . $district . "','" . $name . "','"
+                           . $elder . "','" . $valid . "'"
+                           .")",__LINE__,__FILE__);
+         
+         
+         // Requery the eq_presidency table
+         $sql = "SELECT * FROM eq_presidency where valid=1";
+         $this->db->query($sql,__LINE__,__FILE__);
+         while ($this->db->next_record())
+           {
+             // Extract the data for each presidency record
+             $id = $this->db->f('presidency');
+             $elder = $this->db->f('elder');
+             $name = $this->db->f('name');
+             $district = $this->db->f('district');
+             $name = $this->db->f('name');
+             $valid = 1;
+
+             // If we have a valid district, add it to the district table
+             if($district > 0) {
+               $this->db2->query("INSERT INTO eq_district (district,name,supervisor,valid) "
+                                 . "VALUES ('" . $district . "','" . $name . "','"
+                                 . $elder . "','" . $valid . "'"
+                                 .")",__LINE__,__FILE__);
+             }
+             
+           }
+         
+         $this->t->set_var('adminhandle','');
+         $this->t->pfp('adminhandle','admin'); 
+       }
       else
        {
          $this->t->set_var('adminhandle','');
          $this->t->pfp('adminhandle','admin'); 
        }
+
+      // Now save off the data needed for an EQ Presidency Table Update
       
+      $sql = "SELECT * FROM eq_presidency where valid=1";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $table_data = "";
+      $header_row = "<th>Elder</th><th>Email</th><th>District</th><th>President</th><th>Counselor</th><th>Secretary</th><th>EQ Presidency</th>";
+      while ($this->db->next_record())
+       {
+         // Extract the data for each presidency record
+         $id = $this->db->f('presidency');
+         $elder = $this->db->f('elder');
+         $district = $this->db->f('district');
+         $name = $this->db->f('name');
+         $email = $this->db->f('email');
+         $president = $this->db->f('president');
+         $counselor = $this->db->f('counselor');
+         $secretary = $this->db->f('secretary');
+         $eqpresidency = $this->db->f('eqpres');
+
+         // Create the forms needed in the table
+         $table_data .= "<tr bgcolor=". $this->t->get_var('tr_color') .">";
+         
+         // Presidency ID
+         $table_data .= '<input type=hidden name="eqpres['.$id.'][id]" value="'.$id.'">';
+         
+         // Elder
+         if($eqpresidency == 0) { 
+           $table_data.= '<td align=center><select name="eqpres['.$id.'][elder]">';
+           $table_data.= '<option value=0></option>';  
+           for ($j=0; $j < count($elder_id); $j++) {
+             $tmp_id = $elder_id[$j];
+             $name = $elder_name[$j];
+             if($elder_id[$j] == $elder) { $eldername = $name; $selected = 'selected="selected"'; } else { $selected = ''; }
+             $table_data.= '<option value='.$tmp_id.' '.$selected.'>'.$name.'</option>';
+           }
+           $table_data.='</select></td>';
+           $table_data.='<input type=hidden name="eqpres['.$id.'][name]" value="'.$eldername.'">';
+         } else {
+           $table_data.= '<td align=left><input type=text size="20" name="eqpresname" value="EQ Presidency"></td>';
+           $table_data.= '<input type=hidden name="eqpres['.$id.'][name]" value="EQ Presidency">';
+         }
+           
+         // Email Address
+         $table_data .= '<td><input type="text" size="50" name="eqpres['.$id.'][email]" value="'.$email.'"></td>';
+         
+         // District
+         $table_data.= '<td align=center><select name="eqpres['.$id.'][district]">';
+         $table_data.= '<option value=0></option>';
+         for ($j=0; $j <= $this->max_num_districts; $j++) {
+           if($district == $j) { $selected = 'selected="selected"'; } else { $selected = ''; }
+           $table_data.= '<option value='.$j.' '.$selected.'>'.$j.'</option>';
+         }
+         $table_data.='</select></td>';
+         
+         // President
+         $table_data.= '<td align=center><select name="eqpres['.$id.'][president]">';
+         if($president == 1) { $table_data .= '<option value=0>0</option><option value=1 selected="selected">1</option>'; }
+         else { $table_data .= '<option value=0 selected="selected">0</option><option value=1>1</option>'; }
+         $table_data.='</select></td>';
+         
+         // Counselor
+         $table_data.= '<td align=center><select name="eqpres['.$id.'][counselor]">';
+         if($counselor == 1) { $table_data .= '<option value=0>0</option><option value=1 selected="selected">1</option>'; }
+         else { $table_data .= '<option value=0 selected="selected">0</option><option value=1>1</option>'; }
+         $table_data.='</select></td>';
+
+         // Secretary
+         $table_data.= '<td align=center><select name="eqpres['.$id.'][secretary]">';
+         if($secretary == 1) { $table_data .= '<option value=0>0</option><option value=1 selected="selected">1</option>'; }
+         else { $table_data .= '<option value=0 selected="selected">0</option><option value=1>1</option>'; }
+         $table_data.='</select></td>';
+
+         // EQ Presidency
+         $table_data.= '<td align=center><select name="eqpres['.$id.'][eqpresidency]">';
+         if($eqpresidency == 1) { $table_data .= '<option value=0>0</option><option value=1 selected="selected">1</option>'; }
+         else { $table_data .= '<option value=0 selected="selected">0</option><option value=1>1</option>'; }
+         $table_data.='</select></td>';
+
+         // End of ROW
+         $table_data .= "</tr>\n";
+         $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
+         $this->t->set_var('tr_color',$tr_color);
+       }
+
+      // Now create 1 blank row to always have a line available to add a new elder with
+      $id = $this->max_presidency_members;
+      $table_data .= "<tr bgcolor=". $this->t->get_var('tr_color') .">";
+      // Presidency ID
+      $table_data .= '<input type=hidden name="eqpres['.$id.'][id]" value="'.$id.'">';
+      // Elder
+      $table_data.= '<td align=center><select name="eqpres['.$id.'][elder]">';
+      $table_data.= '<option value=0></option>';  
+      for ($j=0; $j < count($elder_id); $j++) {
+       $tmp_id = $elder_id[$j];
+       $name = $elder_name[$j];
+       $table_data.= '<option value='.$tmp_id.'>'.$name.'</option>';
+      }
+      $table_data.='</select></td>';
+      $table_data.='<input type=hidden name="eqpres['.$id.'][name]" value="">';
+      // Email Address
+      $table_data.='<td><input type="text" size="50" name="eqpres['.$id.'][email]" value=""></td>';
+      // District
+      $table_data.= '<td align=center><select name="eqpres['.$id.'][district]">';
+      $table_data.= '<option value=0></option>';
+      for ($j=0; $j <= $this->max_num_districts; $j++) {
+       if($j == 0) { $selected = 'selected="selected"'; } else { $selected = ''; }
+       $table_data.= '<option value='.$j.' '.$selected.'>'.$j.'</option>';
+      }
+      $table_data.='</select></td>';
+      // President
+      $table_data.= '<td align=center><select name="eqpres['.$id.'][president]">';
+      $table_data.= '<option value=0>0</option><option value=1>1</option>';
+      $table_data.='</select></td>';
+      // Counselor
+      $table_data.= '<td align=center><select name="eqpres['.$id.'][counselor]">';
+      $table_data.= '<option value=0>0</option><option value=1>1</option>';
+      $table_data.='</select></td>';
+      // Secretary
+      $table_data.= '<td align=center><select name="eqpres['.$id.'][secretary]">';
+      $table_data.= '<option value=0>0</option><option value=1>1</option>';
+      $table_data.='</select></td>';
+      // EQ Presidency
+      $table_data.= '<td align=center><select name="eqpres['.$id.'][eqpresidency]">';
+      $table_data.= '<option value=0>0</option><option value=1>1</option>';
+      $table_data.='</select></td>';
+      // End of ROW
+      $table_data .= "</tr>\n";
+      $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
+      $this->t->set_var('tr_color',$tr_color);
+      
+      $this->t->set_var('header_row',$header_row);
+      $this->t->set_var('table_data',$table_data);
+      $this->t->pfp('presidencyhandle','presidency',True);
+
       $this->save_sessiondata();   
     }
 
diff --git a/parse_ward_data b/parse_ward_data
deleted file mode 100755 (executable)
index 82a1730..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-#!/usr/bin/perl
-
-use DBI;
-use Getopt::Std;
-###################################################
-# GLOBALS
-$dbname = "phpgroupware";
-$dbhost = "192.168.0.2";
-$dbport = 3306;
-$dbuser = "phpgroupware";
-$dbpass = "phpgroupware";
-%hometeaching_data = ();
-%membership_data = ();
-getopts('vsn:o:b');
-
-$monthname2num{'Jan'} = '01';
-$monthname2num{'Feb'} = '02';
-$monthname2num{'Mar'} = '03';
-$monthname2num{'Apr'} = '04';
-$monthname2num{'May'} = '05';
-$monthname2num{'Jun'} = '06';
-$monthname2num{'Jul'} = '07';
-$monthname2num{'Aug'} = '08';
-$monthname2num{'Sep'} = '09';
-$monthname2num{'Oct'} = '10';
-$monthname2num{'Nov'} = '11';
-$monthname2num{'Dec'} = '12';
-
-######################################################################
-# SUBROUTINES
-######################################################################
-sub csv_to_hash
-{
-    my ($filename, $hashref) = @_;
-
-    open(FILE,$filename) || die "-E- Could not open $filename for reading\n";
-
-    my $found_header = 0; my $index = 0;
-    while(<FILE>)
-    {
-       $line = $_;
-       @data = split /\",/, $line;
-       if(!$found_header) { @header = @data; $found_header = 1; }
-       else {
-           foreach $i (0..$#data-1) {
-               $data[$i] =~ s/\"//g;
-               $header[$i] =~ s/\"//g;
-               $hashref->{$index}{$header[$i]} = $data[$i];
-               #print "$index: $i: $header[$i]: $data[$i]\n";
-           }
-           $index++;
-       }
-    }
-    
-    close(FILE);
-}
-
-######################################################################
-sub print_hash
-{
-    my ($hashref) = @_;
-
-    foreach $key (sort {$a <=> $b} keys %$hashref) {
-       print "Index: $key\n";
-       foreach $field (keys %{$hashref->{$key}}) {
-           print "$field: $hashref->{$key}{$field}\n";
-       }
-       print "\n";
-    }
-}
-
-######################################################################
-sub print_birthdays
-{
-    my ($hashref) = @_;
-
-    foreach $key (sort {$a <=> $b} keys %$hashref) {
-       $name = "";
-       $birthday = "";
-       foreach $field (keys %{$hashref->{$key}}) {
-           if($field =~ /Full Name/) { $name = $hashref->{$key}{$field}; }
-           if($field =~ /Birth/) { $birthday = $hashref->{$key}{$field}; }
-       }
-       if($name ne "" && $birthday ne "") { printf "%-30s %-10s\n",$name,$birthday; }
-    }
-}
-
-######################################################################
-# MAIN
-######################################################################
-
-###################################################
-# Open a connection to the database
-$dbh=DBI->connect("dbi:mysql:dbname=$dbname;host=$dbhost port=$dbport",$dbuser,$dbpass,{
-    AutoCommit=>0,
-    PrintError=>0}) or print "Connect Failure:".$DBI::errstr."\n" and exit 2;
-
-###################################################
-# Process command line options
-if(defined $opt_n) { $datadir = $opt_n; }
-else { $datadir = shift(@ARGV); }
-print "-> Processing all ward data files in $datadir\n";
-
-###################################################
-# Parse Ward Data Files
-&csv_to_hash("$datadir/Membership.csv",\%membership_data);
-&csv_to_hash("$datadir/HomeTeaching.csv",\%hometeaching_data);
-
-if($opt_v) {
-    print "-> Membership Data Dump\n\n";
-    &print_hash(\%membership_data);
-    print "-> HomeTeaching Data Dump\n\n";
-    &print_hash(\%hometeaching_data);
-}
-
-if($opt_b) { &print_birthdays(\%membership_data); }
-
-if($opt_s) { $dbh->disconnect(); exit; }
-
-###################################################
-# Disconnect from the database
-$dbh->disconnect();
-
-######################################################################
-
-
-
-
-
-
-
-
-
-
-
-
index a144ba461865f0d6875c921a1bf63d5bcf2f21df..74e5dc198dc4a4f4064ae2deece403bbcf812a40 100644 (file)
        $setup_info['eq']['maintainer_email'] = 'apippin@pippins.net';
        
        /* The tables this app creates */
-       /* $setup_info['eq']['tables']    = Array('eq'); */
+       $setup_info['eq']['tables'][] = 'eq_aaronic';
+       $setup_info['eq']['tables'][] = 'eq_activity';
+       $setup_info['eq']['tables'][] = 'eq_appointment';
+       $setup_info['eq']['tables'][] = 'eq_assignment';
+       $setup_info['eq']['tables'][] = 'eq_attendance';
+       $setup_info['eq']['tables'][] = 'eq_calling';
+       $setup_info['eq']['tables'][] = 'eq_child';
+       $setup_info['eq']['tables'][] = 'eq_companionship';
+       $setup_info['eq']['tables'][] = 'eq_district';
+       $setup_info['eq']['tables'][] = 'eq_elder';
+       $setup_info['eq']['tables'][] = 'eq_family';
+       $setup_info['eq']['tables'][] = 'eq_interview';
+       $setup_info['eq']['tables'][] = 'eq_parent';
+       $setup_info['eq']['tables'][] = 'eq_participation';
+       $setup_info['eq']['tables'][] = 'eq_ppi';
+       $setup_info['eq']['tables'][] = 'eq_presidency';
+       $setup_info['eq']['tables'][] = 'eq_visit';
+       $setup_info['eq']['tables'][] = 'eq_willingness';
 
        /* The hooks this app includes, needed for hooks registration */
        $setup_info['eq']['hooks'] = Array(
diff --git a/sql/dot.cmd b/sql/dot.cmd
new file mode 100755 (executable)
index 0000000..9bd21b9
--- /dev/null
@@ -0,0 +1 @@
+dot -Tjpg -o eq.jpg schema.dot 
diff --git a/sql/eq.jpg b/sql/eq.jpg
new file mode 100644 (file)
index 0000000..7c1ff2d
Binary files /dev/null and b/sql/eq.jpg differ
diff --git a/sql/eq.sql b/sql/eq.sql
new file mode 100644 (file)
index 0000000..3649953
--- /dev/null
@@ -0,0 +1,256 @@
+-- MySQL dump 10.11
+--
+-- Host: localhost    Database: phpgroupware
+-- ------------------------------------------------------
+
+--
+-- Current Database: `phpgroupware`
+--
+
+CREATE DATABASE /*!32312 IF NOT EXISTS*/ `phpgroupware` /*!40100 DEFAULT CHARACTER SET latin1 */;
+
+USE `phpgroupware`;
+
+--
+-- Table structure for table `eq_aaronic`
+--
+CREATE TABLE `eq_aaronic` (
+  `aaronic` int(16) unsigned NOT NULL auto_increment,
+  `name` varchar(60) default NULL,
+  `phone` varchar(12) default NULL,
+  `valid` tinyint(1) default NULL,
+  PRIMARY KEY  (`aaronic`)
+) ENGINE=MyISAM AUTO_INCREMENT=92 DEFAULT CHARSET=latin1;
+
+
+--
+-- Table structure for table `eq_activity`
+--
+CREATE TABLE `eq_activity` (
+  `activity` int(16) unsigned NOT NULL auto_increment,
+  `assignment` int(16) unsigned NOT NULL,
+  `date` date default NULL,
+  `notes` text,
+  PRIMARY KEY  (`activity`),
+  KEY `assignment` (`assignment`)
+) ENGINE=MyISAM AUTO_INCREMENT=33 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `eq_appointment`
+--
+CREATE TABLE `eq_appointment` (
+  `appointment` int(16) unsigned NOT NULL auto_increment,
+  `presidency` int(16) unsigned NOT NULL default '0',
+  `family` int(16) unsigned default '0',
+  `elder` int(16) unsigned default '0',
+  `date` date NOT NULL default '0000-00-00',
+  `time` time NOT NULL default '00:00:00',
+  `uid` bigint(64) unsigned NOT NULL default '0',
+  PRIMARY KEY  (`appointment`)
+) ENGINE=MyISAM AUTO_INCREMENT=132 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `eq_assignment`
+--
+CREATE TABLE `eq_assignment` (
+  `assignment` int(12) unsigned NOT NULL auto_increment,
+  `name` varchar(60) NOT NULL,
+  `code` varchar(12) default NULL,
+  PRIMARY KEY  (`assignment`)
+) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=latin1;
+
+--
+-- Dumping data for table `eq_assignment`
+--
+LOCK TABLES `eq_assignment` WRITE;
+/*!40000 ALTER TABLE `eq_assignment` DISABLE KEYS */;
+INSERT INTO `eq_assignment` (`assignment`, `name`, `code`) VALUES (1,'Enrichment Night Babysitting','RS'),(2,'Building Lockup','LU'),(3,'Building Cleaning Coordinator','CC'),(4,'Missionary Splits','MS'),(5,'Stake Farm','SF'),(6,'Loveland Kitchen','LK'),(7,'Moves','MV'),(8,'Temple Kitchen & Laundary','TKL'),(9,'Temple Sealings','TS'),(10,'Temple Initatories','TI');
+/*!40000 ALTER TABLE `eq_assignment` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `eq_attendance`
+--
+CREATE TABLE `eq_attendance` (
+  `elder` int(16) unsigned NOT NULL default '0',
+  `date` date default NULL,
+  KEY `elder` (`elder`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `eq_calling`
+--
+CREATE TABLE `eq_calling` (
+  `indiv_id` int(16) unsigned default NULL,
+  `name` varchar(30) default NULL,
+  `organization` varchar(30) default NULL,
+  `position` varchar(30) default NULL,
+  `sequence` int(16) unsigned default NULL,
+  `sustained` varchar(30) default NULL,
+  KEY `indiv_id` (`indiv_id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `eq_child`
+--
+CREATE TABLE `eq_child` (
+  `child` int(16) unsigned NOT NULL auto_increment,
+  `family` int(16) unsigned default NULL,
+  `name` varchar(30) default NULL,
+  `birthday` date default NULL,
+  `indiv_id` int(16) unsigned default NULL,
+  `valid` tinyint(1) default NULL,
+  PRIMARY KEY  (`child`)
+) ENGINE=MyISAM AUTO_INCREMENT=260 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `eq_companionship`
+--
+
+CREATE TABLE `eq_companionship` (
+  `companionship` int(16) unsigned NOT NULL default '0',
+  `elder` int(16) unsigned NOT NULL default '0',
+  `aaronic` int(16) unsigned NOT NULL default '0',
+  `district` int(16) unsigned default NULL,
+  `valid` tinyint(1) default NULL,
+  KEY `companionship` (`companionship`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `eq_district`
+--
+CREATE TABLE `eq_district` (
+  `district` int(16) unsigned NOT NULL default '0',
+  `name` varchar(30) default NULL,
+  `supervisor` int(16) unsigned default NULL,
+  `valid` tinyint(1) default NULL,
+  PRIMARY KEY  (`district`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+LOCK TABLES `eq_district` WRITE;
+/*!40000 ALTER TABLE `eq_district` DISABLE KEYS */;
+INSERT INTO `eq_district` (`district`, `name`, `supervisor`, `valid`) VALUES (0,'High Priests',0,0);
+/*!40000 ALTER TABLE `eq_district` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `eq_elder`
+--
+CREATE TABLE `eq_elder` (
+  `elder` int(16) unsigned NOT NULL auto_increment,
+  `name` varchar(60) default NULL,
+  `phone` varchar(12) default NULL,
+  `ppi_pri` int(10) unsigned NOT NULL default '1',
+  `ppi_notes` varchar(128) default NULL,
+  `int_pri` int(10) unsigned default '1',
+  `int_notes` varchar(128) default NULL,
+  `attending` tinyint(1) default '0',
+  `valid` tinyint(1) default NULL,
+  PRIMARY KEY  (`elder`)
+) ENGINE=MyISAM AUTO_INCREMENT=105 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `eq_family`
+--
+CREATE TABLE `eq_family` (
+  `family` int(16) unsigned NOT NULL auto_increment,
+  `hofh_id` int(16) unsigned NOT NULL default '0',
+  `name` varchar(30) NOT NULL default '',
+  `name_id` varchar(30) NOT NULL default '',
+  `elder_id` int(16) unsigned default '0',
+  `companionship` int(16) unsigned default NULL,
+  `visit_pri` int(10) unsigned default '1',
+  `visit_notes` varchar(128) default NULL,
+  `valid` tinyint(1) default NULL,
+  PRIMARY KEY  (`family`)
+) ENGINE=MyISAM AUTO_INCREMENT=277 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `eq_interview`
+--
+CREATE TABLE `eq_interview` (
+  `interview` int(16) unsigned NOT NULL auto_increment,
+  `interviewer` int(16) unsigned default NULL,
+  `elder` int(16) unsigned default NULL,
+  `aaronic` int(16) unsigned NOT NULL default '0',
+  `date` date default NULL,
+  `notes` text,
+  PRIMARY KEY  (`interview`)
+) ENGINE=MyISAM AUTO_INCREMENT=65 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `eq_parent`
+--
+CREATE TABLE `eq_parent` (
+  `parent` int(16) unsigned NOT NULL auto_increment,
+  `family` int(16) unsigned default NULL,
+  `name` varchar(30) default NULL,
+  `birthday` date default NULL,
+  `phone` varchar(12) default NULL,
+  `address` varchar(255) default NULL,
+  `indiv_id` int(16) unsigned default NULL,
+  `valid` tinyint(1) default NULL,
+  PRIMARY KEY  (`parent`)
+) ENGINE=MyISAM AUTO_INCREMENT=396 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `eq_participation`
+--
+CREATE TABLE `eq_participation` (
+  `elder` int(16) unsigned NOT NULL default '0',
+  `activity` int(16) unsigned default NULL,
+  UNIQUE KEY `activity_ndx` (`elder`,`activity`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `eq_ppi`
+--
+CREATE TABLE `eq_ppi` (
+  `ppi` int(16) unsigned NOT NULL auto_increment,
+  `interviewer` int(16) unsigned default NULL,
+  `elder` int(16) unsigned default NULL,
+  `date` date default NULL,
+  `notes` text,
+  `eqpresppi` tinyint(1) default '0',
+  PRIMARY KEY  (`ppi`)
+) ENGINE=MyISAM AUTO_INCREMENT=248 DEFAULT CHARSET=latin1;
+
+
+--
+-- Table structure for table `eq_presidency`
+--
+CREATE TABLE `eq_presidency` (
+  `presidency` int(16) unsigned NOT NULL auto_increment,
+  `elder` int(16) unsigned NOT NULL default '0',
+  `district` int(16) unsigned default '0',
+  `name` varchar(60) NOT NULL,
+  `email` varchar(60) NOT NULL,
+  `president` tinyint(1) default '0',
+  `counselor` tinyint(1) default '0',
+  `secretary` tinyint(1) default '0',
+  `valid` tinyint(1) default '1',
+  KEY `presidency` (`presidency`),
+  KEY `elder` (`elder`)
+) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `eq_visit`
+--
+CREATE TABLE `eq_visit` (
+  `visit` int(16) unsigned NOT NULL auto_increment,
+  `family` int(16) unsigned default NULL,
+  `companionship` int(16) unsigned default NULL,
+  `date` date default NULL,
+  `notes` text,
+  `visited` enum('y','n','') default NULL,
+  PRIMARY KEY  (`visit`)
+) ENGINE=MyISAM AUTO_INCREMENT=9513 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `eq_willingness`
+--
+CREATE TABLE `eq_willingness` (
+  `elder` int(16) unsigned NOT NULL,
+  `assignment` int(16) unsigned NOT NULL,
+  `willing` enum('y','n','') NOT NULL,
+  KEY `elder` (`elder`,`assignment`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
diff --git a/sql/schema.dot b/sql/schema.dot
new file mode 100644 (file)
index 0000000..99fb6c4
--- /dev/null
@@ -0,0 +1,110 @@
+digraph schema {
+  graph [
+    rankdir = "LR"
+  ];
+  family   [
+    label = "<f> family||<c> companionship|<n> name_id|<i> hofh_id|<e> elder_id|<vp> visit_pri|<vn> visit_notes|<v> valid"
+    shape = "record"
+  ];
+  elder   [
+    label = "<e> elder||<n> name|<p> phone|<pp> ppi_pri|<t> ppi_notes|<ip> int_pri|<in> int_notes|<a> attending|<v> valid"
+    shape = "record"
+  ];
+  companionship   [
+    label = "<c> companionship||<e> elder|<a> aaronic|<d> district|<v> valid"
+    shape = "record"
+  ];
+  visit   [
+    label = "<v> visit||<f> family|<c> companionship|<t> date|<n> notes|<v> visited"
+    shape = "record"
+  ];
+  ppi   [
+    label = "<p> ppi||<i> interviewer|<e> elder|<t> date|<n> notes|<p> eqpresppi"
+    shape = "record"
+  ];
+  activity   [
+    label = "<a> activity||<s> assignment|<t> date|<n> notes"
+    shape = "record"
+  ];
+  participation   [
+    label = "participation||<e> elder|<a> activity"
+    shape = "record"
+  ];
+  attendance   [
+    label = "attendance||<e> elder|<d> date"
+    shape = "record"
+  ];
+  child        [
+    label = "<c> child||<f> family|<i> indiv_id|<n> name|<b> birthday|<v> valid"
+    shape = "record"
+  ]; 
+  parent       [
+    label = "<p> parent||<f> family|<n> name|<b> birthday|<p> phone|<a> address|<i>indiv_id|<v> valid"
+    shape = "record"
+  ]; 
+  aaronic       [
+    label = "<a> aaronic||<n> name|<p> phone|<v> valid"
+    shape = "record"
+  ];
+  appointment   [
+    label = "<a> appointment||<p> presidency|<f> family|<e> elder |<d> date|<t> time|<u> uid"
+    shape = "record"
+  ];
+  assignment    [
+    label = "<a> assignment||<n> name|<c> code"
+    shape = "record"
+  ];
+  calling       [
+    label = "calling||<i> indiv_id|<n> name|<o> organization|<p> position|<s> sequence|<t> sustained"
+    shape = "record"
+  ];
+  district      [
+    label = "<d> district||<n> name|<s> supervisor|<v> valid"
+    shape = "record"
+  ];
+  interview     [
+    label = "<i> interview||<in> interviewer|<e> elder|<a> aaronic|<d> date|<n> notes"
+    shape = "record"
+  ];
+  presidency    [
+    label = "<p> presidency||<e> elder|<d> district|<n> name|<em> email|<pr> president|<cn> counselor|<sec> secreatary|<v> valid"
+    shape = "record"
+  ];
+  willingness   [
+    label = "<e> elder||<a> assignment|<w> willing"
+    shape = "record"
+  ];
+
+  family:c        -> companionship:c
+  companionship:e -> elder:e
+  companionship:a -> aaronic:a
+
+  appointment:e   -> elder:e
+  appointment:f   -> family:f
+
+  interview:e     -> elder:e
+  interview:in    -> elder:e
+  interview:a     -> aaronic:a
+
+  presidency:e    -> elder:e
+  presidency:d    -> district:d
+
+  willingness:e   -> elder:e
+  willingness:a   -> assignment:a
+
+  activity:s      -> assignment:a
+
+  visit:c         -> companionship:c
+  visit:f         -> family:f
+
+  ppi:i           -> elder:e
+  ppi:e           -> elder:e
+
+  participation:e -> elder:e
+  participation:a -> activity:a
+
+  attendance:e    -> elder:e
+
+  child:f         -> family:f
+  parent:f        -> family:f
+}
index d2a87bac8aa18dcf5309c2520fe4ec894f97868a..92853122bc4cbad8e6b772bffab53ba6fdcc7de9 100644 (file)
            <form enctype="multipart/form-data" action="{upload_action}" method="POST">
            <input type="hidden" name="MAX_FILE_SIZE" value="500000">
            Choose the MLS data file to upload (.zip): <input name="uploadedfile" type="file" size=40><br>
-            <br>
+            It must contain the following files from MLS: Membership.csv, Hometeaching.csv, Organization.csv
+            <br><br>
            <input type="submit" value="Import Data File"> &nbsp; (Import can take up to 30 seconds)
            </form>
-            <hr>
          </td>
         </tr>
         </table>
        </table>
 <!-- END upload -->
 
+<!-- BEGIN presidency -->
+       <center>
+        <table border="0" width="80%" cellspacing="2" cellpadding="2">
+       <tr>
+          <td align="left">
+           <hr>
+           <b>Update the EQ Presidency Table</b>
+           <br><br>
+           <form enctype="multipart/form-data" action="{presidency_action}" method="POST">
+            <table border="0" width="80%" cellspacing="2" cellpadding="2">
+            <tr bgcolor="#c9c9c9"><font face="{font}">{header_row}</tr>
+            {table_data}
+            </table>
+            <b>Notes:</b>
+           <br>Make sure you have at least 1 EQ Presidency member that is marked with "EQ Presidency=1".
+            <br>This entry is used to email the entire presidency, and its email address should cause that to happen.
+            <br>If a member of the presidency is not a District Leader, make sure to set their "District=0".
+           <br>The President, Counselor, Secretary, and EQ Presidency fields are boolean value (true|false) flags.
+           <br><br>
+           <input type="submit" value="Update EQ Presidency Table">
+           </form>
+          </td>
+        </tr>
+        </table>
+        </center>
+<!-- END presidency -->
+
 <!-- BEGIN cmd -->
 
 <!-- END cmd -->
diff --git a/x.gif b/x.gif
deleted file mode 100755 (executable)
index 12ed1d5..0000000
Binary files a/x.gif and /dev/null differ
diff --git a/x.psd b/x.psd
deleted file mode 100755 (executable)
index 8353958..0000000
Binary files a/x.psd and /dev/null differ