changed app name to tc
authorOwen Leonard <owen@balawis.leonard.fam>
Sun, 12 Sep 2010 04:43:13 +0000 (22:43 -0600)
committerOwen Leonard <owen@balawis.leonard.fam>
Sun, 12 Sep 2010 04:43:13 +0000 (22:43 -0600)
20 files changed:
3rd.spec [deleted file]
bin/import_ward_data
bin/upgrade_4_0_to_5_0
doc/install.txt
inc/class.3rd.inc.php [deleted file]
inc/class.tc.inc.php [new file with mode: 0644]
inc/functions.inc.php
inc/hook_add_def_pref.inc.php
inc/hook_admin.inc.php
inc/hook_preferences.inc.php
index.php
setup/3rd_config [deleted file]
setup/setup.inc.php
setup/tc_config [new file with mode: 0644]
sql/3rd.jpg [deleted file]
sql/3rd.sql [deleted file]
sql/dot.cmd
sql/tc.jpg [new file with mode: 0644]
sql/tc.sql [new file with mode: 0644]
tc.spec [new file with mode: 0644]

diff --git a/3rd.spec b/3rd.spec
deleted file mode 100644 (file)
index 77542d3..0000000
--- a/3rd.spec
+++ /dev/null
@@ -1,56 +0,0 @@
-%define packagename 3rd
-%define phpgwdirname 3rd
-%define version 0.0.1.000
-
-# This is for Mandrake RPMS 
-# (move these below the RedHat ones for Mandrake RPMs)
-%define httpdroot  /var/www/html/phpgroupware
-%define packaging 1mdk
-
-# This is for RedHat RPMS
-# (move these below the Mandrake ones for RedHat RPMs)
-%define httpdroot  /home/httpd/html/phpgroupware
-%define packaging 1
-
-Summary: Tools for Managing a Priesthood Quorum app for phpGroupWare. 
-Name: %{packagename}
-Version: %{version}
-Release: %{packaging}
-Copyright: GPL
-Group: Web/Database
-URL: http://www.phpgroupware.org/apps/3rd/
-Source0: ftp://ftp.sourceforge.net/pub/sourceforge/phpgroupware/%{packagename}-%{version}.tar.bz2
-BuildRoot: %{_tmppath}/%{packagename}-buildroot
-Prefix: %{httpdroot}
-Buildarch: noarch
-requires: phpgroupware >= 0.9.10
-AutoReq: 0
-
-%description
-This is an Priesthood Quorum Presidency Application.
-
-%prep
-%setup -n %{phpgwdirname}
-
-%build
-# no build required
-
-%install
-rm -rf $RPM_BUILD_ROOT
-mkdir -p $RPM_BUILD_ROOT%{prefix}/%{phpgwdirname}
-cp -aRf * $RPM_BUILD_ROOT%{prefix}/%{phpgwdirname}
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%post
-
-%postun
-
-%files
-%{prefix}/%{phpgwdirname}
-
-%changelog
-- EQ App Update
-
-# end of file
index b42a7550b3d585bd27179593c2e1d41b3cc380c2..21a5a368006ee6f4da26be483e292de634e8e74f 100755 (executable)
@@ -112,12 +112,12 @@ sub print_hash
 #| email   | varchar(120)     | YES  |     | NULL    |       |
 #| valid   | tinyint(1)       | YES  |     | NULL    |       |
 #+-------+--------------------+------+-----+---------+-------+
-sub update_3rd_aaronic_table
+sub update_tc_aaronic_table
 {
-    print "\n-> Updating 3rd_aaronic table\n";
+    print "\n-> Updating tc_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 3rd_aaronic set valid=0");
+    $sth = $dbh->prepare("update tc_aaronic set valid=0");
     $sth->execute or die "-E- DB error: $DBI::errstr\n";
     
     foreach $index (keys %membership_data)
@@ -134,7 +134,7 @@ sub update_3rd_aaronic_table
                if($phone =~ /^\(\d\d\d\) (\d\d\d-\d\d\d\d)/) { $phone = "$1-$2"; }
                $email = $membership_data{$index}{'Individual E-mail'};
                if ($email eq "") { $email = $membership_data{$index}{'Household E-mail'}; }
-               $sth = $dbh->prepare("select * from 3rd_aaronic where name='$aaronic_name'");
+               $sth = $dbh->prepare("select * from tc_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); }
@@ -142,16 +142,16 @@ sub update_3rd_aaronic_table
                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 3rd_aaronic values (NULL,'$aaronic_name','$phone','$email',1)");
+                   $sth = $dbh->prepare("insert into tc_aaronic values (NULL,'$aaronic_name','$phone','$email',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 3rd_aaronic set phone='$phone' where name='$aaronic_name'");
+                   $sth = $dbh->prepare("update tc_aaronic set phone='$phone' where name='$aaronic_name'");
                    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update 3rd_aaronic set email='$email' where name='$aaronic_name'");
+                   $sth = $dbh->prepare("update tc_aaronic set email='$email' where name='$aaronic_name'");
                    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update 3rd_aaronic set valid=1 where name='$aaronic_name'");
+                   $sth = $dbh->prepare("update tc_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.
@@ -180,12 +180,12 @@ sub update_3rd_aaronic_table
 #| attending   | tinyint(1)       | YES  |     | 0       |                |
 #| valid       | tinyint(1)       | YES  |     | NULL    |                |
 #+-------------+------------------+------+-----+---------+----------------+
-sub update_3rd_indiv_table
+sub update_tc_indiv_table
 {
-    print "\n-> Updating 3rd_indiv table\n";
+    print "\n-> Updating tc_indiv table\n";
 
     # Set all records to be invalid. Only mark them as valid if they appear on the new list.
-    $sth = $dbh->prepare("update 3rd_indiv set valid=0");
+    $sth = $dbh->prepare("update tc_indiv set valid=0");
     $sth->execute or die "-E- DB error: $DBI::errstr\n";
     
     foreach $index (keys %membership_data)
@@ -228,7 +228,7 @@ sub update_3rd_indiv_table
                if($phone =~ /^\(\d\d\d\) (\d\d\d-\d\d\d\d)/) { $phone = "$1-$2"; }
                $email = $membership_data{$index}{'indiv E-mail'};
                if ($email eq "") { $email = $membership_data{$index}{'Household E-mail'}; }
-               $sth = $dbh->prepare("select * from 3rd_indiv where name='$indiv_name'");
+               $sth = $dbh->prepare("select * from tc_indiv where name='$indiv_name'");
                $sth->execute or die "-E- DB error: $DBI::errstr\n";
                my @data = ();
                while($sqlhashref = $sth->fetchrow_hashref) { push(@data, $sqlhashref); }
@@ -236,26 +236,26 @@ sub update_3rd_indiv_table
                if($rows == 0) {
                    # No existing records found for this indiv, make a new entry
                    print "   Adding new indiv: $indiv_name\n";
-                   $sth = $dbh->prepare("insert into 3rd_indiv values (NULL,'$id','$indiv_name','$phone','$email','$priesthood','n','1','','1','',$attending,1)");
+                   $sth = $dbh->prepare("insert into tc_indiv values (NULL,'$id','$indiv_name','$phone','$email','$priesthood','n','1','','1','',$attending,1)");
                    $sth->execute or die "-E- DB error: $DBI::errstr\n";
                } elsif($rows == 1) {
                    # An existing record was found for this indiv, update it
                    print "   Updating existing indiv: $indiv_name\n";
-                   $sth = $dbh->prepare("update 3rd_indiv set valid=1 where name='$indiv_name'");
+                   $sth = $dbh->prepare("update tc_indiv set valid=1 where name='$indiv_name'");
                    $sth->execute or die "-E- DB error: $DBI::errstr\n";
                    if($phone ne "") { 
-                       $sth = $dbh->prepare("update 3rd_indiv set phone='$phone' where name='$indiv_name'");
+                       $sth = $dbh->prepare("update tc_indiv set phone='$phone' where name='$indiv_name'");
                    } else {
-                       $sth = $dbh->prepare("update 3rd_indiv set phone=NULL where name='$indiv_name'");
+                       $sth = $dbh->prepare("update tc_indiv set phone=NULL where name='$indiv_name'");
                    }
                    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update 3rd_indiv set attending='$attending' where name='$indiv_name'");
+                   $sth = $dbh->prepare("update tc_indiv set attending='$attending' where name='$indiv_name'");
                    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update 3rd_indiv set indiv_id='$id' where name='$indiv_name'");
+                   $sth = $dbh->prepare("update tc_indiv set indiv_id='$id' where name='$indiv_name'");
                    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update 3rd_indiv set priesthood='$priesthood' where name='$indiv_name'");
+                   $sth = $dbh->prepare("update tc_indiv set priesthood='$priesthood' where name='$indiv_name'");
                    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update 3rd_indiv set email='$email' where name='$indiv_name'");
+                   $sth = $dbh->prepare("update tc_indiv set email='$email' where name='$indiv_name'");
                    $sth->execute or die "-E- DB error: $DBI::errstr\n";
                } else {
                    # More than one record was found. Error! This shouldn't happen.
@@ -278,16 +278,16 @@ sub update_3rd_indiv_table
 #| sequence     | int(16) unsigned | YES  |     | NULL    |       |
 #| sustained    | date             | YES  |     | NULL    |       |
 #+--------------+------------------+------+-----+---------+-------+
-sub update_3rd_calling_table()
+sub update_tc_calling_table()
 {
-    print "\n-> Updating 3rd_calling table\n";
+    print "\n-> Updating tc_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 3rd_calling ");
+    $sth = $dbh->prepare("delete from tc_calling ");
     $sth->execute or die "-E- DB error: $DBI::errstr\n";
     
     foreach $index (keys %organization_data)
@@ -304,7 +304,7 @@ sub update_3rd_calling_table()
        $sustained =~ /(\S+) (\d+)/; $month=$1; $year=$2;
        if($name eq "") { next; }
        print "   Adding new Calling: $name -> $position\n";
-       $sth = $dbh->prepare("insert into 3rd_calling values ('$indiv_id','$name','$organization','$position','$sequence','$month $year')");
+       $sth = $dbh->prepare("insert into tc_calling values ('$indiv_id','$name','$organization','$position','$sequence','$month $year')");
        $sth->execute or die "-E- DB error: $DBI::errstr\n";
     }
 }
@@ -318,22 +318,22 @@ sub update_3rd_calling_table()
 #| supervisor | int(16) unsigned | YES  |     | NULL    |       |
 #| valid      | tinyint(1)       | YES  |     | NULL    |       |
 #+------------+------------------+------+-----+---------+-------+
-sub update_3rd_district_table
+sub update_tc_district_table
 {
     # Districts should be created by hand. This subroutine only
     # updates the supervisor's ID in each district.
-    print "\n-> Updating 3rd_district table\n";
-    $sth = $dbh->prepare("select * from 3rd_district");
+    print "\n-> Updating tc_district table\n";
+    $sth = $dbh->prepare("select * from tc_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 3rd_indiv where name='$supervisor_name'");
+       $sth2 = $dbh->prepare("select * from tc_indiv where name='$supervisor_name'");
        $sth2->execute or die "-E- DB error: $DBI::errstr\n";
        $sqlhashref2 = $sth2->fetchrow_hashref;
        $supervisor_id = $sqlhashref2->{indiv};
        $sth2->finish();
-       $sth2 = $dbh->prepare("update 3rd_district set supervisor='$supervisor_id' where district='$district'");
+       $sth2 = $dbh->prepare("update tc_district set supervisor='$supervisor_id' where district='$district'");
        $sth2->execute or die "-E- DB error: $DBI::errstr\n";
        $sth2->finish();
     }
@@ -350,15 +350,15 @@ sub update_3rd_district_table
 #| district      | int(16) unsigned | YES  |     | NULL    |       |
 #| valid         | tinyint(1)       | YES  |     | NULL    |       |
 #+---------------+------------------+------+-----+---------+-------+
-sub update_3rd_companionship_table
+sub update_tc_companionship_table
 {
-    print "\n-> Updating 3rd_companionship table\n";
+    print "\n-> Updating tc_companionship table\n";
 
     # First, mark all existing companionships as invalid in case they have been dissolved
-    $sth = $dbh->prepare("update 3rd_companionship set valid=0");
+    $sth = $dbh->prepare("update tc_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 3rd_aaronic set valid=0");
+    $sth = $dbh->prepare("update tc_aaronic set valid=0");
     $sth->execute or die "-E- DB error: $DBI::errstr\n";
     
     foreach $index (keys %hometeaching_data)
@@ -369,22 +369,22 @@ sub update_3rd_companionship_table
                foreach $field ("Home Teacher 1","Home Teacher 2") {
                    $indiv_name = $hometeaching_data{$index}{$field};
                    if($indiv_name eq "") { next; }
-                   $sth2 = $dbh->prepare("select * from 3rd_indiv where name='$indiv_name'");
+                   $sth2 = $dbh->prepare("select * from tc_indiv where name='$indiv_name'");
                    $sth2->execute or die "-E- DB error: $DBI::errstr\n";
                    $sqlhashref2 = $sth2->fetchrow_hashref;
                    $indiv = $sqlhashref2->{indiv};
                    $aaronic = "NULL";
                    if($indiv eq "") {
-                       $sth2 = $dbh->prepare("select * from 3rd_aaronic where name='$indiv_name'");
+                       $sth2 = $dbh->prepare("select * from tc_aaronic where name='$indiv_name'");
                        $sth2->execute or die "-E- DB error: $DBI::errstr\n";
                        $sqlhashref2 = $sth2->fetchrow_hashref;
                        $aaronic = $sqlhashref2->{aaronic};
                        $indiv = "NULL";
-                       if($aaronic eq "") { print "-W- Unable to find $indiv_name in 3rd_indiv or 3rd_aaronic tables\n"; next; }
+                       if($aaronic eq "") { print "-W- Unable to find $indiv_name in tc_indiv or tc_aaronic tables\n"; next; }
                    } 
                    $id = $hometeaching_data{$index}{'Comp ID'};
                    $district = $hometeaching_data{$index}{'HT District'};
-                   $sth = $dbh->prepare("select * from 3rd_companionship where indiv='$indiv' and aaronic='$aaronic' and companionship='$id'");
+                   $sth = $dbh->prepare("select * from tc_companionship where indiv='$indiv' 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); }
@@ -392,29 +392,29 @@ sub update_3rd_companionship_table
                    if($rows == 0) {
                        # No existing records found for this companionship, make a new entry
                        print "   Adding Companion to companionship: $indiv_name -> $id\n";
-                       $sth = $dbh->prepare("insert into 3rd_companionship values ($id,'$indiv','$aaronic','$district',1)");
+                       $sth = $dbh->prepare("insert into tc_companionship values ($id,'$indiv','$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 3rd_companionship where district='$district' and companionship='$id'");
+                       $sth2 = $dbh->prepare("select * from tc_companionship where district='$district' and companionship='$id'");
                        $sth2->execute or die "-E- DB error: $DBI::errstr\n";
                        if($indiv ne "NULL") {
                            print "   Updating Companionship with indiv: $indiv_name ($indiv) -> $id\n";
-                           $sth = $dbh->prepare("update 3rd_companionship set district='$district' where indiv='$indiv' and companionship='$id'");
+                           $sth = $dbh->prepare("update tc_companionship set district='$district' where indiv='$indiv' and companionship='$id'");
                            $sth->execute or die "-E- DB error 'district': $DBI::errstr\n";
-                           $sth = $dbh->prepare("update 3rd_companionship set indiv='$indiv' where indiv='$indiv' and companionship='$id'");
+                           $sth = $dbh->prepare("update tc_companionship set indiv='$indiv' where indiv='$indiv' and companionship='$id'");
                            $sth->execute or die "-E- DB error 'indiv': $DBI::errstr\n";
-                           $sth = $dbh->prepare("update 3rd_companionship set valid=1 where indiv='$indiv' and companionship='$id'");
+                           $sth = $dbh->prepare("update tc_companionship set valid=1 where indiv='$indiv' and companionship='$id'");
                            $sth->execute or die "-E- DB error 'valid': $DBI::errstr\n";
                        } else {
                            print "   Updating Companionship with Aaronic: $indiv_name ($aaronic) -> $id\n";
-                           $sth = $dbh->prepare("update 3rd_companionship set district='$district' where aaronic='$aaronic' and companionship='$id'");
+                           $sth = $dbh->prepare("update tc_companionship set district='$district' where aaronic='$aaronic' and companionship='$id'");
                            $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                           $sth = $dbh->prepare("update 3rd_companionship set aaronic='$aaronic' where aaronic='$aaronic' and companionship='$id'");
+                           $sth = $dbh->prepare("update tc_companionship set aaronic='$aaronic' where aaronic='$aaronic' and companionship='$id'");
                            $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                           $sth = $dbh->prepare("update 3rd_companionship set valid=1 where aaronic='$aaronic' and companionship='$id'");
+                           $sth = $dbh->prepare("update tc_companionship set valid=1 where aaronic='$aaronic' and companionship='$id'");
                            $sth->execute or die "-E- DB error: $DBI::errstr\n";                            
-                           $sth = $dbh->prepare("update 3rd_aaronic set valid=1 where aaronic='$aaronic'");
+                           $sth = $dbh->prepare("update tc_aaronic set valid=1 where aaronic='$aaronic'");
                            $sth->execute or die "-E- DB error: $DBI::errstr\n";
                        }
                    }
@@ -440,14 +440,14 @@ sub update_3rd_companionship_table
 #| visit_notes   | varchar(128)     | YES  |     | NULL    |       |
 #| valid         | tinyint(1)       | YES  |     | NULL    |       |
 #+---------------+------------------+------+-----+---------+-------+
-sub update_3rd_family_table
+sub update_tc_family_table
 {
-    print "\n-> Updating 3rd_family table\n";
+    print "\n-> Updating tc_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 3rd_family set valid=0");
+    $sth = $dbh->prepare("update tc_family set valid=0");
     $sth->execute or die "-E- DB error: $DBI::errstr\n";
-    $sth = $dbh->prepare("update 3rd_family set companionship=0");
+    $sth = $dbh->prepare("update tc_family set companionship=0");
     $sth->execute or die "-E- DB error: $DBI::errstr\n";
     
     foreach $index (keys %membership_data)
@@ -461,7 +461,7 @@ sub update_3rd_family_table
                $name_id = uc($family_name);
 
                # Find out how many families match this family's name
-               $sth = $dbh->prepare("select * from 3rd_family where name_id='$name_id'");
+               $sth = $dbh->prepare("select * from tc_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); }
@@ -470,14 +470,14 @@ sub update_3rd_family_table
                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 3rd_family values (NULL,$id,'$family_name','$name_id','0','0','1','',1)");
+                   $sth = $dbh->prepare("insert into tc_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 3rd_family set hofh_id=$id where name_id='$name_id'");
+                   $sth = $dbh->prepare("update tc_family set hofh_id=$id where name_id='$name_id'");
                    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update 3rd_family set valid=1 where name_id='$name_id'");
+                   $sth = $dbh->prepare("update tc_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.
@@ -485,12 +485,12 @@ sub update_3rd_family_table
                }
 
                 # Now update the indiv_id field for this family
-               $sth = $dbh->prepare("select * from 3rd_indiv WHERE name='$family_name'");
+               $sth = $dbh->prepare("select * from tc_indiv WHERE name='$family_name'");
                $sth->execute or die "-E- DB error: $DBI::errstr\n";
                while($sqlhashref = $sth->fetchrow_hashref) {
                    $indiv_id = $sqlhashref->{indiv};
                    print "   Updating family indiv_id: $family_name -> $indiv_id\n";
-                   $sth = $dbh->prepare("update 3rd_family set indiv_id=$indiv_id where name_id='$name_id'");
+                   $sth = $dbh->prepare("update tc_family set indiv_id=$indiv_id where name_id='$name_id'");
                    $sth->execute or die "-E- DB error: $DBI::errstr\n";
                }
                
@@ -514,7 +514,7 @@ sub update_3rd_family_table
                        {
                            print "   Updating hometeaching assignment for $family_name family\n";
                            $companionship = $hometeaching_data{$index}{'Comp ID'};
-                           $sth = $dbh->prepare("update 3rd_family set companionship='$companionship' where name_id='$name_id'");
+                           $sth = $dbh->prepare("update tc_family set companionship='$companionship' where name_id='$name_id'");
                            $sth->execute or die "-E- DB error: $DBI::errstr\n";
                        }
                    }
@@ -538,12 +538,12 @@ sub update_3rd_family_table
 #| indiv_id | int(16) unsigned | YES  | UNI | NULL    |       |
 #| valid    | tinyint(1)       | YES  |     | NULL    |       |
 #+----------+------------------+------+-----+---------+-------+
-sub update_3rd_parent_table
+sub update_tc_parent_table
 {
-    print "\n-> Updating 3rd_parent table\n";
+    print "\n-> Updating tc_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 3rd_parent set valid=0");
+    $sth = $dbh->prepare("update tc_parent set valid=0");
     $sth->execute or die "-E- DB error: $DBI::errstr\n";
     
     foreach $index (keys %membership_data)
@@ -570,7 +570,7 @@ sub update_3rd_parent_table
                }
 
                # Find the family id for this parent's HofH_ID.
-               $sth = $dbh->prepare("select * from 3rd_family where hofh_id='$hofh_id' and valid=1");
+               $sth = $dbh->prepare("select * from tc_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); }
@@ -579,7 +579,7 @@ sub update_3rd_parent_table
                else { $family_id = 0; }
                
                # Find out how many parents match this parent's name
-               $sth = $dbh->prepare("select * from 3rd_parent where name='$parent_name'");
+               $sth = $dbh->prepare("select * from tc_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); }
@@ -588,22 +588,22 @@ sub update_3rd_parent_table
                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 3rd_parent values (NULL,$family_id,'$parent_name','$year-$month-$day','$phone','$address','$id',1)");
+                   $sth = $dbh->prepare("insert into tc_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 3rd_parent set family='$family_id' where name='$parent_name'");
+                   $sth = $dbh->prepare("update tc_parent set family='$family_id' where name='$parent_name'");
                    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update 3rd_parent set birthday='$year-$month-$day' where name='$parent_name'");
+                   $sth = $dbh->prepare("update tc_parent set birthday='$year-$month-$day' where name='$parent_name'");
                    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update 3rd_parent set phone='$phone' where name='$parent_name'");
+                   $sth = $dbh->prepare("update tc_parent set phone='$phone' where name='$parent_name'");
                    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update 3rd_parent set address='$address' where name='$parent_name'");
+                   $sth = $dbh->prepare("update tc_parent set address='$address' where name='$parent_name'");
                    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update 3rd_parent set valid=1 where name='$parent_name'");
+                   $sth = $dbh->prepare("update tc_parent set valid=1 where name='$parent_name'");
                    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update 3rd_parent set indiv_id='$id' where name='$parent_name'");
+                   $sth = $dbh->prepare("update tc_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.
@@ -628,12 +628,12 @@ sub update_3rd_parent_table
 #| indiv_id | int(16) unsigned | YES  | UNI | NULL    |       |
 #| valid    | tinyint(1)       | YES  |     | NULL    |       |
 #+----------+------------------+------+-----+---------+-------+
-sub update_3rd_child_table
+sub update_tc_child_table
 {
-    print "\n-> Updating 3rd_child table\n";
+    print "\n-> Updating tc_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 3rd_child set valid=0");
+    $sth = $dbh->prepare("update tc_child set valid=0");
     $sth->execute or die "-E- DB error: $DBI::errstr\n";
     
     foreach $index (keys %membership_data)
@@ -649,7 +649,7 @@ sub update_3rd_child_table
                $hofh_id = $membership_data{$index}{'HofH ID'};
 
                # Find the family id for this child's HofH_ID.
-               $sth = $dbh->prepare("select * from 3rd_family where hofh_id='$hofh_id' and valid=1");
+               $sth = $dbh->prepare("select * from tc_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); }
@@ -658,7 +658,7 @@ sub update_3rd_child_table
                else { $family_id = 0; }
                
                # Find out how many children have the same name for the same family
-               $sth = $dbh->prepare("select * from 3rd_child where name='$child_name'");
+               $sth = $dbh->prepare("select * from tc_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); }
@@ -667,18 +667,18 @@ sub update_3rd_child_table
                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 3rd_child values (NULL,$family_id,'$child_name','$year-$month-$day','$id',1)");
+                   $sth = $dbh->prepare("insert into tc_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 3rd_child set family='$family_id' where name='$child_name'");
+                   $sth = $dbh->prepare("update tc_child set family='$family_id' where name='$child_name'");
                    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update 3rd_child set birthday='$year-$month-$day' where name='$child_name'");
+                   $sth = $dbh->prepare("update tc_child set birthday='$year-$month-$day' where name='$child_name'");
                    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update 3rd_child set valid=1 where name='$child_name'");
+                   $sth = $dbh->prepare("update tc_child set valid=1 where name='$child_name'");
                    $sth->execute or die "-E- DB error: $DBI::errstr\n";
-                   $sth = $dbh->prepare("update 3rd_child set indiv_id='$id' where name='$child_name'");
+                   $sth = $dbh->prepare("update tc_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.
@@ -701,9 +701,9 @@ sub update_3rd_child_table
 #| notes          | varchar(128)     | YES  |     | NULL    |       |
 #| visited        | varchar(1)       | YES  |     | NULL    |       |
 #+----------------+------------------+------+-----+---------+-------+
-sub update_3rd_visit_table
+sub update_tc_visit_table
 {
-       print "\n-> updating 3rd_visit table\n";
+       print "\n-> updating tc_visit table\n";
        
        my $month_header_retrieved = 0;
        my $month_header;
@@ -720,8 +720,8 @@ sub update_3rd_visit_table
                $family_name = $hometeaching_stats_data{$index}{"Preferred Name"};
                print "   Updating visit data: $family_name\n";
 
-               # get family id from 3rd_family
-               $sth = $dbh->prepare("select * from 3rd_family where name=\"$family_name\" and valid=1");
+               # get family id from tc_family
+               $sth = $dbh->prepare("select * from tc_family where name=\"$family_name\" 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); }
@@ -769,8 +769,8 @@ sub update_3rd_visit_table
                        #print "$visit_date\n";
                        my $importing_status = $visit_status{$history[$i]};
                        #print "importing_status = $importing_status\n";
-                       #print "select * from 3rd_visit where family=$family_id and companionship=$comp_id and date='$visit_date'\n";
-                       $sth = $dbh->prepare("select * from 3rd_visit where family=$family_id and companionship=$comp_id and date='$visit_date'");
+                       #print "select * from tc_visit where family=$family_id and companionship=$comp_id and date='$visit_date'\n";
+                       $sth = $dbh->prepare("select * from tc_visit where family=$family_id and companionship=$comp_id and date='$visit_date'");
                        $sth->execute or die "-E- DB error: $DBI::errstr\n";
                        my @visit_data = ();
                        while($sqlhashref = $sth->fetchrow_hashref) { push(@visit_data, $sqlhashref); }
@@ -778,18 +778,18 @@ sub update_3rd_visit_table
                        if($visit_rows > 0) { 
                                my $visited = $visit_data[0]->{'visited'}; 
                                #print "visited = $visited\n";
-                               # update visit if data is different in 3rd_visit
+                               # update visit if data is different in tc_visit
                                if ($visited ne $importing_status)
                                {
                                        #print "importing_status = $importing_status\n";
-                                       $sth = $dbh->prepare("update 3rd_visit set visited='$importing_status' where family='$family_id' and date='$visit_date' and companionship='$comp_id'");
+                                       $sth = $dbh->prepare("update tc_visit set visited='$importing_status' where family='$family_id' and date='$visit_date' and companionship='$comp_id'");
                                        $sth->execute or die "-E- DB error: $DBI::errstr\n";
                                }
                        } else {
                                if ($importing_status ne '')
                                {
-                                       # add visit if it doesn't exist in 3rd_visit
-                                       $sth = $dbh->prepare("insert into 3rd_visit values (NULL, '$family_id', '$comp_id', '', '', '$visit_date', '', '$importing_status', 'hometeaching')");
+                                       # add visit if it doesn't exist in tc_visit
+                                       $sth = $dbh->prepare("insert into tc_visit values (NULL, '$family_id', '$comp_id', '', '', '$visit_date', '', '$importing_status', 'hometeaching')");
                                        $sth->execute or die "-E- DB error: $DBI::errstr\n";
                                }
                        }
@@ -896,15 +896,15 @@ if($opt_v) {
 if($opt_s) { $dbh->disconnect(); exit; }
 
 # Now update the various eq DB tables
-&update_3rd_calling_table();
-&update_3rd_indiv_table();
-&update_3rd_aaronic_table();
-&update_3rd_district_table();
-&update_3rd_companionship_table();
-&update_3rd_family_table();
-&update_3rd_parent_table();
-&update_3rd_child_table();
-&update_3rd_visit_table();
+&update_tc_calling_table();
+&update_tc_indiv_table();
+&update_tc_aaronic_table();
+&update_tc_district_table();
+&update_tc_companionship_table();
+&update_tc_family_table();
+&update_tc_parent_table();
+&update_tc_child_table();
+&update_tc_visit_table();
 
 print "\n-> Import Successful! DONE...\n";
 
index 7836351a9f890b1998f0334d55e15e4e1e1d3728..731c51226fb64377f711f1549ed25f49540c4d55 100755 (executable)
@@ -15,144 +15,144 @@ $dbh=DBI->connect("dbi:mysql:dbname=$dbname:host=$dbhost:port=$dbport",$dbuser,$
     PrintError=>0}) or print "Connect Failure:".$DBI::errstr."\n" and exit 2;
 ###################################################
 
-# Rename eq_aaronic table to 3rd_aaronic
-$sth = $dbh->prepare("RENAME TABLE `eq_aaronic` TO `3rd_aaronic`");
+# Rename eq_aaronic table to tc_aaronic
+$sth = $dbh->prepare("RENAME TABLE `eq_aaronic` TO `tc_aaronic`");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Rename eq_activity table to 3rd_activity
-$sth = $dbh->prepare("RENAME TABLE `eq_activity` TO `3rd_activity`");
+# Rename eq_activity table to tc_activity
+$sth = $dbh->prepare("RENAME TABLE `eq_activity` TO `tc_activity`");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Rename eq_appointment table to 3rd_appointment
-$sth = $dbh->prepare("RENAME TABLE `eq_appointment` TO `3rd_appointment`");
+# Rename eq_appointment table to tc_appointment
+$sth = $dbh->prepare("RENAME TABLE `eq_appointment` TO `tc_appointment`");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Change elder field in 3rd_appointment table to indiv
-$sth = $dbh->prepare("ALTER TABLE `3rd_appointment` CHANGE `elder` `indiv` INT(16)");
+# Change elder field in tc_appointment table to indiv
+$sth = $dbh->prepare("ALTER TABLE `tc_appointment` CHANGE `elder` `indiv` INT(16)");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Rename eq_assignment table to 3rd_assignment
-$sth = $dbh->prepare("RENAME TABLE `eq_assignment` TO `3rd_assignment`");
+# Rename eq_assignment table to tc_assignment
+$sth = $dbh->prepare("RENAME TABLE `eq_assignment` TO `tc_assignment`");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Rename eq_attendance table to 3rd_attendance
-$sth = $dbh->prepare("RENAME TABLE `eq_attendance` TO `3rd_attendance`");
+# Rename eq_attendance table to tc_attendance
+$sth = $dbh->prepare("RENAME TABLE `eq_attendance` TO `tc_attendance`");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Change elder field in 3rd_attendance table to indiv
-$sth = $dbh->prepare("ALTER TABLE `3rd_attendance` CHANGE `elder` `indiv` INT(16)");
+# Change elder field in tc_attendance table to indiv
+$sth = $dbh->prepare("ALTER TABLE `tc_attendance` CHANGE `elder` `indiv` INT(16)");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Rename eq_calling table to 3rd_calling
-$sth = $dbh->prepare("RENAME TABLE `eq_calling` TO `3rd_calling`");
+# Rename eq_calling table to tc_calling
+$sth = $dbh->prepare("RENAME TABLE `eq_calling` TO `tc_calling`");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Rename eq_child table to 3rd_child
-$sth = $dbh->prepare("RENAME TABLE `eq_child` TO `3rd_child`");
+# Rename eq_child table to tc_child
+$sth = $dbh->prepare("RENAME TABLE `eq_child` TO `tc_child`");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Rename eq_companionship table to 3rd_companionship
-$sth = $dbh->prepare("RENAME TABLE `eq_companionship` TO `3rd_companionship`");
+# Rename eq_companionship table to tc_companionship
+$sth = $dbh->prepare("RENAME TABLE `eq_companionship` TO `tc_companionship`");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Change elder field in 3rd_companionship table to indiv
-$sth = $dbh->prepare("ALTER TABLE `3rd_companionship` CHANGE `elder` `indiv` INT(16)");
+# Change elder field in tc_companionship table to indiv
+$sth = $dbh->prepare("ALTER TABLE `tc_companionship` CHANGE `elder` `indiv` INT(16)");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Rename eq_district table to 3rd_district
-$sth = $dbh->prepare("RENAME TABLE `eq_district` TO `3rd_district`");
+# Rename eq_district table to tc_district
+$sth = $dbh->prepare("RENAME TABLE `eq_district` TO `tc_district`");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Rename eq_elder table to 3rd_indiv
-$sth = $dbh->prepare("RENAME TABLE `eq_elder` TO `3rd_indiv`");
+# Rename eq_elder table to tc_indiv
+$sth = $dbh->prepare("RENAME TABLE `eq_elder` TO `tc_indiv`");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Add a new 'propective' field to the 3rd_indiv table
-$sth = $dbh->prepare("ALTER TABLE `3rd_indiv` ADD `prospective` enum('y','n') NULL AFTER `priesthood`");
+# Add a new 'propective' field to the tc_indiv table
+$sth = $dbh->prepare("ALTER TABLE `tc_indiv` ADD `prospective` enum('y','n') NULL AFTER `priesthood`");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Change elder field in 3rd_indiv table to indiv
-$sth = $dbh->prepare("ALTER TABLE `3rd_indiv` CHANGE `elder` `indiv` INT(16)");
+# Change elder field in tc_indiv table to indiv
+$sth = $dbh->prepare("ALTER TABLE `tc_indiv` CHANGE `elder` `indiv` INT(16)");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Rename eq_family table to 3rd_family
-$sth = $dbh->prepare("RENAME TABLE `eq_family` TO `3rd_family`");
+# Rename eq_family table to tc_family
+$sth = $dbh->prepare("RENAME TABLE `eq_family` TO `tc_family`");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Change elder_id field in 3rd_family table to indiv_id
-$sth = $dbh->prepare("ALTER TABLE `3rd_family` CHANGE `elder_id` `indiv_id` INT(16)");
+# Change elder_id field in tc_family table to indiv_id
+$sth = $dbh->prepare("ALTER TABLE `tc_family` CHANGE `elder_id` `indiv_id` INT(16)");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Rename eq_parent table to 3rd_parent
-$sth = $dbh->prepare("RENAME TABLE `eq_parent` TO `3rd_parent`");
+# Rename eq_parent table to tc_parent
+$sth = $dbh->prepare("RENAME TABLE `eq_parent` TO `tc_parent`");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Rename eq_participation table to 3rd_participation
-$sth = $dbh->prepare("RENAME TABLE `eq_participation` TO `3rd_participation`");
+# Rename eq_participation table to tc_participation
+$sth = $dbh->prepare("RENAME TABLE `eq_participation` TO `tc_participation`");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Change elder field in 3rd_participation table to indiv
-$sth = $dbh->prepare("ALTER TABLE `3rd_participation` CHANGE `elder` `indiv` INT(16)");
+# Change elder field in tc_participation table to indiv
+$sth = $dbh->prepare("ALTER TABLE `tc_participation` CHANGE `elder` `indiv` INT(16)");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Rename eq_ppi table to 3rd_interview
-$sth = $dbh->prepare("RENAME TABLE `eq_ppi` TO `3rd_interview`");
+# Rename eq_ppi table to tc_interview
+$sth = $dbh->prepare("RENAME TABLE `eq_ppi` TO `tc_interview`");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Change elder field in 3rd_interview table to indiv
-$sth = $dbh->prepare("ALTER TABLE `3rd_interview` CHANGE `elder` `indiv` INT(16)");
+# Change elder field in tc_interview table to indiv
+$sth = $dbh->prepare("ALTER TABLE `tc_interview` CHANGE `elder` `indiv` INT(16)");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Change ppi field in 3rd_interview table to interview
-$sth = $dbh->prepare("ALTER TABLE `3rd_interview` CHANGE `ppi` `interview` INT(16)");
+# Change ppi field in tc_interview table to interview
+$sth = $dbh->prepare("ALTER TABLE `tc_interview` CHANGE `ppi` `interview` INT(16)");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Add a new 'interview_type' column to the 3rd_interview table
-$sth = $dbh->prepare("ALTER TABLE `3rd_interview` ADD `interview_type` enum('hti','ppi') NOT NULL DEFAULT 'hti' AFTER `eqpresppi`");
+# Add a new 'interview_type' column to the tc_interview table
+$sth = $dbh->prepare("ALTER TABLE `tc_interview` ADD `interview_type` enum('hti','ppi') NOT NULL DEFAULT 'hti' AFTER `eqpresppi`");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
 # set all interviews to be ppi's if eqpresppi is 1
-$sth = $dbh->prepare("UPDATE 3rd_interview SET interview_type='ppi' WHERE eqpresppi='1'");
+$sth = $dbh->prepare("UPDATE tc_interview SET interview_type='ppi' WHERE eqpresppi='1'");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# remove 'eqpresppi' from 3rd_interview
-$sth = $dbh->prepare("ALTER TABLE `3rd_interview` DROP `eqpresppi`");
+# remove 'eqpresppi' from tc_interview
+$sth = $dbh->prepare("ALTER TABLE `tc_interview` DROP `eqpresppi`");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Rename eq_presidency table to 3rd_presidency
-$sth = $dbh->prepare("RENAME TABLE `eq_presidency` TO `3rd_presidency`");
+# Rename eq_presidency table to tc_presidency
+$sth = $dbh->prepare("RENAME TABLE `eq_presidency` TO `tc_presidency`");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Change elder field in 3rd_presidency table to indiv
-$sth = $dbh->prepare("ALTER TABLE `3rd_presidency` CHANGE `elder` `indiv` INT(16)");
+# Change elder field in tc_presidency table to indiv
+$sth = $dbh->prepare("ALTER TABLE `tc_presidency` CHANGE `elder` `indiv` INT(16)");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Rename eq_visit table to 3rd_visit
-$sth = $dbh->prepare("RENAME TABLE `eq_visit` TO `3rd_visit`");
+# Rename eq_visit table to tc_visit
+$sth = $dbh->prepare("RENAME TABLE `eq_visit` TO `tc_visit`");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Add a new 'companion1' column to the 3rd_visit table
-$sth = $dbh->prepare("ALTER TABLE `3rd_visit` ADD `companion1` INT( 16 ) NULL AFTER `companionship`");
+# Add a new 'companion1' column to the tc_visit table
+$sth = $dbh->prepare("ALTER TABLE `tc_visit` ADD `companion1` INT( 16 ) NULL AFTER `companionship`");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Add a new 'companion2' column to the 3rd_visit table
-$sth = $dbh->prepare("ALTER TABLE `3rd_visit` ADD `companion2` INT( 16 ) NULL AFTER `companion1`");
+# Add a new 'companion2' column to the tc_visit table
+$sth = $dbh->prepare("ALTER TABLE `tc_visit` ADD `companion2` INT( 16 ) NULL AFTER `companion1`");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Add a new 'visit_type' column to the 3rd_visit table
-$sth = $dbh->prepare("ALTER TABLE `3rd_visit` ADD `visit_type` enum('presidency','hometeaching') NOT NULL DEFAULT 'hometeaching' AFTER `visited`");
+# Add a new 'visit_type' column to the tc_visit table
+$sth = $dbh->prepare("ALTER TABLE `tc_visit` ADD `visit_type` enum('presidency','hometeaching') NOT NULL DEFAULT 'hometeaching' AFTER `visited`");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
 # set all visits currently marked as companionship=0 with "type" "presidency" and all other visits should set to "hometeaching".
-$sth = $dbh->prepare("update 3rd_visit set visit_type='presidency' where companionship='0'");
+$sth = $dbh->prepare("update tc_visit set visit_type='presidency' where companionship='0'");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Rename eq_willingness table to 3rd_willingness
-$sth = $dbh->prepare("RENAME TABLE `eq_willingness` TO `3rd_willingness`");
+# Rename eq_willingness table to tc_willingness
+$sth = $dbh->prepare("RENAME TABLE `eq_willingness` TO `tc_willingness`");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
-# Change elder field in 3rd_willingness table to indiv
-$sth = $dbh->prepare("ALTER TABLE `3rd_willingness` CHANGE `elder` `indiv` INT(16)");
+# Change elder field in tc_willingness table to indiv
+$sth = $dbh->prepare("ALTER TABLE `tc_willingness` CHANGE `elder` `indiv` INT(16)");
 $sth->execute or die "-E- DB error: $DBI::errstr\n";
 
 print "-> Done!\n";
index badc43c15ae29bff236904c78be51d8c71f78619..1cac9d1853b326772af47fe27ea8945101eb8f63 100644 (file)
@@ -33,24 +33,24 @@ Installing
    1) Download the tgz or zip file and extract it or GIT pull the archive into 
       your base phpgroupware directory (like /usr/share/phpgroupware/).
    2) Setup the mysql table structures for the 3rd Counselor application:
-      mysql -u <dbuser> -p <dbpass> < 3rd/sql/3rd.sql
+      mysql -u <dbuser> -p <dbpass> < tc/sql/tc.sql
    3) Point your browser to: http://www.yourdomain.com/phpgroupware/setup 
       The setup prog will autodetect this application. From there you will 
       need to assign this app to the users you want to have be able to use it.
       Enable it for each user by going to Site Admin -> User Accounts -> <username> -> edit
-      Make sure the "3rd" application has a checkmark next to it under "Permissions this user has"
+      Make sure the "tc" application has a checkmark next to it under "Permissions this user has"
    4) Copy the setup/db_config to setup/db_config.local and change the values in .local appropriately. 
       Check for syntax errors by running eq/bin/check_config_syntax
-   5) Copy the setup/3rd_config to setup/3rd_config.local and change the values in .local appropriately.
+   5) Copy the setup/tc_config to setup/tc_config.local and change the values in .local appropriately.
       Make sure you update the path locations for your specific installation locations: 
       upload_target_path & application_path
-      Check for syntax errors by running 3rd/bin/check_config_syntax
-   6) Try to run 3rd/bin/import_ward_data & parse_ward_data scripts from the commandline
+      Check for syntax errors by running tc/bin/check_config_syntax
+   6) Try to run tc/bin/import_ward_data & parse_ward_data scripts from the commandline
       to check for any missing perl library dependencies and mysql connection. 
       Just run them without command line args.
       Install the right perl modules until the scripts run without any errors.
    7) A graphical representation of the mysql schema used by this application can 
-      be found here: 3rd/sql/3rd.jpg
+      be found here: tc/sql/tc.jpg
    8) Run mls/mlstrimmer.py or MLSFileTrimmer.exe to trim down the csv files and combine them
       into a zip file.  If you run mls/mlstrimmer.py, you'll need to point it to 
       mls/windowsGUI/MLSFileTrimmer/MLSRequiredFields.xml.  If you choose to not use 
diff --git a/inc/class.3rd.inc.php b/inc/class.3rd.inc.php
deleted file mode 100644 (file)
index 05ac32d..0000000
+++ /dev/null
@@ -1,4633 +0,0 @@
-<?php
-  /**************************************************************************\
-  * Application: phpGroupWare - 3rd Counselor                                *
-  * Framework: http://www.phpgroupware.org                                   *
-  * Author: Alan J. Pippin (apippin@pippins.net)                             *
-  * -----------------------------------------------                          *
-  *  This program is free software; you can redistribute it and/or modify it *
-  *  under the terms of the GNU General Public License as published by the   *
-  *  Free Software Foundation; either version 2 of the License, or (at your  *
-  *  option) any later version.                                              *
-  \**************************************************************************/
-      /* $Id: class.3rd.inc.php,v 1.1.1.1 2005/07/20 07:40:32 ajp Exp $ */
-
-class 3rd 
-{
-  var $db;
-  var $db2;
-  var $t;
-  var $nextmatchs;
-  var $grants;
-  var $jscal;
-  var $cal_options;  
-  var $default_ht_num_months;
-  var $default_ppi_num_months;
-  var $default_ppi_num_years;
-  var $default_int_num_quarters;
-  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
-    (
-     'ht_view'    => True,
-     'ht_update'  => True,
-     'act_list'          => True,
-     'act_view'   => True,
-     'act_update' => True,
-     'par_view'   => True,
-     'ppi_view'   => True,
-     'ppi_update' => True,
-     'ppi_sched'  => True,
-     'int_view'   => True,
-     'int_update' => True,
-     'int_sched'  => True,
-     'vis_sched'  => True,
-     'vis_view'   => True,
-     'vis_update' => True,
-     'att_view'   => True,
-     'att_update' => True,
-     'dir_view'   => True,
-     'org_view'   => True,
-     'schedule'   => True,
-     'admin'      => True,
-     'email'      => True,
-     'email_appt' => True,
-     'willing_view'   => True,
-     'willing_update' => True,
-     'send_ical_appt' => True,
-     'assign_view'    => True,
-     'assign_update'  => True,
-     'get_time_selection_form' => True,
-     );
-  function 3rd()
-    {
-      if(file_exists("setup/3rd_config.local")) {
-       include("setup/3rd_config.local");
-      } else {
-       include("setup/3rd_config");
-      }
-      
-      $this->script_path = "$this->application_path"."/bin";
-      $this->max_presidency_members = 99;
-      $this->max_appointments = 32768;
-      
-      $this->db                = $GLOBALS['phpgw']->db;
-      $this->db2       = $this->db;
-      $this->db3       = $this->db;
-      $this->nextmatchs = CreateObject('phpgwapi.nextmatchs');
-      $this->t          = $GLOBALS['phpgw']->template;
-      $this->account    = $GLOBALS['phpgw_info']['user']['account_id'];
-      $this->grants     = $GLOBALS['phpgw']->acl->get_grants('3rd');
-      $this->grants[$this->account] = PHPGW_ACL_READ + PHPGW_ACL_ADD + PHPGW_ACL_EDIT + PHPGW_ACL_DELETE;
-       
-      $this->jscal = CreateObject('3rd.jscalendar');   // before phpgw_header() !!!
-      $this->cal_options = 'daFormat    : "%Y-%m-%d",
-                                ifFormat    : "%Y-%m-%d",
-                                mondayFirst : false,
-                                weekNumbers : false';
-       
-      $GLOBALS['phpgw_info']['flags']['app_header'] = 'The 3rd Counselor';
-      $GLOBALS['phpgw']->common->phpgw_header();
-
-      $this->current_day = `date '+%d'`;
-      $this->current_day = $this->current_day-0; // Make it numeric
-      $this->current_month = `date '+%m'`;
-      $this->current_month = $this->current_month-0; // Make it numeric
-      $this->current_year = `date '+%Y'`;
-      $this->current_year = $this->current_year-0; // Make it numeric
-
-      echo parse_navbar();
-      $this->display_app_header();     
-    }
-  
-  function save_sessiondata()
-    {
-      
-    }
-
-  function display_app_header()
-    {
-      $this->t->set_file(array('3rd_header' => 'header.tpl'));
-      
-      if (isset($phpgw_info['user']['preferences']['3rd']['3rd_font']))
-       {
-         $font = $phpgw_info['user']['preferences']['3rd']['3rd_font'];
-       }
-      else
-       {
-         $font = 'Arial';
-       }
-      
-      $this->t->set_var('bg_color',$phpgw_info['theme']['th_bg']);
-      $this->t->set_var('font',$font);
-      $link_data['menuaction'] = '3rd.3rd.ht_view';
-      $this->t->set_var('link_hometeaching',$GLOBALS['phpgw']->link('/3rd/index.php',$link_data));
-      $this->t->set_var('lang_hometeaching','HomeTeaching');
-      $link_data['menuaction'] = '3rd.3rd.act_list';
-      $this->t->set_var('link_activity',$GLOBALS['phpgw']->link('/3rd/index.php',$link_data));
-      $this->t->set_var('lang_activity','Activities');
-      $link_data['menuaction'] = '3rd.3rd.willing_view';
-      $this->t->set_var('link_willing',$GLOBALS['phpgw']->link('/3rd/index.php',$link_data));
-      $this->t->set_var('lang_willing','Willingness');
-      $link_data['menuaction'] = '3rd.3rd.assign_view';
-      $this->t->set_var('link_assignment',$GLOBALS['phpgw']->link('/3rd/index.php',$link_data));
-      $this->t->set_var('lang_assignment','Assignments');
-      $link_data['menuaction'] = '3rd.3rd.par_view';
-      $this->t->set_var('link_participation',$GLOBALS['phpgw']->link('/3rd/index.php',$link_data));
-      $this->t->set_var('lang_participation','Participation');
-      $link_data['menuaction'] = '3rd.3rd.ppi_view';
-      $this->t->set_var('link_ppi',$GLOBALS['phpgw']->link('/3rd/index.php',$link_data));
-      $this->t->set_var('lang_ppi','PPIs');
-      $link_data['menuaction'] = '3rd.3rd.int_view';
-      $this->t->set_var('link_int',$GLOBALS['phpgw']->link('/3rd/index.php',$link_data));
-      $this->t->set_var('lang_int','Interviews');
-      $link_data['menuaction'] = '3rd.3rd.vis_view';
-      $this->t->set_var('link_visit',$GLOBALS['phpgw']->link('/3rd/index.php',$link_data));
-      $this->t->set_var('lang_visit','Visits');
-      $link_data['menuaction'] = '3rd.3rd.att_view';   
-      $this->t->set_var('link_attendance',$GLOBALS['phpgw']->link('/3rd/index.php',$link_data));
-      $this->t->set_var('lang_attendance','Attendance');
-      $link_data['menuaction'] = '3rd.3rd.dir_view';   
-      $this->t->set_var('link_dir',$GLOBALS['phpgw']->link('/3rd/index.php',$link_data));
-      $this->t->set_var('lang_dir','Directory');
-      $link_data['menuaction'] = '3rd.3rd.org_view';   
-      $this->t->set_var('link_org',$GLOBALS['phpgw']->link('/3rd/index.php',$link_data));
-      $this->t->set_var('lang_org','Callings');
-      $link_data['menuaction'] = '3rd.3rd.admin';      
-      $this->t->set_var('link_admin',$GLOBALS['phpgw']->link('/3rd/index.php',$link_data));
-      $this->t->set_var('lang_admin','Admin');
-      $link_data['menuaction'] = '3rd.3rd.schedule';   
-      $this->t->set_var('link_schedule',$GLOBALS['phpgw']->link('/3rd/index.php',$link_data));
-      $this->t->set_var('lang_schedule','Scheduling');
-      $link_data['menuaction'] = '3rd.3rd.email';      
-      $this->t->set_var('link_email',$GLOBALS['phpgw']->link('/3rd/index.php',$link_data));
-      $this->t->set_var('lang_email','Email');
-               
-      $this->t->pparse('out','3rd_header');
-    }
-
-  function ht_view()
-    {
-      $this->t->set_file(array('ht_view_t' => 'ht_view.tpl'));
-      $this->t->set_block('ht_view_t','district_list','list');
-   
-      $this->t->set_var('linkurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.ht_view'));
-      $num_months = get_var('num_months',array('GET','POST'));
-      if($num_months == '') { $num_months = $this->default_ht_num_months; }
-      $this->t->set_var('num_months',$num_months);
-      $this->t->set_var('lang_filter','Filter');
-      if($num_months == 1) { $this->t->set_var('lang_num_months','Month of History'); }
-      else {  $this->t->set_var('lang_num_months','Months of History'); }
-      
-      $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.ht_view'));
-      $this->t->set_var('title','Hometeaching'); 
-      
-      $sql = "SELECT * FROM 3rd_district where valid=1 ORDER BY district ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i=0;
-      while ($this->db->next_record())
-       {
-         $districts[$i]['district'] = $this->db->f('district');
-         $districts[$i]['name'] = $this->db->f('name');
-         $districts[$i]['supervisor'] = $this->db->f('supervisor');
-         $i++;
-       }
-
-      $sql = "SELECT * FROM 3rd_indiv where valid=1 ORDER BY indiv ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i=0;
-      while ($this->db->next_record())
-       {
-         $indiv_id[$i] = $this->db->f('indiv');
-         $indiv_name[$i] = $this->db->f('name');
-         $indiv_phone[$indiv_id[$i]] = $this->db->f('phone');
-         $i++;
-       }
-      array_multisort($indiv_name, $indiv_id);
-
-      // Make an array mapping indiv_ids to indiv_names
-      for($i=0; $i < count($indiv_id); $i++) {
-          $id = $indiv_id[$i];
-          $indivs[$id] = $indiv_name[$i];
-      }      
-
-      $sql = "SELECT * FROM 3rd_aaronic where valid=1 ORDER BY aaronic ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      while ($this->db->next_record())
-       {
-         $aaronic_id = $this->db->f('aaronic');
-         $aaronic[$aaronic_id]['name'] = $this->db->f('name');
-         $aaronic[$aaronic_id]['phone'] = $this->db->f('phone');
-       }
-
-      $this->nextmatchs->template_alternate_row_color(&$this->t);
-      for($m=$num_months; $m >= 0; $m--) { $total_families[$m]=0; }
-      for ($i=0; $i < count($districts); $i++) {
-       $this->t->set_var('district_number',$districts[$i]['district']);
-       $this->t->set_var('district_name',$districts[$i]['name']);      
-       $supervisor = $districts[$i]['supervisor'];
-               
-       // Select all the unique companionship numbers for this district
-       $sql = "SELECT distinct companionship FROM 3rd_companionship where valid=1 and district=". $districts[$i]['district'];
-       $this->db->query($sql,__LINE__,__FILE__);
-       $j=0; $unique_companionships = '';
-       while ($this->db->next_record())
-         {
-           $unique_companionships[$j]['companionship'] = $this->db->f('companionship');
-           $j++;
-         }
-
-       $comp_width=450; $visit_width=25; $table_width=$comp_width + $num_months*$visit_width;
-       $table_data=""; $num_companionships = 0;
-       for($m=$num_months; $m >= 0; $m--) { $visits[$m]=0; $num_families[$m]=0; }
-       for ($j=0; $j < count($unique_companionships); $j++) {
-         $companion_table_entry = "";
-         // Select all the companions in each companionship
-         $sql = "SELECT * FROM 3rd_companionship where valid=1 and ".
-                "companionship=". $unique_companionships[$j]['companionship'];
-         $this->db->query($sql,__LINE__,__FILE__);
-
-         while ($this->db->next_record())
-           {
-             // Get this companions information
-             if($companion_table_entry != "") { $companion_table_entry .= "<td>&nbsp;/&nbsp;</td>"; }
-             $companionship = $this->db->f('companionship');
-             $indiv_id = $this->db->f('indiv');
-             $aaronic_id = $this->db->f('aaronic');
-             if($indiv_id) {
-               $name = $indivs[$indiv_id];
-               $phone = $indiv_phone[$indiv_id];
-             }
-             else if($aaronic_id) {
-               $name = $aaronic[$aaronic_id]['name'];
-               $phone = $aaronic[$aaronic_id]['phone'];                
-             }
-             $companion_table_entry .= "<td title=\"$phone\"><b>$name</b></td>";
-           }
-         $table_data.= "<tr bgcolor=#d3dce3><td colspan=20><table><tr>$companion_table_entry</tr></table><hr></td></tr>";
-         
-         // Get the names of the families assigned this home teaching companionship
-         $sql = "SELECT * from 3rd_family where valid=1 AND companionship=".$unique_companionships[$j]['companionship'];
-         $sql = $sql . " ORDER BY name ASC";
-         $this->db->query($sql,__LINE__,__FILE__);
-         $k=0;
-         while ($this->db->next_record())
-           {
-             $family_name = $this->db->f('name');
-             $family_id = $this->db->f('family');
-             $this->nextmatchs->template_alternate_row_color(&$this->t);
-             $table_data.="<tr bgcolor=". $this->t->get_var('tr_color') ."><td>$family_name Family</td>";
-             // Find out how many times Visits were performed by this companionship
-             // in the past $num_months for this Family
-             $header_row="<th width=$comp_width><font size=-2>Families</th>";
-             for($m=$num_months; $m >= 0; $m--) {
-               $month = $this->current_month - $m;
-               $year = $this->current_year;
-               if($month <= 0) { $remainder = $month; $month = 12 + $remainder; $year=$year-1; }
-               if($month < 10) { $month = "0"."$month"; }
-               $month_start = "$year"."-"."$month"."-"."01";
-               $month_end = "$year"."-"."$month"."-"."31";
-               $month = "$month"."/"."$year";
-               
-               //print "m: $m month: $month year: $year month_start: $month_start month_end: $month_end<br>";
-               // Add this to the query to filter on only visits made by this companionship:
-               // " AND companionship=" . $unique_companionships[$j]['companionship'].
-
-               // First check to see if the currently assigned companionship has visited them
-               $sql = "SELECT * FROM 3rd_visit WHERE date >= '$month_start' AND date <= '$month_end' ".
-                  " AND companionship=".$unique_companionships[$j]['companionship'].
-                  " AND family=". $family_id;
-               $query_id = $this->db2->query($sql,__LINE__,__FILE__);
-               if($this->db2->num_rows($query_id) == 0) {
-                 // We did not find any visits made by the currently assigned companionship,
-                 // look for visits made by any other companionship other than 0. (0 == EQ Presidency Visit)
-                 $sql = "SELECT * FROM 3rd_visit WHERE date >= '$month_start' AND date <= '$month_end' ".
-                    " AND companionship!=0".
-                    " AND family=". $family_id;
-                 $query_id = $this->db2->query($sql,__LINE__,__FILE__);
-               }
-               $this->db2->query($sql,__LINE__,__FILE__);
-               $link_data['menuaction'] = '3rd.3rd.ht_update';
-               $link_data['date'] = $month_start;
-               $link_data['month_start'] = $month_start;
-               $link_data['month_end'] = $month_end;
-               $link_data['month'] = $month;
-               $link_data['district'] = $districts[$i]['district'];
-               $link_data['district_name'] = $districts[$i]['name'];
-               $link_data['action'] = 'view';
-               $link = $GLOBALS['phpgw']->link('/3rd/index.php',$link_data);
-               $header_row .= "<th width=$visit_width><font size=-2><a href=$link>$month</a></th>";
-               if(!$total_visits[$m]) { $total_visits[$m] = 0; }
-               if($this->db2->next_record()) {
-                 if($this->db2->f('visited') == 'y') {
-                   $visits[$m]++; $total_visits[$m]++;
-                   $num_families[$m]++; $total_families[$m]++;
-                   $table_data .= '<td align=center><a href="'.$link.'"><img src="images/checkmark.gif"></a></td>';
-                 }
-                 else if($this->db2->f('visited') == 'n') {
-                   $num_families[$m]++; $total_families[$m]++;
-                   $table_data .= '<td align=center><a href="'.$link.'"><img src="images/x.gif"></a></td>';
-                 }
-                 else {
-                   //$visits[$m]++; $total_visits[$m]++;
-                   $table_data .= "<td>&nbsp;</td>";
-                 }
-               }
-               else {
-                 //$visits[$m]++; $total_visits[$m]++;
-                 $table_data .= "<td>&nbsp;</td>";
-               }
-             }
-             $table_data .= "</tr>"; 
-             $k++;
-           }
-         $table_data .= "<tr><td colspan=20></td></tr>";
-       }
-       $table_data .= "<tr><td colspan=20><hr></td></tr>";
-       $stat_data = "<tr><td><b><font size=-2>Families Hometaught:<br>Hometeaching Percentage:</font></b></td>";
-
-       for($m=$num_months; $m >=0; $m--) {
-         if($num_families[$m] > 0) { 
-           $percent = ceil(($visits[$m] / $num_families[$m])*100);
-         } else {
-           $percent = 0;
-         }
-         $stat_data .= "<td align=center><font size=-2><b>$visits[$m] / $num_families[$m]<br>$percent%</font></b></td>";
-       }
-       $stat_data .= "</tr>";
-
-       $this->t->set_var('table_width',$table_width);
-       $this->t->set_var('header_row',$header_row);
-       $this->t->set_var('table_data',$table_data);
-       $this->t->set_var('stat_data',$stat_data);
-       $this->t->fp('list','district_list',True);
-      }
-
-      $totals = "<tr><td><b><font size=-2>Total Families Hometaught:<br>Total Hometeaching Percentage:</font></b></td>";
-      for($m=$num_months; $m >=0; $m--) {
-       if($total_families[$m] > 0) { 
-         $percent = ceil(($total_visits[$m] / $total_families[$m])*100);
-       } else {
-         $percent = 0;
-       }
-       $totals .= "<td align=center><font size=-2><b>$total_visits[$m] / $total_families[$m]<br>$percent%</font></b></td>";
-      }
-      $totals .= "</tr>";
-      
-      $this->t->set_var('totals',$totals);
-      
-      $this->t->pfp('out','ht_view_t');
-      $this->save_sessiondata();
-    }
-      
-
-  function ht_update()
-    {
-      $this->t->set_file(array('ht_update_t' => 'ht_update.tpl'));
-      $this->t->set_block('ht_update_t','district_list','list');
-      $this->t->set_block('ht_update_t','save','savehandle');
-      
-      $district = get_var('district',array('GET','POST'));
-      $district_name = get_var('district_name',array('GET','POST'));
-      $date = get_var('date',array('GET','POST'));
-      $month = get_var('month',array('GET','POST'));
-      $month_start = get_var('month_start',array('GET','POST'));
-      $month_end = get_var('month_end',array('GET','POST'));
-      $action = get_var('action',array('GET','POST'));
-      
-      $this->t->set_var('done_action',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.ht_view'));
-      $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.ht_update&action=save'));
-      $this->t->set_var('lang_done','Cancel');
-      $this->t->set_var('district_name',$district_name);
-      $this->t->set_var('district_number',$district);
-      $this->t->set_var('title','Hometeaching Update ' . $month);
-      $this->t->set_var('date',$date);
-      
-      if($action == 'save')
-       {
-         // Get a list of all the companionships in this district
-         $sql = "SELECT distinct companionship FROM 3rd_companionship where valid=1 and district=". $district;
-         $this->db->query($sql,__LINE__,__FILE__);
-         $j=0; $unique_companionships = '';
-         while ($this->db->next_record())
-           {
-             $unique_companionships[$j]['companionship'] = $this->db->f('companionship');
-             $j++;
-           }
-         for ($j=0; $j < count($unique_companionships); $j++)
-           {
-             //$comp=$unique_companionships[$j]['companionship'];
-             //print "deleting from 3rd_visit where companionship=$comp and date=$date and district=$district<br>";
-             // Delete all the visits that have taken place for all families for this companionsthip for this month
-             $this->db->query("DELETE from 3rd_visit where companionship=" . $unique_companionships[$j]['companionship'] .
-                              " AND " . "date='" . $date . "'",__LINE__,__FILE__);
-           }
-
-         // Now, add the visits that are checked for this month
-         $new_data = get_var('family_visited',array('POST'));
-         foreach ($new_data as $family)
-          {
-            foreach ($family as $data)
-              {
-                //print "family_visited: $data <br>";
-                $data_array = explode("/",$data);
-                $family_id = $data_array[0];
-                $companionship = $data_array[1];
-                $date = $data_array[2];
-                $visited = $data_array[3];
-                if($visited == "") { $visited = $data_array[4]; }
-                //print "family_id: $family_id companionship: $companionship date: $date visited: $visited<br>";
-                $this->db->query("INSERT INTO 3rd_visit (family,companionship,date,notes,visited) "
-                                 . "VALUES (" . $family_id .",". $companionship .",'". $date ."','','". $visited ."')",__LINE__,__FILE__);
-              }
-          }
-         $this->ht_view();
-         return false;
-       }
-      
-      $sql = "SELECT * FROM 3rd_indiv where valid=1 ORDER BY indiv ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i=0;
-      while ($this->db->next_record())
-       {
-         $indiv_id[$i] = $this->db->f('indiv');
-         $indiv_name[$i] = $this->db->f('name');
-         $indiv_phone[$indiv_id[$i]] = $this->db->f('phone');
-         $i++;
-       }
-      array_multisort($indiv_name, $indiv_id);
-
-      // Make an array mapping indiv_ids to indiv_names
-      for($i=0; $i < count($indiv_id); $i++) {
-          $id = $indiv_id[$i];
-          $indivs[$id] = $indiv_name[$i];
-      }      
-
-      $sql = "SELECT * FROM 3rd_aaronic where valid=1 ORDER BY aaronic ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      while ($this->db->next_record())
-       {
-         $aaronic_id = $this->db->f('aaronic');
-         $aaronic[$aaronic_id]['name'] = $this->db->f('name');
-         $aaronic[$aaronic_id]['phone'] = $this->db->f('phone');
-       }
-      
-      // Select all the unique companionship numbers for this district
-      $sql = "SELECT distinct companionship FROM 3rd_companionship where valid=1 and district=". $district;
-      $this->db->query($sql,__LINE__,__FILE__);
-      $j=0; $unique_companionships = '';
-      while ($this->db->next_record())
-       {
-         $unique_companionships[$j]['companionship'] = $this->db->f('companionship');
-         $j++;
-       }
-      
-      $comp_width=300; $visit_width=25; $table_width=$comp_width + $visit_width;
-      $table_data=""; $num_companionships = 0; $num_families = 0; $visits=0;
-      for ($j=0; $j < count($unique_companionships); $j++) {
-       $companion_table_entry = "";
-       // Select all the companions in each companionship
-       $sql = "SELECT * FROM 3rd_companionship where valid=1 and ".
-              "companionship=". $unique_companionships[$j]['companionship'];
-       $this->db->query($sql,__LINE__,__FILE__);
-       
-       while ($this->db->next_record())
-         {
-           // Get this companions information
-           if($companion_table_entry != "") { $companion_table_entry .= "<td>&nbsp;/&nbsp;</td>"; }
-           $companionship = $this->db->f('companionship');
-           $indiv_id = $this->db->f('indiv');
-           $aaronic_id = $this->db->f('aaronic');
-           if($indiv_id) {
-             $name = $indivs[$indiv_id];
-             $phone = $indiv_phone[$indiv_id];
-           }
-           else if($aaronic_id) {
-             $name = $aaronic[$aaronic_id]['name'];
-             $phone = $aaronic[$aaronic_id]['phone'];
-           }
-           $companion_table_entry .= "<td title=\"$phone\"><b>$name</b></td>";
-         }
-       $table_data.= "<tr bgcolor=#d3dce3><td colspan=20><table><tr>$companion_table_entry</tr></table><hr></td></tr>";
-       
-       // Get the names of the families assigned this home teaching companionship
-       $sql = "SELECT * from 3rd_family where valid=1 AND companionship=".$unique_companionships[$j]['companionship'];
-       $sql = $sql . " ORDER BY name ASC";
-       $this->db->query($sql,__LINE__,__FILE__);
-       while ($this->db->next_record())
-         {
-           $family_name = $this->db->f('name');
-           $family_id = $this->db->f('family');
-           $this->nextmatchs->template_alternate_row_color(&$this->t);
-           $table_data.="<tr bgcolor=". $this->t->get_var('tr_color') ."><td>$family_name Family</td>";
-           
-           $header_row="<th width=$comp_width><font size=-2>Families</th>";
-
-           // First check to see if the currently assigned companionship has visited them
-           $sql = "SELECT * FROM 3rd_visit WHERE date >= '$month_start' AND date <= '$month_end' ".
-                  " AND companionship=".$unique_companionships[$j]['companionship'].
-                  " AND family=". $family_id;
-           $query_id = $this->db2->query($sql,__LINE__,__FILE__);
-           if($this->db2->num_rows($query_id) == 0) {
-             // We did not find any visits made by the currently assigned companionship,
-             // look for visits made by any other companionship other than 0. (0 == EQ Presidency Visit)
-             $sql = "SELECT * FROM 3rd_visit WHERE date >= '$month_start' AND date <= '$month_end' ".
-                  " AND companionship!=0".
-                  " AND family=". $family_id;
-             $query_id = $this->db2->query($sql,__LINE__,__FILE__);
-           }
-           
-           $value = $family_id . "/" . $unique_companionships[$j]['companionship'] . "/" . $date;
-           $header_row .= "<th width=$visit_width><font size=-2><a href=$link>$month</a></th>";
-           if(!$total_visits) { $total_visits = 0; }
-           if($this->db2->next_record()) {
-             if($this->db2->f('visited') == 'y') {
-               $visits++; $total_visits++; $num_families++;
-               $table_data .= '<td width=100 align=center>';
-               $table_data .= '<input type="radio" name="family_visited['.$family_id.'][]" value="'.$value.'/y" checked>Y';
-               $table_data .= '<input type="radio" name="family_visited['.$family_id.'][]" value="'.$value.'/n">N';
-               $table_data .= '<input type="radio" name="family_visited['.$family_id.'][]" value="'.$value.'/"> ';
-               $table_data .= '</td>';
-             } else if($this->db2->f('visited') == 'n') {
-               $num_families++;
-               $table_data .= '<td width=100 align=center>';
-               $table_data .= '<input type="radio" name="family_visited['.$family_id.'][]" value="'.$value.'/y">Y';
-               $table_data .= '<input type="radio" name="family_visited['.$family_id.'][]" value="'.$value.'/n" checked>N';
-               $table_data .= '<input type="radio" name="family_visited['.$family_id.'][]" value="'.$value.'/">';
-               $table_data .= '</td>';
-             } else {
-               $table_data .= '<td width=100 align=center>';
-               $table_data .= '<input type="radio" name="family_visited['.$family_id.'][]" value="'.$value.'/y">Y';
-               $table_data .= '<input type="radio" name="family_visited['.$family_id.'][]" value="'.$value.'/n">N';
-               $table_data .= '<input type="radio" name="family_visited['.$family_id.'][]" value="'.$value.'/" checked> ';
-               $table_data .= '</td>';
-             }
-           }
-           else {
-             $value .= "/";
-             $table_data .= '<td width=100 align=center>';
-             $table_data .= '<input type="radio" name="family_visited['.$family_id.'][]" value="'.$value.'/y">Y';
-             $table_data .= '<input type="radio" name="family_visited['.$family_id.'][]" value="'.$value.'/n">N';
-             $table_data .= '<input type="radio" name="family_visited['.$family_id.'][]" value="'.$value.'/" checked> ';
-             $table_data .= '</td>';         
-           }
-         }
-       $table_data .= "</tr>"; 
-       $table_data .= "<tr><td colspan=20></td></tr>";
-      }
-      $table_data .= "<tr><td colspan=20><hr></td></tr>";
-      $stat_data = "<tr><td><b><font size=-2>Families Hometaught:<br>Hometeaching Percentage:</font></b></td>";
-      
-      $percent = ceil(($visits / $num_families)*100);
-      $stat_data .= "<td align=center><font size=-2><b>$visits / $num_families<br>$percent%</font></b></td>";
-      $stat_data .= "</tr>";
-      
-      $this->t->set_var('table_width',$table_width);
-      $this->t->set_var('header_row',$header_row);
-      $this->t->set_var('table_data',$table_data);
-      $this->t->set_var('stat_data',$stat_data);
-      $this->t->fp('list','district_list',True);
-
-      $this->t->set_var('lang_reset','Clear Form');
-      $this->t->set_var('lang_save','Save Changes');
-      $this->t->set_var('savehandle','');
-      
-      $this->t->pfp('out','ht_update_t');
-      $this->t->pfp('addhandle','save');
-      
-      $this->save_sessiondata();
-    }
-
-  function act_list()
-    {
-      $this->t->set_file(array('act_list_t' => 'act_list.tpl'));
-      $this->t->set_block('act_list_t','act_list','list');
-      
-      $this->t->set_var('lang_name','Assignment');
-      $this->t->set_var('lang_date','Date');
-      $this->t->set_var('lang_notes','Description');
-      
-      $sql = "SELECT * FROM 3rd_activity ORDER BY date DESC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $total_records = $this->db->num_rows();
-
-      $i = 0;
-      while ($this->db->next_record())
-       {
-         $activity_list[$i]['activity']  = $this->db->f('activity');
-         $activity_list[$i]['assignment'] = $this->db->f('assignment');
-         $activity_list[$i]['date']  = $this->db->f('date');
-         $activity_list[$i]['notes']  = $this->db->f('notes');
-
-         $sql = "SELECT * FROM 3rd_assignment WHERE assignment='" . $activity_list[$i]['assignment'] . "'";
-         $this->db2->query($sql,__LINE__,__FILE__);
-         if($this->db2->next_record())
-           {
-             $activity_list[$i]['name'] = $this->db2->f('name');
-             $activity_list[$i]['code'] = $this->db2->f('code');
-           }
-         $i++;
-       }
-            
-      for ($i=0; $i < count($activity_list); $i++)
-       {         
-         $this->nextmatchs->template_alternate_row_color(&$this->t);
-         $this->t->set_var('name',$activity_list[$i]['name']);
-         $this->t->set_var('date',$activity_list[$i]['date']);
-         $activity_notes = $activity_list[$i]['notes'];
-         if(strlen($activity_notes) > 40) { $activity_notes = substr($activity_notes,0,40) . "..."; }
-         $this->t->set_var('notes',$activity_notes);
-         
-         $link_data['menuaction'] = '3rd.3rd.act_view';
-         $link_data['activity'] = $activity_list[$i]['activity'];
-         $link_data['action'] = 'view';
-         $this->t->set_var('view',$GLOBALS['phpgw']->link('/3rd/index.php',$link_data));
-         $this->t->set_var('lang_view','View');
-
-         $link_data['menuaction'] = '3rd.3rd.act_update';
-         $link_data['activity'] = $activity_list[$i]['activity'];
-         $link_data['action'] = 'edit';
-         $this->t->set_var('edit',$GLOBALS['phpgw']->link('/3rd/index.php',$link_data));
-         $this->t->set_var('lang_edit','Edit');
-
-         $this->t->fp('list','act_list',True);
-       }
-
-      $link_data['menuaction'] = '3rd.3rd.act_update';
-      $link_data['activity'] = '0';
-      $link_data['action'] = 'add';
-      $this->t->set_var('add','<form method="POST" action="' . $GLOBALS['phpgw']->link('/3rd/index.php',$link_data)
-                       . '"><input type="submit" name="Add" value="' . 'Add Activity' .'"></font></form>');
-
-      $this->t->pfp('out','act_list_t');
-      $this->save_sessiondata();
-    }
-
-  function act_view()
-    {
-      $this->t->set_file(array('act_view_t' => 'act_view.tpl'));
-      $this->t->set_block('act_view_t','part_list','list');
-      
-      $sql = "SELECT * FROM 3rd_activity WHERE activity=" . intval(get_var('activity',array('GET','POST')));
-      $this->db->query($sql,__LINE__,__FILE__);
-      $this->db->next_record();
-      $this->t->set_var('assignment', $this->db->f('assignment'));
-      $this->t->set_var('date', $this->db->f('date'));
-      $this->t->set_var('notes', $this->db->f('notes'));
-      
-      $sql = "SELECT * FROM 3rd_assignment WHERE assignment='" . $this->db->f('assignment') . "'";
-      $this->db2->query($sql,__LINE__,__FILE__);
-      if($this->db2->next_record())
-       {
-         $this->t->set_var('name', $this->db2->f('name'));
-         $this->t->set_var('code', $this->db2->f('code'));
-       }
-      $this->t->set_var('lang_name','Assignment');
-      $this->t->set_var('lang_date','Date');
-      $this->t->set_var('lang_notes','Description');
-      $this->t->set_var('lang_done','Done');
-      $this->t->set_var('lang_action','View');
-
-      $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
-      $this->t->set_var('tr_color',$tr_color);
-            
-      $this->t->set_var('done_action',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.act_list'));
-
-      $link_data['menuaction'] = '3rd.3rd.act_update';
-      $link_data['activity'] = get_var('activity',array('GET','POST'));
-      $link_data['action'] = 'edit';
-      $this->t->set_var('edit',$GLOBALS['phpgw']->link('/3rd/index.php',$link_data));
-      $this->t->set_var('lang_edit','Edit');
-      $this->t->set_var('cal_date',$this->db->f('date'));
-      
-      // Now find out which indivs participated in this activity
-      $sql = "SELECT * FROM 3rd_participation WHERE activity=" . intval(get_var('activity',array('GET','POST')));
-      $this->db->query($sql,__LINE__,__FILE__);
-      $total_records = $this->db->num_rows();
-
-      $i = 0;
-      while ($this->db->next_record())
-       {
-         $part_list[$i]['indiv']  = $this->db->f('indiv');
-         $i++;
-       }
-      
-      for ($i=0; $i < count($part_list); $i++)
-       {
-         $sql = "SELECT * FROM 3rd_indiv WHERE indiv=" . $part_list[$i]['indiv'];
-         $this->db->query($sql,__LINE__,__FILE__);
-         $this->db->next_record();
-         $names[$i] = $this->db->f('name');
-       } sort($names);
-      
-      for ($i=0; $i < count($names); $i++)
-       {
-          //$this->nextmatchs->template_alternate_row_color(&$this->t);
-         $this->t->set_var('indiv_name',$names[$i]);
-         if(($i+1) % 3 == 0) { $this->t->set_var('table_sep',"</td></tr><tr>"); }
-         else { $this->t->set_var('table_sep',"</td>"); }
-         if(($i) % 3 == 0) { $this->nextmatchs->template_alternate_row_color(&$this->t); }
-         $this->t->fp('list','part_list',True);
-       }
-      
-      $this->t->pfp('out','act_view_t');
-      $this->save_sessiondata();
-    }
-
-  function act_update()
-    {
-      $this->t->set_file(array('form' => 'act_update.tpl'));
-      $this->t->set_block('form','indiv_list','list');
-      $this->t->set_block('form','add','addhandle');
-      $this->t->set_block('form','edit','edithandle');
-      $this->t->set_var('lang_done','Done');
-
-      $action = get_var('action',array('GET','POST'));
-      $this->t->set_var('done_action',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.act_list'));
-      $activity['activity'] = intval(get_var('activity',array('GET','POST')));
-      
-      if($action == 'save')
-       {
-         $activity['assignment'] = get_var('assignment',array('POST'));
-         $activity['date'] = get_var('date',array('POST'));
-         $activity['notes']= get_var('notes',array('POST'));
-         $this->db->query("UPDATE 3rd_activity set " .
-                          "   assignment='" . $activity['assignment'] .
-                          "', date='" . $activity['date'] . "'" .
-                          ", notes='" . $activity['notes'] . "'" .
-                          " WHERE activity=" . $activity['activity'],__LINE__,__FILE__);
-
-         // Delete all the individuals who have particiapted in this activity
-         $this->db->query("DELETE from 3rd_participation where activity=".$activity['activity'],__LINE__,__FILE__);
-         
-         // Re-add the individuals who are checked as having participated in this activity
-         $indivs = get_var('indiv_name',array('POST'));
-         if(is_array($indivs)) { // Only do the foreach loop if we have a valid array of indivs to work with
-           foreach ($indivs as $indiv)
-             {
-               $this->db->query("INSERT INTO 3rd_participation (indiv,activity) "
-                                . "VALUES (" . $indiv . ",". $activity['activity'] . ")",__LINE__,__FILE__);
-             }
-         }
-         
-         $this->act_list();
-         return false;
-       }
-
-      if($action == 'insert')
-       {
-         $activity['assignment'] = get_var('assignment',array('POST'));
-         $activity['date'] = get_var('date',array('POST'));
-         $activity['notes']= get_var('notes',array('POST'));
-         $this->db->query("INSERT INTO 3rd_activity (assignment,date,notes) "
-                          . "VALUES ('" . $activity['assignment'] . "','"
-                          . $activity['date'] . "','" . $activity['notes'] . "')",__LINE__,__FILE__);
-
-         $sql = "SELECT * FROM 3rd_activity WHERE assignment='".$activity['assignment']."' "
-            . " AND date='".$activity['date']."' AND notes='".$activity['notes']."'";
-         $this->db->query($sql,__LINE__,__FILE__);
-         if($this->db->next_record()) {
-           //print "activity: " . $this->db->f('activity') . "<br>";
-           $activity['activity'] = $this->db->f('activity');
-         }
-         
-         $indivs = get_var('indiv_name',array('POST'));
-         foreach ($indivs as $indiv)
-           {
-             $this->db->query("INSERT INTO 3rd_participation (indiv,activity) "
-                              . "VALUES (" . $indiv . ",". $activity['activity'] . ")",__LINE__,__FILE__);
-           }
-         
-         $this->act_list();
-         return false;
-       }
-      
-      if($action == 'add')
-       {
-         $activity['activity'] = 0;
-         $this->t->set_var('cal_date',$this->jscal->input('date','','','','','','',$this->cal_options));
-         $this->t->set_var('assignment','');
-         $this->t->set_var('date','');
-         $this->t->set_var('notes','');
-         $this->t->set_var('lang_done','Cancel');
-         $this->t->set_var('lang_action','Adding New Activity');
-         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.act_update&activity='
-                                                               . $activity['activity'] . '&action=' . 'insert'));
-       }
-
-      if($action == 'edit')
-       {
-         $sql = "SELECT * FROM 3rd_activity WHERE activity=" . $activity['activity'];
-         $this->db->query($sql,__LINE__,__FILE__);
-         $this->db->next_record();
-         $this->t->set_var('cal_date',$this->jscal->input('date',$this->db->f('date'),'','','','','',$this->cal_options));
-         $this->t->set_var('assignment', $this->db->f('assignment'));
-         $assignment = $this->db->f('assignment');
-         $this->t->set_var('date', $this->db->f('date'));
-         $this->t->set_var('notes', $this->db->f('notes'));
-         $this->t->set_var('lang_done','Cancel');
-         $this->t->set_var('lang_action','Editing Activity');
-         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.act_update&activity='
-                                                               . $activity['activity'] . '&action=' . 'save'));
-
-       }
-
-      // Create the assignments drop-down list
-      $sql = "SELECT * FROM 3rd_assignment ORDER BY name ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i = 0;
-      while ($this->db->next_record())
-       {
-         $assignments[$i]['assignment']  = $this->db->f('assignment');
-         $assignments[$i]['name'] = $this->db->f('name');
-         $assignments[$i]['code'] = $this->db->f('code');
-         $i++;
-       }
-      
-      $assignment_data.= '<select name=assignment>';
-      $assignment_data.= '<option value=0></option>';  
-      for ($j=0; $j < count($assignments); $j++) {
-       $id = $assignments[$j]['assignment'];
-       $name = $assignments[$j]['name'];
-       if($assignments[$j]['assignment'] == $assignment) { $selected[$id] = 'selected="selected"'; } else { $selected[$id] = ''; }
-       $assignment_data.= '<option value='.$id.' '.$selected[$id].'>'.$name.'</option>';
-      }
-      $assignment_data.='</select>';
-      $this->t->set_var('assignment_data',$assignment_data);
-      
-      // Create individual selection boxes
-      $sql = "SELECT * FROM 3rd_indiv";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i=0;
-      while ($this->db->next_record())
-       {
-         if($this->db->f('valid') == 1 || $action != 'add') {
-           $indiv_name[$i] = $this->db->f('name');
-           $indiv_id[$i] = $this->db->f('indiv');
-           $indiv_valid[$i] = $this->db->f('valid');
-           $i++;
-         }
-       }
-      array_multisort($indiv_name, $indiv_id, $indiv_valid);
-
-      $j=0;
-      for ($i=0; $i < count($indiv_id); $i++)
-       {
-         //$this->nextmatchs->template_alternate_row_color(&$this->t);
-         $sql = "SELECT * FROM 3rd_participation where activity=". $activity['activity'] . " AND indiv=" . $indiv_id[$i];
-         $this->db->query($sql,__LINE__,__FILE__);
-         if($this->db->next_record()) { $this->t->set_var('checked','checked'); $checked=1; }
-         else { $this->t->set_var('checked',''); $checked=0; }
-         if($checked || $indiv_valid[$i] == 1) {
-           $this->t->set_var('indiv_name',$indiv_name[$i]);
-           $this->t->set_var('indiv',$indiv_id[$i]);
-           if(($j+1) % 3 == 0) { $this->t->set_var('table_sep',"</td></tr><tr>"); }
-           else { $this->t->set_var('table_sep',"</td>"); }
-           if(($j) % 3 == 0) { $this->nextmatchs->template_alternate_row_color(&$this->t); }
-           $this->t->fp('list','indiv_list',True);
-           $j++;
-         }
-       }
-      
-      $this->t->set_var('lang_reset','Clear Form');
-      $this->t->set_var('lang_add','Add Activity');
-      $this->t->set_var('lang_save','Save Changes');
-      $this->t->set_var('edithandle','');
-      $this->t->set_var('addhandle','');
-      
-      $this->t->pfp('out','form');
-      if($action == 'edit') { $this->t->pfp('addhandle','edit'); }
-      if($action == 'add') { $this->t->pfp('addhandle','add'); }
-      
-      $this->save_sessiondata();
-    }
-
-    function assign_view()
-    {
-      $this->t->set_file(array('assign_view_t' => 'assign_view.tpl'));
-      $this->t->set_block('assign_view_t','assign_view','list');
-      
-      $this->t->set_var('lang_name','Assignment Name');
-      $this->t->set_var('lang_code','Code');
-      
-      $sql = "SELECT * FROM 3rd_assignment ORDER BY name ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $total_records = $this->db->num_rows();
-
-      $i = 0;
-      while ($this->db->next_record())
-       {
-         $assignment_list[$i]['assignment']  = $this->db->f('assignment');
-         $assignment_list[$i]['name'] = $this->db->f('name');
-         $assignment_list[$i]['code'] = $this->db->f('code');
-         $i++;
-       }
-            
-      for ($i=0; $i < count($assignment_list); $i++)
-       {         
-         $this->nextmatchs->template_alternate_row_color(&$this->t);
-         $this->t->set_var('name',$assignment_list[$i]['name']);
-         $this->t->set_var('code',$assignment_list[$i]['code']);
-         
-         $link_data['menuaction'] = '3rd.3rd.assign_update';
-         $link_data['assignment'] = $assignment_list[$i]['assignment'];
-         $link_data['action'] = 'edit';
-         $this->t->set_var('edit',$GLOBALS['phpgw']->link('/3rd/index.php',$link_data));
-         $this->t->set_var('lang_edit','Edit');
-
-         $link_data['menuaction'] = '3rd.3rd.assign_update';
-         $link_data['assignment'] = '0';
-         $link_data['action'] = 'add';
-         $this->t->set_var('add','<form method="POST" action="' . $GLOBALS['phpgw']->link('/3rd/index.php',$link_data)
-                           . '"><input type="submit" name="Add" value="' . 'Add Assignment' .'"></font></form>');
-
-         $this->t->fp('list','assign_view',True);
-       }
-
-      $this->t->pfp('out','assign_view_t');
-      $this->save_sessiondata();
-    }
-
-    function assign_update()
-    {
-      $this->t->set_file(array('form' => 'assign_update.tpl'));
-      $this->t->set_block('form','add','addhandle');
-      $this->t->set_block('form','edit','edithandle');
-      $this->t->set_var('lang_done','Done');
-
-      $action = get_var('action',array('GET','POST'));
-      $this->t->set_var('done_action',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.assign_view'));
-      $assignment['assignment'] = intval(get_var('assignment',array('GET','POST')));
-
-      if($action == 'save')
-       {
-         $assignment['name'] = get_var('name',array('POST'));
-         $assignment['code'] = get_var('code',array('POST'));
-         $this->db->query("UPDATE 3rd_assignment set " .
-                          "  name='" . $assignment['name'] . "'" .
-                          ", code='" . $assignment['code'] . "'" .
-                          " WHERE assignment=" . $assignment['assignment'],__LINE__,__FILE__);
-         
-         $this->assign_view();
-         return false;
-       }
-
-      if($action == 'insert')
-       {
-         $assignment['name'] = get_var('name',array('POST'));
-         $assignment['code'] = get_var('code',array('POST'));
-         $this->db->query("INSERT INTO 3rd_assignment (name,code) "
-                          . "VALUES ('" . $assignment['name'] . "','"
-                          . $assignment['code'] . "')",__LINE__,__FILE__);
-         $this->assign_view();
-         return false;
-       }
-      
-      if($action == 'add')
-       {
-         $assignment['assignment'] = 0;
-         $this->t->set_var('name','');
-         $this->t->set_var('code','');
-         $this->t->set_var('lang_done','Cancel');
-         $this->t->set_var('lang_action','Adding New Assignment');
-         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.assign_update&assignment='
-                                                               . $assignment['assignment'] . '&action=' . 'insert'));
-       }
-
-      if($action == 'edit')
-       {
-         $sql = "SELECT * FROM 3rd_assignment WHERE assignment=" . $assignment['assignment'];
-         $this->db->query($sql,__LINE__,__FILE__);
-         $this->db->next_record();
-         $this->t->set_var('name', $this->db->f('name'));
-         $this->t->set_var('code', $this->db->f('code'));
-         $this->t->set_var('lang_done','Cancel');
-         $this->t->set_var('lang_action','Editing Assignment');
-         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.assign_update&assignment='
-                                                               . $assignment['assignment'] . '&action=' . 'save'));
-
-       }
-      
-      $this->t->set_var('lang_reset','Clear Form');
-      $this->t->set_var('lang_add','Add Assignment');
-      $this->t->set_var('lang_save','Save Changes');
-      $this->t->set_var('edithandle','');
-      $this->t->set_var('addhandle','');
-      
-      $this->t->pfp('out','form');
-      if($action == 'edit') { $this->t->pfp('addhandle','edit'); }
-      if($action == 'add') { $this->t->pfp('addhandle','add'); }
-      
-      $this->save_sessiondata();
-    }
-
-  function par_view()
-    {
-      $this->t->set_file(array('par_view_t' => 'par_view.tpl'));
-      $this->t->set_block('par_view_t','header_list','list1');
-      $this->t->set_block('par_view_t','indiv_list','list2');
-
-      $sql = "SELECT * FROM 3rd_indiv where valid=1";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i=0;
-      while ($this->db->next_record())
-       {
-         $indiv_name[$i] = $this->db->f('name');
-         $indiv_id[$i] = $this->db->f('indiv');
-         $i++;
-       }
-      array_multisort($indiv_name, $indiv_id);
-
-      $sql = "SELECT * FROM 3rd_activity ORDER BY date DESC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $total_records = $this->db->num_rows();
-
-      $i = 0;
-      while ($this->db->next_record())
-       {
-         $activity_list[$i]['assignment'] = $this->db->f('assignment');
-         $activity_list[$i]['date'] = $this->db->f('date');
-         $activity_list[$i]['activity']  = $this->db->f('activity');
-         $i++;
-       }
-
-      $sql = "SELECT * FROM 3rd_assignment ORDER BY name ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i=0;
-      while($this->db->next_record())
-       {
-         $assignment_list[$i]['assignment'] = $this->db->f('assignment');
-         $assignment_list[$i]['name'] = $this->db->f('name');
-         $assignment_list[$i]['code'] = $this->db->f('code');
-         $i++;
-       }
-      
-      $indiv_width=300; $part_width=25; $assignment_width=50;
-      $total_width=$indiv_width+$part_width;
-      for ($i=0; $i < count($assignment_list); $i++) {
-       $this->t->set_var('assignment_name',$assignment_list[$i]['name']);
-       $this->t->set_var('assignment_code',$assignment_list[$i]['code']);
-       $this->t->fp('list1','header_list',True);
-       $total_width += $assignment_width;
-      }
-
-      for ($i=0; $i < count($indiv_id); $i++) {
-       $participated=0; $part_table = ''; 
-       $this->nextmatchs->template_alternate_row_color(&$this->t);
-       $this->t->set_var('indiv_name',$indiv_name[$i]);
-       for ($j=0; $j < count($assignment_list); $j++) {
-         $date = "0000-00-00"; $checkmark=0; $num_matches=0;
-         for ($k=0; $k < count($activity_list); $k++) {
-           if($assignment_list[$j]['assignment'] == $activity_list[$k]['assignment']) { 
-             $sql = "SELECT * FROM 3rd_participation where "
-                . " activity=" . $activity_list[$k]['activity']
-                . " AND indiv=" . $indiv_id[$i];
-             $this->db->query($sql,__LINE__,__FILE__);
-             while($this->db->next_record()) {
-               if($activity_list[$k]['date'] > $date) { 
-                 $date = $activity_list[$k]['date'];
-               }
-               $checkmark=1;
-               $num_matches++;
-               $participated++;
-             }
-           }
-         }
-         if($checkmark) {
-           $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="images/checkmark.gif">'.$participated.'</td>'; }
-       else { $part_table .= '<td>&nbsp;</td>'; }
-       $this->t->set_var('part_table',$part_table);
-       $this->t->fp('list2','indiv_list',True);
-      }
-      $this->t->set_var('total_width',$total_width);
-      $this->t->set_var('indiv_width',$indiv_width);
-      $this->t->set_var('part_width',$part_width);
-      $this->t->set_var('act_width',$act_width);
-      $this->t->pfp('out','par_view_t');
-      $this->save_sessiondata(); 
-    }
-
-    function willing_view()
-    {
-      $this->t->set_file(array('willing_view_t' => 'willing_view.tpl'));
-      $this->t->set_block('willing_view_t','header_list','list1');
-      $this->t->set_block('willing_view_t','indiv_list','list2');
-
-      $this->t->set_var('lang_filter','Filter');
-      $this->t->set_var('lang_filter_unwilling','Filter out unwilling individuals:');
-
-      $filter_unwilling = get_var('filter_unwilling',array('POST'));
-      $this->t->set_var('filter_unwilling',$filter_unwilling);
-      
-      if($filter_unwilling == 'y' || $filter_unwilling == '') { 
-       $filter_input = "<input type=\"radio\" name=\"filter_unwilling\" value=\"y\" checked>Y";
-       $filter_input.= "<input type=\"radio\" name=\"filter_unwilling\" value=\"n\">N";
-       $filter_input.= "&nbsp;&nbsp;";
-      } else {
-       $filter_input = "<input type=\"radio\" name=\"filter_unwilling\" value=\"y\">Y";
-       $filter_input.= "<input type=\"radio\" name=\"filter_unwilling\" value=\"n\" checked>N";
-       $filter_input.= "&nbsp;&nbsp;";
-      }
-      $this->t->set_var('filter_input',$filter_input);
-      
-      $sql = "SELECT * FROM 3rd_indiv where valid=1";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i=0;
-      while ($this->db->next_record())
-       {
-         $indiv_name[$i] = $this->db->f('name');
-         $indiv_id[$i] = $this->db->f('indiv');
-         $indiv_phone[$indiv_id[$i]] = $this->db->f('phone');
-         $i++;
-       }
-      array_multisort($indiv_name, $indiv_id);
-
-      $sql = "SELECT * FROM 3rd_assignment ORDER BY name ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i=0;
-      while($this->db->next_record())
-       {
-         $assignment_list[$i]['assignment'] = $this->db->f('assignment');
-         $assignment_list[$i]['name'] = $this->db->f('name');
-         $assignment_list[$i]['code'] = $this->db->f('code');
-         $i++;
-       }
-
-      $sql = "SELECT * FROM 3rd_activity ORDER BY date DESC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $total_records = $this->db->num_rows();
-
-      $i = 0;
-      while ($this->db->next_record())
-       {
-         $activity_list[$i]['assignment'] = $this->db->f('assignment');
-         $activity_list[$i]['date'] = $this->db->f('date');
-         $activity_list[$i]['activity']  = $this->db->f('activity');
-         $i++;
-       }
-      
-      $indiv_width=275; $willing_width=40; $assignment_width=50;
-      $total_width=$indiv_width+$willing_width;
-      
-      for ($i=0; $i < count($assignment_list); $i++) {
-       $this->t->set_var('assignment_name',$assignment_list[$i]['name']);
-       $this->t->set_var('assignment_code',$assignment_list[$i]['code']);
-       $this->t->fp('list1','header_list',True);
-       $total_width += $assignment_width;
-       $total_willing[$i] = 0;
-      }
-
-      for ($i=0; $i < count($indiv_id); $i++) {
-       $willing_table = ''; $indiv_willing=0;
-       $this->t->set_var('indiv_name',$indiv_name[$i]);
-       $this->t->set_var('indiv_phone',$indiv_phone[$indiv_id[$i]]);
-       $this->t->set_var('editurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.willing_update&indiv_id='
-                                                           . $indiv_id[$i] . '&action=' . 'edit'));
-       for ($j=0; $j < count($assignment_list); $j++) {
-         $found_willingness=0; 
-         $sql = "SELECT * FROM 3rd_willingness where "
-            . " assignment=" . $assignment_list[$j]['assignment']
-            . " AND indiv=" . $indiv_id[$i];
-         $this->db->query($sql,__LINE__,__FILE__);
-         while($this->db->next_record()) {
-           $found_willingness=1;
-           $date_part="";
-           $sql = "SELECT * FROM 3rd_activity where "
-              . " assignment=". $assignment_list[$j]['assignment']
-              . " ORDER by date DESC";
-           $this->db2->query($sql,__LINE__,__FILE__);
-           if($this->db2->next_record()) {
-             $activity = $this->db2->f('activity');
-             $date = $this->db2->f('date');
-             $sql = "SELECT * FROM 3rd_participation where "
-                . " activity=" . $activity
-                . " AND indiv=". $indiv_id[$i];
-             $this->db3->query($sql,__LINE__,__FILE__);
-             if($this->db3->next_record()) {
-               $date_part = $date;
-             } 
-           }
-             
-           if($this->db->f('willing') == 'y') {
-             $total_willing[$j]++;
-             $indiv_willing=1;
-             $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="images/x.gif"></td>';
-           }
-           else {
-             $indiv_willing=1;
-             $willing_table .= "<td>&nbsp;</td>";
-           }
-         }
-         if(!$found_willingness) {
-           $indiv_willing=1;
-           $willing_table .= "<td>&nbsp;</td>";
-         }
-       }
-       if(($indiv_willing == 1) || ($filter_unwilling == 'n')) { 
-         $this->t->set_var('willing_table',$willing_table);
-         $this->t->fp('list2','indiv_list',True);
-         $this->nextmatchs->template_alternate_row_color(&$this->t);
-       } 
-      }
-
-      $stat_table = '<td><b>Total Willing to Serve</b></td>';
-      for ($j=0; $j < count($assignment_list); $j++) {
-       $stat_table .= "<td align=center><b>".$total_willing[$j]."</b></td>";
-      }
-      $this->t->set_var('stat_table',$stat_table);
-      
-      $this->t->set_var('total_width',$total_width);
-      $this->t->set_var('indiv_width',$indiv_width);
-      $this->t->set_var('willing_width',$willing_width);
-      $this->t->pfp('out','willing_view_t');
-      $this->save_sessiondata(); 
-    }
-    
-  function willing_update()
-    {
-      //print "<font color=red>Willingness Update Under Constrcution</font>";
-      //$this->willing_view();
-      //return false;
-      
-      $this->t->set_file(array('willing_update_t' => 'willing_update.tpl'));
-      $this->t->set_block('willing_update_t','assignment_list','list');
-      $this->t->set_block('willing_update_t','save','savehandle');
-      
-      $indiv_id = get_var('indiv_id',array('GET','POST'));
-      $this->t->set_var('indiv_id',$indiv_id);
-      $action = get_var('action',array('GET','POST'));
-      
-      $this->t->set_var('done_action',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.willing_view'));
-      $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.willing_update&action=save'));
-      $this->t->set_var('lang_done','Cancel');
-      $this->t->set_var('title','Willingness Update ');
-      
-      if($action == 'save')
-       {
-         // Delete all the previous willingness entries for this individual
-         $this->db->query("DELETE from 3rd_willingness where indiv=" . $indiv_id ,__LINE__,__FILE__);
-             
-         // Now, add the assignment willingness that is checked for this individual
-         $new_data = get_var('willingness',array('POST'));
-         foreach ($new_data as $data)
-           {
-             $data_array = explode("/",$data);
-             $assignment = $data_array[0];
-             $willing = $data_array[1];
-             //print "indiv_id: $indiv_id assignment: $assignment willing: $willing<br>";
-             $this->db->query("INSERT INTO 3rd_willingness (indiv,assignment,willing) "
-                              . "VALUES (" . $indiv_id .",". $assignment .",'". $willing . "')",__LINE__,__FILE__);
-           }      
-         $this->willing_view();
-         return false;
-       }
-      
-      $assignment_width=300; $willing_width=25; $table_width=$assignment_width + $willing_width;
-      $table_data=""; 
-
-      // Find out the individual's name
-      $sql = "SELECT * FROM 3rd_indiv WHERE indiv=".$indiv_id." AND valid=1";
-      $this->db->query($sql,__LINE__,__FILE__);
-      if($this->db->next_record()) {
-       $indiv_name = $this->db->f('name');
-       $this->t->set_var('indiv_name',$indiv_name);
-      }
-      
-      // Select all the assignments
-      $sql = "SELECT * FROM 3rd_assignment ORDER by name ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      
-      while ($this->db->next_record())
-       {
-         $assignment = $this->db->f('assignment');
-         $assignment_name = $this->db->f('name');
-         $assignment_code = $this->db->f('code');
-
-         $this->nextmatchs->template_alternate_row_color(&$this->t);
-         $table_data.="<tr bgcolor=". $this->t->get_var('tr_color') ."><td>$assignment_name</td>";
-         
-         $header_row="<th width=$comp_width><font size=-2>Assignments</th><th>Willingness</th>";
-         $sql = "SELECT * FROM 3rd_willingness WHERE indiv=".$indiv_id." AND assignment=".$assignment;
-         $this->db2->query($sql,__LINE__,__FILE__);
-         $value = $assignment;
-            
-         if($this->db2->next_record()) {
-             if($this->db2->f('willing') == 'y') {
-               $table_data .= '<td width=100 align=center>';
-               $table_data .= '<input type="radio" name="willingness['.$assignment.']" value="'.$value.'/y" checked>Y';
-               $table_data .= '<input type="radio" name="willingness['.$assignment.']" value="'.$value.'/n">N';
-               $table_data .= '<input type="radio" name="willingness['.$assignment.']" value="'.$value.'/"> ';
-               $table_data .= '</td>';
-             } else if($this->db2->f('willing') == 'n') {
-               $table_data .= '<td width=100 align=center>';
-               $table_data .= '<input type="radio" name="willingness['.$assignment.']" value="'.$value.'/y">Y';
-               $table_data .= '<input type="radio" name="willingness['.$assignment.']" value="'.$value.'/n" checked>N';
-               $table_data .= '<input type="radio" name="willingness['.$assignment.']" value="'.$value.'/">';
-               $table_data .= '</td>';
-             } else {
-               $table_data .= '<td width=100 align=center>';
-               $table_data .= '<input type="radio" name="willingness['.$assignment.']" value="'.$value.'/y">Y';
-               $table_data .= '<input type="radio" name="willingness['.$assignment.']" value="'.$value.'/n">N';
-               $table_data .= '<input type="radio" name="willingness['.$assignment.']" value="'.$value.'/" checked> ';
-               $table_data .= '</td>';
-             }
-           }
-         else {
-           $table_data .= '<td width=100 align=center>';
-           $table_data .= '<input type="radio" name="willingness['.$assignment.']" value="'.$value.'/y">Y';
-           $table_data .= '<input type="radio" name="willingness['.$assignment.']" value="'.$value.'/n">N';
-           $table_data .= '<input type="radio" name="willingness['.$assignment.']" value="'.$value.'/" checked> ';
-           $table_data .= '</td>';
-         }
-         
-         $table_data .= "\n";
-         $table_data .= "</tr>"; 
-         $table_data .= "<tr><td colspan=20></td></tr>";
-       }
-      
-      $table_data .= "<tr><td colspan=20><hr></td></tr>";
-      
-      $this->t->set_var('table_width',$table_width);
-      $this->t->set_var('header_row',$header_row);
-      $this->t->set_var('table_data',$table_data);
-      $this->t->fp('list','assignment_list',True);
-
-      $this->t->set_var('lang_reset','Clear Form');
-      $this->t->set_var('lang_save','Save Changes');
-      $this->t->set_var('savehandle','');
-      
-      $this->t->pfp('out','willing_update_t');
-      $this->t->pfp('addhandle','save');
-      
-      $this->save_sessiondata();
-    }
-    
-    
-    function ppi_sched()
-      {
-      $this->t->set_file(array('ppi_sched_t' => 'ppi_sched.tpl'));
-      $this->t->set_block('ppi_sched_t','indiv_list','indivlist');
-      $this->t->set_block('ppi_sched_t','appt_list','apptlist');
-      $action = get_var('action',array('GET','POST'));
-
-      $this->t->set_var('lang_save','Save Appt / Pri / Notes');
-      $this->t->set_var('lang_reset','Clear Changes');
-      
-      $this->t->set_var('ppi_link',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.ppi_view'));
-      $this->t->set_var('ppi_link_title','Yearly PPIs');
-      
-      $this->t->set_var('schedule_ppi_link',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.ppi_sched'));
-      $this->t->set_var('schedule_ppi_link_title','Schedule Yearly PPIs');
-
-      $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.ppi_sched&action=save'));
-      $this->t->set_var('title','Yearly PPI Scheduler');
-
-      $indiv_width=500; $phone_width=25; $pri_width=10; $notes_width=128; $ppi_date_width=20;
-      $table_width=$indiv_width + $phone_width + $pri_width + $notes_width + $ppi_date_width;
-      $header_row = "<th width=$indiv_width><font size=-2>individual Name</th>";
-      $header_row.= "<th width=$phone_width><font size=-2>Phone</th>";
-      $header_row.= "<th width=$pri_width><font size=-2>Priority</th>";
-      $header_row.= "<th width=$ppi_date_width><font size=-2>Last PPI</th>";
-      $header_row.= "<th width=$notes_width><font size=-2>Scheduling Notes</th>";
-      $table_data=""; $completed_data=""; $totals_data="";
-
-      $year = date('Y');
-
-      // Get the EQ President
-      $sql = "SELECT * FROM 3rd_presidency where president=1 and valid=1";
-      $this->db->query($sql,__LINE__,__FILE__);
-      if($this->db->next_record()) {
-       $president_name = $this->db->f('name');
-       $president_name_array = explode(",",$president_name);
-       $president_last_name = $president_name_array[0];
-       $president_id = $this->db->f('indiv');
-       $presidency_id = $this->db->f('presidency');
-       $interviewer = $this->db->f('indiv');
-       $district_number = '*';
-       $district_name = $president_name;
-       $sql = "SELECT * FROM 3rd_indiv where indiv='$president_id'";
-       $this->db2->query($sql,__LINE__,__FILE__);
-       if($this->db2->next_record()) {
-         $indiv_id = $this->db2->f('indiv_id');
-       }
-       $sql = "SELECT * FROM 3rd_parent where indiv_id='$indiv_id'";
-       $this->db2->query($sql,__LINE__,__FILE__);
-       if($this->db2->next_record()) {
-         $president_address = $this->db2->f('address');
-       }
-      } else {
-       print "<hr><font color=red><h3>-E- Unable to locate President in 3rd_presidency table</h3></font></hr>";
-       return;
-      }
-
-      if($action == 'save')
-       {
-         // Save any changes made to the appointment table
-         $new_data = get_var('appt_notes',array('POST'));
-         if($new_data != "") { 
-           foreach ($new_data as $entry)
-             {
-               $indiv = $entry['indiv'];
-               $appointment = $entry['appointment'];
-               $location = $entry['location'];
-               if($location == "") { $location = "$president_last_name"." home ($president_address)"; }
-               if($indiv == 0) { $location = ""; }
-               
-               //Only perform a database update if we have made a change to this appointment
-               $sql = "SELECT * FROM 3rd_appointment where appointment='$appointment' and indiv='$indiv' and location='$location'";
-               $this->db->query($sql,__LINE__,__FILE__);
-               if(!$this->db->next_record()) {
-                 // Perform database save actions here
-                 $this->db->query("UPDATE 3rd_appointment set " .
-                                  " indiv='" . $indiv . "'" .
-                                  ",location='" . $location . "'" .
-                                  " WHERE appointment=" . $appointment,__LINE__,__FILE__);
-                 // Email the appointment
-                 $this->email_appt($appointment);
-               }
-               
-             }
-         }
-         
-         // Save any changes made to the ppi notes table
-         $new_data = get_var('ppi_notes',array('POST'));
-         foreach ($new_data as $entry)
-          {
-            $ppi_notes = $entry['notes'];
-            $indiv_id = $entry['indiv_id'];
-            $ppi_pri = $entry['pri'];
-            
-            // Perform database save actions here
-            $this->db->query("UPDATE 3rd_indiv set " .
-                             " ppi_notes='" . $ppi_notes . "'" .
-                             ",ppi_pri='" . $ppi_pri . "'" .
-                             " WHERE indiv=" . $indiv_id,__LINE__,__FILE__);
-            
-          }
-
-         $take_me_to_url = $GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.ppi_sched');
-         //Header('Location: ' . $take_me_to_url);
-       }
-      
-      // create the individual id -> individual name mapping
-      $sql = "SELECT * FROM 3rd_indiv where valid=1 ORDER BY name ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i=0;
-      $indiv_id = NULL;
-      $indiv_name = NULL;
-      while ($this->db->next_record())
-       {
-         $indiv_name[$i] = $this->db->f('name');
-         $indiv_id[$i] = $this->db->f('indiv');
-         $i++;
-       }
-      array_multisort($indiv_name, $indiv_id);
-
-      // APPOINTMENT TABLE
-      $date_width=250; $time_width=100; $indiv_width=200; $location_width=100;
-      $appt_table_width=$date_width + $time_width + $indiv_width + $location_width;
-      $appt_header_row = "<th width=$date_width><font size=-2>Date</th>";
-      $appt_header_row.= "<th width=$time_width><font size=-2>Time</th>";      
-      $appt_header_row.= "<th width=$indiv_width><font size=-2>indiv</th>";
-      $appt_header_row.= "<th width=$location_width><font size=-2>Location</th>";
-      $appt_table_data = ""; 
-
-      $total_indivs=0; $indivs_with_yearly_ppi=0;
-      
-      // Display a scheduling table for the EQ President
-      $table_data=""; $appt_table_data="";
-      $table_title = "District ".$district_number.": ".$district_name.": All indivs with Yearly PPI Not Completed";
-      $appt_table_title = "District ".$district_number.": ".$district_name.": Yearly PPI Appointment Slots";
-      $this->t->set_var('table_title',$table_title);
-      $this->t->set_var('appt_table_title',$appt_table_title);
-      
-      // query the database for all the appointments
-      $sql = "SELECT * FROM 3rd_appointment where presidency=".$presidency_id." and date>=CURDATE() ORDER BY date ASC, time ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-       
-      while ($this->db->next_record())
-       {
-         $appointment = $this->db->f('appointment');
-         $indiv = $this->db->f('indiv');
-         $location = $this->db->f('location');
-         if(($location == "") && ($indiv > 0)) { $location = "$president_last_name"." home ($president_address)"; }
-         
-         $date = $this->db->f('date');
-         $date_array = explode("-",$date);
-         $year = $date_array[0]; $month = $date_array[1]; $day = $date_array[2];
-         $day_string = date("l d-M-Y", mktime(0,0,0,$month,$day,$year));
-         
-         $time = $this->db->f('time');
-         $time_array = explode(":",$time);
-         $time_string = date("g:i a", mktime($time_array[0], $time_array[1], $time_array[2]));
-         
-         $appt_table_data.= "<tr bgcolor=". $this->t->get_var('tr_color') .">";
-         $appt_table_data.= "<td align=center>$day_string</td>";
-         $appt_table_data.= "<td align=center>$time_string</td>";
-
-         $appt_table_data.= '<td align=center><select name=appt_notes['.$appointment.'][indiv]>';
-         $appt_table_data.= '<option value=0></option>';
-         for ($i=0; $i < count($indiv_id); $i++) {
-           $id = $indiv_id[$i];
-           $name = $indiv_name[$i];
-           if($indiv_id[$i] == $indiv) { $selected[$id] = 'selected="selected"'; } else { $selected[$id] = ''; }
-           $appt_table_data.= '<option value='.$id.' '.$selected[$id].'>'.$name.'</option>';
-         }
-         $appt_table_data.='</select></td>';
-         
-         $appt_table_data.= '<td align=center><input type=text size="35" maxlength="120" ';
-         $appt_table_data.= 'name="appt_notes['.$appointment.'][location]" value="'.$location.'">';
-         
-         $appt_table_data.= '<input type=hidden name="appt_notes['.$appointment.'][appointment]" value="'.$appointment.'">';
-         
-         $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
-         $this->t->set_var('tr_color',$tr_color);
-       }
-
-      $this->t->set_var('appt_table_data',$appt_table_data);
-      $this->t->set_var('appt_header_row',$appt_header_row);
-      $this->t->set_var('appt_table_width',$appt_table_width);
-
-      // PPI SCHEDULING TABLE
-      $sql = "SELECT * FROM 3rd_indiv where valid=1 ORDER BY ppi_pri ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      
-      $i=0; 
-      $indiv_id = NULL;
-      while ($this->db->next_record())
-       {
-         $indiv_id[$i] = $this->db->f('indiv');
-         $indiv_name[$i] = $this->db->f('name');
-         $indiv_phone[$indiv_id[$i]] = $this->db->f('phone');
-         $indiv_ppi_pri[$indiv_id[$i]] = $this->db->f('ppi_pri');
-         $indiv_ppi_notes[$indiv_id[$i]] = $this->db->f('ppi_notes');
-         $i++;
-         $total_indivs++;
-       }
-
-      $max = count($indiv_id);
-      
-      for($i=0; $i < $max; $i++) {
-          $id = $indiv_id[$i];
-          $name = $indiv_name[$i];
-         $phone = $indiv_phone[$id];
-         $ppi_pri = $indiv_ppi_pri[$id];
-         $ppi_notes = $indiv_ppi_notes[$id];
-
-         // If this individual has had a yearly PPI this year, don't show him on the schedule list
-         $year_start = $year - 1 . "-12-31"; $year_end = $year + 1 . "-01-01";
-         $sql = "SELECT * FROM 3rd_interview WHERE date > '$year_start' AND date < '$year_end' ".
-            "AND indiv=" . $id . " AND interview_type='ppi'";
-         $this->db2->query($sql,__LINE__,__FILE__);
-         
-         if(!$this->db2->next_record()) {
-           $sql = "SELECT * FROM 3rd_interview WHERE indiv=" . $id . " AND interview_type='ppi' ORDER BY date DESC";
-           $this->db->query($sql,__LINE__,__FILE__);
-           if($this->db->next_record()) { $date = $this->db->f('date'); } else { $date = ""; }
-           $link_data['menuaction'] = '3rd.3rd.ppi_update';
-           $link_data['indiv'] = $id;
-           $link_data['name'] = $name;
-           $link_data['interview'] = '';
-           $link_data['interview_type'] = 1;
-           $link_data['action'] = 'add';
-           $link_data['interviewer'] = $interviewer;
-           $link = $GLOBALS['phpgw']->link('/3rd/index.php',$link_data);
-           $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
-           $this->t->set_var('tr_color',$tr_color);
-           $table_data.= "<tr bgcolor=". $this->t->get_var('tr_color') ."><td title=\"$phone\"><a href=$link>$name</a></td>";
-           $table_data.= "<td align=center>$phone</td>";
-           //$table_data.= "<td align=center>$ppi_pri</td>";
-           $table_data.= "<td align=center>";
-           $table_data.= '<select name=ppi_notes['.$i.'][pri]>';
-           foreach(range(0,6) as $num) {
-             if($num == 0) { $num = 1; } else {$num = $num*5; }
-             if($ppi_pri == $num) { $selected[$num] = 'selected="selected"'; } else { $selected[$num] = ''; }
-             $table_data.= '<option value='.$num.' '.$selected[$num].'>'.$num.'</option>';
-           }
-           $table_data.= '</select></td>';
-           $table_data.= "<td align=center>$date</td>";
-           $table_data.= '<td><input type=text size="50" maxlength="128" name="ppi_notes['.$i.'][notes]" value="'.$ppi_notes.'">';
-           $table_data.= '<input type=hidden name="ppi_notes['.$i.'][indiv_id]" value="'.$id.'">';
-           $table_data.= '<input type=hidden name="ppi_notes['.$i.'][indiv_name]" value="'.$name.'">';
-           $table_data.= '</td>';
-           $table_data.= '</tr>';
-         } else {
-           $link_data['menuaction'] = '3rd.3rd.ppi_update';
-           $link_data['interviewer'] = $this->db2->f('interviewer');
-           $link_data['indiv'] = $this->db2->f('indiv');
-           $link_data['name'] = $name;
-           $link_data['interview'] = $this->db2->f('interview');
-           $link_data['interview_type'] = $this->db2->f('interview_type');
-           $link_data['action'] = 'view';
-           $link = $GLOBALS['phpgw']->link('/3rd/index.php',$link_data);    
-           $indivs_with_yearly_ppi++;
-           $date = $this->db2->f('date');
-           $ppi_notes = $this->db2->f('notes');
-           if(strlen($ppi_notes) > 40) { $ppi_notes = substr($ppi_notes,0,40) . "..."; }
-           $tr_color2 = $this->nextmatchs->alternate_row_color($tr_color2);
-           $this->t->set_var('tr_color2',$tr_color2);
-           $completed_data.= "<tr bgcolor=". $this->t->get_var('tr_color2') ."><td title=\"$phone\"><a href=$link>$name</a></td>";
-           $completed_data.= "<td align=center>$phone</td>";
-           $completed_data.= "<td align=center><a href=".$link.">$date</a></td>";
-           $completed_data.= "<td align=left>$ppi_notes</td>";
-           $completed_data.= '</tr>';
-         }
-      } // End for individuals Loop
-
-      $name_width=175; $phone_width=100; $date_width=100; $notes_width=300;
-      $completed_table_width=$name_width + $phone_width + $date_width + $notes_width;
-      $completed_header_row = "<th width=$name_width><font size=-2>Individual Name</th>";
-      $completed_header_row.= "<th width=$phone_width><font size=-2>Phone</th>";      
-      $completed_header_row.= "<th width=$date_width><font size=-2>Date</th>";
-      $completed_header_row.= "<th width=$notes_width><font size=-2>PPI Notes</th>";
-            
-      $this->t->set_var('table_width',$table_width);
-      $this->t->set_var('header_row',$header_row);
-      $this->t->set_var('table_data',$table_data);
-      $this->t->set_var('completed_header_row',$completed_header_row);
-      $this->t->set_var('completed_table_width',$completed_table_width);
-      $this->t->set_var('completed',$completed_data);
-      $this->t->fp('indivlist','indiv_list',True); 
-      
-      $indivs_width=300; $totals_width=100;
-      $totals_table_width=$indivs_width + $totals_width;
-      $totals_header_row = "<th width=$indivs_width><font size=-2>Individuals</th>";
-      $totals_header_row.= "<th width=$totals_width><font size=-2>$year</th>";
-      $totals_data.= "<tr bgcolor=". $this->t->get_var('tr_color') .">";
-      $totals_data.= "<td align=left><font size=-2><b>Total Individuals with yearly PPIs completed:</b></font></td>";
-      $totals_data.= "<td align=center><font size=-2><b>$indivs_with_yearly_ppi / $total_indivs</b></font></td>";
-      $percent = ceil(($indivs_with_yearly_ppi / $total_indivs)*100);
-      $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
-      $this->t->set_var('tr_color',$tr_color);
-      $totals_data.= "<tr bgcolor=". $this->t->get_var('tr_color') .">";
-      $totals_data.= "<td align=left><font size=-2><b>Percentage:</b></font></td>";
-      $totals_data.= "<td align=center><font size=-2><b>$percent%</b></font></td>";
-      $totals_data.= "</tr>";
-
-      $this->t->set_var('totals',$totals_data);
-      $this->t->set_var('totals_header_row',$totals_header_row);
-      $this->t->set_var('totals_table_width',$totals_table_width);
-      
-      $this->t->pfp('out','ppi_sched_t');
-      $this->save_sessiondata(); 
-      
-    }
-  
-  function int_sched()
-    {
-      $this->t->set_file(array('int_sched_t' => 'int_sched.tpl'));
-      $this->t->set_block('int_sched_t','indiv_list','indivlist');
-      $this->t->set_block('int_sched_t','appt_list','apptlist');
-      $action = get_var('action',array('GET','POST'));
-
-      $this->t->set_var('lang_save','Save Appt / Pri / Notes');
-      $this->t->set_var('lang_reset','Clear Changes');
-      
-      $this->t->set_var('int_link',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.int_view'));
-      $this->t->set_var('int_link_title','Hometeaching Interviews');
-      
-      $this->t->set_var('schedule_int_link',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.int_sched'));
-      $this->t->set_var('schedule_int_link_title','Schedule Hometeaching Interviews');
-
-      $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.int_sched&action=save'));
-      $this->t->set_var('title','Hometeaching Interviews Scheduler');
-
-      $indiv_width=500; $phone_width=25; $pri_width=10; $notes_width=128; $int_date_width=20;
-      $table_width=$indiv_width + $phone_width + $pri_width + $notes_width + $int_date_width;
-      $header_row = "<th width=$indiv_width><font size=-2>individual Name</th>";
-      $header_row.= "<th width=$phone_width><font size=-2>Phone</th>";
-      $header_row.= "<th width=$pri_width><font size=-2>Priority</th>";
-      $header_row.= "<th width=$int_date_width><font size=-2>Last Interview</th>";
-      $header_row.= "<th width=$notes_width><font size=-2>Scheduling Notes</th>";
-      $table_data=""; $completed_data=""; $totals_data="";
-
-      $year = date('Y');
-      $month = date('m');
-      $nextyear = $year + 1;
-      if($month >= 1 && $month <= 3) { $quarter_start=$year."-01-01"; $quarter_end=$year."-04-01"; }
-      if($month >= 4 && $month <= 6) { $quarter_start=$year."-04-01"; $quarter_end=$year."-07-01"; }
-      if($month >= 7 && $month <= 9) { $quarter_start=$year."-07-01"; $quarter_end=$year."-10-01"; }
-      if($month >= 10 && $month <= 12) { $quarter_start=$year."-10-01"; $quarter_end=$nextyear."-01-01"; }
-      //print "year: $year month: $month quarter_start: $quarter_start quarter_end: $quarter_end<br>";
-
-      // create the individual id -> individual name mapping
-      $sql = "SELECT * FROM 3rd_indiv where valid=1 ORDER BY name ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i=0;
-      $indiv_id_data = NULL;
-      $indiv_name_data = NULL;
-      while ($this->db->next_record())
-       {
-         $indiv_name_data[$i] = $this->db->f('name');
-         $indiv_id_data[$i] = $this->db->f('indiv');
-         $individ2name[$indiv_id_data[$i]] = $indiv_name_data[$i];
-         $i++;
-       }
-      array_multisort($indiv_name_data, $indiv_id_data);
-
-      if($action == 'save')
-       {
-         // Save any changes made to the appointment table
-         $new_data = get_var('appt_notes',array('POST'));
-         if($new_data != "") { 
-           foreach ($new_data as $entry)
-             {
-               $indiv = $entry['indiv'];
-               $appointment = $entry['appointment'];
-               $location = $entry['location'];
-               if($location == "") {
-                 $supervisor = $entry['supervisor'];
-                 $supervisor_array = explode(",", $individ2name[$supervisor]);
-                 $supervisor_last_name = $supervisor_array[0];
-                 $sql = "SELECT * FROM 3rd_indiv where indiv='$supervisor'";
-                 $this->db2->query($sql,__LINE__,__FILE__);
-                 if($this->db2->next_record()) {
-                   $indiv_id = $this->db2->f('indiv_id');
-                 }
-                 $sql = "SELECT * FROM 3rd_parent where indiv_id='$indiv_id'";
-                 $this->db2->query($sql,__LINE__,__FILE__);
-                 if($this->db2->next_record()) {
-                   $supervisor_address = $this->db2->f('address');
-                 }
-                 $location = "$supervisor_last_name"." home ($supervisor_address)";
-               }
-               if($indiv == 0) { $location = ""; }
-               
-               //print "indiv: $indiv appointment: $appointment <br>";
-               //Only perform a database update if we have made a change to this appointment
-               $sql = "SELECT * FROM 3rd_appointment where appointment='$appointment' and indiv='$indiv' and location='$location'";
-               $this->db->query($sql,__LINE__,__FILE__);
-               if(!$this->db->next_record()) {
-                 // Perform database save actions here
-                 $this->db->query("UPDATE 3rd_appointment set " .
-                                  " indiv='" . $indiv . "'" .
-                                  ",location='" . $location . "'" .
-                                  " WHERE appointment=" . $appointment,__LINE__,__FILE__);
-                 
-                 // Email the appointment
-                 $this->email_appt($appointment);
-               }
-             }
-         }
-         
-         // Save any changes made to the int notes table
-         $new_data = get_var('int_notes',array('POST'));
-         foreach ($new_data as $entry)
-          {
-            $int_notes = $entry['notes'];
-            $indiv_id = $entry['indiv_id'];
-            $indiv_name = $entry['indiv_name'];
-            $int_pri = $entry['pri'];
-            $aaronic = $entry['aaronic'];
-            //print "int_notes: $int_notes indiv_name: $indiv_name aaronic: $aaronic <Br>";
-            if($aaronic == 0) { 
-              // Perform database save actions here
-              $this->db->query("UPDATE 3rd_indiv set " .
-                               " int_notes='" . $int_notes . "'" .
-                               ",int_pri='" . $int_pri . "'" .
-                               " WHERE indiv=" . $indiv_id,__LINE__,__FILE__);
-            } 
-            
-          }
-
-         $take_me_to_url = $GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.int_sched');
-         //Header('Location: ' . $take_me_to_url);
-       }
-
-      // Get the Districts
-      $sql = "SELECT * FROM 3rd_district where valid=1 ORDER BY district ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i=0;
-      while ($this->db->next_record())
-       {
-         $district = $this->db->f('district');
-         $districts[$i]['district'] = $this->db->f('district');
-         $districts[$i]['name'] = $this->db->f('name');
-         $districts[$i]['supervisor'] = $this->db->f('supervisor');
-         $sql = "SELECT * FROM 3rd_presidency where district=$district and valid=1";
-         $this->db2->query($sql,__LINE__,__FILE__);
-         if($this->db2->next_record()) {
-           $districts[$i]['presidency'] = $this->db2->f('presidency');
-         }
-         $i++;
-       }
-      
-      // APPOINTMENT TABLE
-      $district = 1;
-      $date_width=250; $time_width=100; $indiv_width=200; $location_width=100;
-      $appt_table_width=$date_width + $time_width + $indiv_width + $location_width;
-      $appt_header_row = "<th width=$date_width><font size=-2>Date</th>";
-      $appt_header_row.= "<th width=$time_width><font size=-2>Time</th>";      
-      $appt_header_row.= "<th width=$indiv_width><font size=-2>Individual</th>";
-      $appt_header_row.= "<th width=$location_width><font size=-2>Location</th>";
-      $appt_table_data = ""; 
-
-      $total_comps=0; $comps_with_quarterly_int=0;
-      
-      // Display a scheduling table for each district
-      for ($d=0; $d < count($districts); $d++) {
-      $table_data=""; $appt_table_data="";
-      $this->t->set_var('district_number',$districts[$d]['district']);
-      $this->t->set_var('district_name',$districts[$d]['name']);       
-      $supervisor = $districts[$d]['supervisor'];
-      $supervisor_array = explode(",", $supervisor);
-      $supervisor_last_name = $supervisor_array[0];
-      $sql = "SELECT * FROM 3rd_indiv where indiv='$supervisor'";
-      $this->db2->query($sql,__LINE__,__FILE__);
-      if($this->db2->next_record()) {
-       $indiv_id = $this->db2->f('indiv_id');
-      }
-      $sql = "SELECT * FROM 3rd_parent where indiv_id='$indiv_id'";
-      $this->db2->query($sql,__LINE__,__FILE__);
-      if($this->db2->next_record()) {
-       $supervisor_address = $this->db2->f('address');
-      }
-      $location = "$supervisor_last_name"." home ($supervisor_address)";
-      $table_title = "District ".$districts[$d]['district'].": ".$districts[$d]['name'].": All Individuals with Interviews Not Completed";
-      $appt_table_title = "District ".$districts[$d]['district'].": ".$districts[$d]['name'].": Interview Appointment Slots";
-      $this->t->set_var('table_title',$table_title);
-      $this->t->set_var('appt_table_title',$appt_table_title);
-      
-      // query the database for all the appointments
-      $sql = "SELECT * FROM 3rd_appointment where presidency=".$districts[$d]['presidency']." and date>=CURDATE() ORDER BY date ASC, time ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-       
-      while ($this->db->next_record())
-       {
-         $appointment = $this->db->f('appointment');
-         $indiv = $this->db->f('indiv');
-         $location = $this->db->f('location');
-         if(($location == "") && ($indiv > 0)) { $location = "$supervisor_last_name"." home ($supervisor_address)"; }
-         
-         $date = $this->db->f('date');
-         $date_array = explode("-",$date);
-         $year = $date_array[0]; $month = $date_array[1]; $day = $date_array[2];
-         $day_string = date("l d-M-Y", mktime(0,0,0,$month,$day,$year));
-         
-         $time = $this->db->f('time');
-         $time_array = explode(":",$time);
-         $time_string = date("g:i a", mktime($time_array[0], $time_array[1], $time_array[2]));
-         
-         $appt_table_data.= "<tr bgcolor=". $this->t->get_var('tr_color') .">";
-         $appt_table_data.= "<td align=center>$day_string</td>";
-         $appt_table_data.= "<td align=center>$time_string</td>";
-
-         $appt_table_data.= '<td align=center><select name=appt_notes['.$appointment.'][indiv]>';
-         $appt_table_data.= '<option value=0></option>';
-         for ($i=0; $i < count($indiv_id_data); $i++) {
-           $id = $indiv_id_data[$i];
-           $name = $indiv_name_data[$i];
-           if($indiv_id_data[$i] == $indiv) { $selected[$id] = 'selected="selected"'; } else { $selected[$id] = ''; }
-           $appt_table_data.= '<option value='.$id.' '.$selected[$id].'>'.$name.'</option>';
-         }
-         $appt_table_data.='</select></td>';
-
-         $appt_table_data.= '<td align=center><input type=text size="35" maxlength="120" ';
-         $appt_table_data.= 'name="appt_notes['.$appointment.'][location]" value="'.$location.'">';
-         
-         $appt_table_data.= '<input type=hidden name="appt_notes['.$appointment.'][appointment]" value="'.$appointment.'">';
-         $appt_table_data.= '<input type=hidden name="appt_notes['.$appointment.'][supervisor]" value="'.$supervisor.'">';
-         
-         $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
-         $this->t->set_var('tr_color',$tr_color);
-       }
-
-      $this->t->set_var('appt_table_data',$appt_table_data);
-      $this->t->set_var('appt_header_row',$appt_header_row);
-      $this->t->set_var('appt_table_width',$appt_table_width);
-
-      // INTERVIEW SCHEDULING TABLE
-      
-      // Select all the unique companionship numbers for this district
-      $sql = "SELECT distinct companionship FROM 3rd_companionship where valid=1 and district=". $districts[$d]['district'];
-      $this->db->query($sql,__LINE__,__FILE__);
-      $j=0; $unique_companionships = '';
-      while ($this->db->next_record())
-       {
-         $unique_companionships[$j]['companionship'] = $this->db->f('companionship');
-         $j++;
-       }
-
-      $i=0;
-      for ($j=0; $j < count($unique_companionships); $j++) {
-       // Select all the companions from each companionship
-       $sql = "SELECT * FROM 3rd_companionship where valid=1 and ".
-          "companionship=". $unique_companionships[$j]['companionship'];
-       $this->db->query($sql,__LINE__,__FILE__);
-       $k=0; $int_completed=0;
-       $comp = $unique_companionships[$j]['companionship'];
-       $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
-       $this->t->set_var('tr_color',$tr_color);
-       $total_comps++;
-       while ($this->db->next_record())
-           {         
-             // Get this companions information
-             $indiv_id = $this->db->f('indiv');
-             $aaronic_id = $this->db->f('aaronic');
-            
-             $sql = "SELECT * FROM 3rd_indiv where indiv=$indiv_id";
-             $this->db2->query($sql,__LINE__,__FILE__);        
-             if($this->db2->next_record())
-               {
-                 $indiv_id = $this->db2->f('indiv');
-                 $indiv_name = $this->db2->f('name');
-                 $indiv_phone[$indiv_id] = $this->db2->f('phone');
-                 $indiv_int_pri[$indiv_id] = $this->db2->f('int_pri');
-                 $indiv_int_notes[$indiv_id] = $this->db2->f('int_notes');
-                 $indiv_aaronic = 0;
-               }
-             else {
-               $sql = "SELECT * FROM 3rd_aaronic where aaronic=$aaronic_id";
-               $this->db2->query($sql,__LINE__,__FILE__);
-               if($this->db2->next_record())
-                 {
-                   $indiv_id = $this->db2->f('aaronic');
-                   $indiv_name = $this->db2->f('name');
-                   $indiv_phone[$indiv_id] = $this->db2->f('phone');
-                   $indiv_aaronic = 1;
-                 }
-             }
-
-             $id = $indiv_id;
-             $name = $indiv_name;
-             $phone = $indiv_phone[$id];
-             $int_pri = $indiv_int_pri[$id];
-             $int_notes = $indiv_int_notes[$id];
-             $aaronic = $indiv_aaronic;
-             
-             // If the companionship has already had its quarterly interview,
-             // Skip the other companion in the companionship.
-             if($int_completed == 1) {
-               $completed_data.= "<tr bgcolor=". $this->t->get_var('tr_color2') ."><td title=\"$phone\"><a href=$link>$name</a></td>";
-               $completed_data.= "<td align=center>$phone</td>";
-               $completed_data.= "<td align=center><a href=".$link.">$date</a></td>";
-               $completed_data.= "<td align=left>$int_notes</td>";
-               $completed_data.= '</tr>';
-               $tr_color2 = $this->nextmatchs->alternate_row_color($tr_color2);
-               $this->t->set_var('tr_color2',$tr_color2);
-               $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
-               $this->t->set_var('tr_color',$tr_color);
-               continue;
-             }
-             
-             // If this companionship has had a hometeaching interview this quarter, don't show them on the schedule list
-             $sql = "SELECT * FROM 3rd_interview WHERE date >= '$quarter_start' AND date < '$quarter_end' ".
-                "AND indiv=" . $id;
-             $this->db2->query($sql,__LINE__,__FILE__);
-             
-             if(!$this->db2->next_record()) {
-               $sql = "SELECT * FROM 3rd_interview WHERE indiv=" . $id . " ORDER BY date DESC";
-               $this->db3->query($sql,__LINE__,__FILE__);
-               if($this->db3->next_record()) { $date = $this->db3->f('date'); } else { $date = ""; }
-               $link_data['menuaction'] = '3rd.3rd.int_update';
-               $link_data['indiv'] = $id;
-               $link_data['aaronic'] = 0;
-               $link_data['name'] = $name;
-               $link_data['interview'] = '';
-               $link_data['action'] = 'add';
-               $link_data['interviewer'] = $districts[$d]['supervisor'];
-               $link = $GLOBALS['phpgw']->link('/3rd/index.php',$link_data);
-               $table_data.= "<tr bgcolor=". $this->t->get_var('tr_color') ."><td title=\"$phone\"><a href=$link>$name</a></td>";
-               $table_data.= "<td align=center>$phone</td>";
-               $table_data.= "<td align=center>";
-               if($aaronic == 0) { 
-                 $table_data.= '<select name=int_notes['.$i.'][pri]>';
-                 foreach(range(0,6) as $num) {
-                   if($num == 0) { $num = 1; } else {$num = $num*5; }
-                   if($int_pri == $num) { $selected[$num] = 'selected="selected"'; } else { $selected[$num] = ''; }
-                   $table_data.= '<option value='.$num.' '.$selected[$num].'>'.$num.'</option>';
-                 }
-                 $table_data.= '</select></td>';
-               }
-               $table_data.= "<td align=center>$date</td>";
-               if($aaronic == 0) { 
-                 $table_data.= '<td><input type=text size="50" maxlength="128" name="int_notes['.$i.'][notes]" value="'.$int_notes.'">';
-               }
-               $table_data.= '<input type=hidden name="int_notes['.$i.'][indiv_id]" value="'.$id.'">';
-               $table_data.= '<input type=hidden name="int_notes['.$i.'][indiv_name]" value="'.$name.'">';
-               $table_data.= '<input type=hidden name="int_notes['.$i.'][aaronic]" value="'.$aaronic.'">';
-               $table_data.= '</td>';
-               $table_data.= '</tr>'."\n";
-               $i++;
-             } else {
-               $link_data['menuaction'] = '3rd.3rd.int_update';
-               $link_data['interviewer'] = $this->db2->f('interviewer');
-               $link_data['indiv'] = $this->db2->f('indiv');
-               $link_data['aaronic'] = $this->db2->f('aaronic');
-               $link_data['name'] = $name;
-               $link_data['interview'] = $this->db2->f('interview');
-               $link_data['action'] = 'view';
-               $link = $GLOBALS['phpgw']->link('/3rd/index.php',$link_data);    
-               $comps_with_quarterly_int++;
-               $int_completed=1;
-               $date = $this->db2->f('date');
-               $int_notes = $this->db2->f('notes');
-               if(strlen($int_notes) > 40) { $int_notes = substr($int_notes,0,40) . "..."; }
-               $completed_data.= "<tr bgcolor=". $this->t->get_var('tr_color2') ."><td title=\"$phone\"><a href=$link>$name</a></td>";
-               $completed_data.= "<td align=center>$phone</td>";
-               $completed_data.= "<td align=center><a href=".$link.">$date</a></td>";
-               $completed_data.= "<td align=left>$int_notes</td>";
-               $completed_data.= '</tr>';
-             }
-           }
-      }
-       
-      $name_width=175; $phone_width=100; $date_width=100; $notes_width=300;
-      $completed_table_width=$name_width + $phone_width + $date_width + $notes_width;
-      $completed_header_row = "<th width=$name_width><font size=-2>Individual Name</th>";
-      $completed_header_row.= "<th width=$phone_width><font size=-2>Phone</th>";      
-      $completed_header_row.= "<th width=$date_width><font size=-2>Date</th>";
-      $completed_header_row.= "<th width=$notes_width><font size=-2>Interview Notes</th>";
-            
-      $this->t->set_var('table_width',$table_width);
-      $this->t->set_var('header_row',$header_row);
-      $this->t->set_var('table_data',$table_data);
-      $this->t->set_var('completed_header_row',$completed_header_row);
-      $this->t->set_var('completed_table_width',$completed_table_width);
-      $this->t->set_var('completed',$completed_data);
-      $this->t->fp('indivlist','indiv_list',True);
-
-      } // End for each district loop
-
-      
-      $indivs_width=300; $totals_width=100;
-      $totals_table_width=$indivs_width + $totals_width;
-      $totals_header_row = "<th width=$indivs_width><font size=-2>Individuals</th>";
-      $totals_header_row.= "<th width=$totals_width><font size=-2>$year</th>";
-      $totals_data.= "<tr bgcolor=". $this->t->get_var('tr_color') .">";
-      $totals_data.= "<td align=left><font size=-2><b>Total Companionships with interviews completed:</b></font></td>";
-      $totals_data.= "<td align=center><font size=-2><b>$comps_with_quarterly_int / $total_comps</b></font></td>";
-      $percent = ceil(($comps_with_quarterly_int / $total_comps)*100);
-      $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
-      $this->t->set_var('tr_color',$tr_color);
-      $totals_data.= "<tr bgcolor=". $this->t->get_var('tr_color') .">";
-      $totals_data.= "<td align=left><font size=-2><b>Percentage:</b></font></td>";
-      $totals_data.= "<td align=center><font size=-2><b>$percent%</b></font></td>";
-      $totals_data.= "</tr>";
-
-      $this->t->set_var('totals',$totals_data);
-      $this->t->set_var('totals_header_row',$totals_header_row);
-      $this->t->set_var('totals_table_width',$totals_table_width);
-      
-      $this->t->pfp('out','int_sched_t');
-      $this->save_sessiondata(); 
-      
-    }
-  
-  function vis_sched()
-    {
-      $this->t->set_file(array('vis_sched_t' => 'vis_sched.tpl'));
-      $this->t->set_block('vis_sched_t','family_list','familylist');
-      $this->t->set_block('vis_sched_t','appt_list','apptlist');
-      $action = get_var('action',array('GET','POST'));
-
-      $this->t->set_var('lang_save','Save Appt / Pri / Notes');
-      $this->t->set_var('lang_reset','Clear Changes');
-      
-      $this->t->set_var('vis_link',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.vis_view'));
-      $this->t->set_var('vis_link_title','View Yearly Visits');
-      
-      $this->t->set_var('schedule_vis_link',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.vis_sched'));
-      $this->t->set_var('schedule_vis_link_title','Schedule Yearly Visits');
-
-      $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.vis_sched&action=save'));
-      $this->t->set_var('title','Presidency Yearly Visit Scheduler');
-
-      $family_width=500; $phone_width=40; $pri_width=10; $notes_width=128; $visit_date_width=20;
-      $table_width=$family_width + $phone_width + $pri_width + $notes_width + $visit_date_width;
-      $header_row = "<th width=$family_width><font size=-2>Family Name</th>";
-      $header_row.= "<th width=$phone_width><font size=-2>Phone</th>";
-      $header_row.= "<th width=$pri_width><font size=-2>Priority</th>";
-      $header_row.= "<th width=$visit_date_width><font size=-2>Last Visit</th>";
-      $header_row.= "<th width=$notes_width><font size=-2>Scheduling Notes</th>";
-      $table_data=""; $completed_data=""; $totals_data="";
-
-      $year = date('Y');
-
-      // create the family id -> family name mapping
-      $sql = "SELECT * FROM 3rd_family where valid=1 and indiv_id != 0 ORDER BY name ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i=0;
-      $family_id = NULL;
-      while ($this->db->next_record())
-       {
-         $family_id[$i] = $this->db->f('family');
-         $family_name[$i] = $this->db->f('name');
-         $familyid2name[$family_id[$i]] = $family_name[$i];
-         $sql = "SELECT * FROM 3rd_parent where family='$family_id[$i]'";
-         $this->db2->query($sql,__LINE__,__FILE__);
-         if($this->db2->next_record()) {
-           $familyid2address[$family_id[$i]] = $this->db2->f('address');
-         }
-         $i++;
-       }
-      array_multisort($family_name, $family_id);
-
-      if($action == 'save')
-       {
-         // Save any changes made to the appointment table
-         $new_data = get_var('appt_notes',array('POST'));
-         if($new_data != "") { 
-           foreach ($new_data as $entry)
-             {
-               $family = $entry['family'];
-               $appointment = $entry['appointment'];
-               $location = $entry['location'];
-               if($location == "") {
-                 $family_name_array = explode(",", $familyid2name[$family]);
-                 $family_last_name = $family_name_array[0];
-                 $family_address = $familyid2address[$family];
-                 $location = "$family_last_name"." home ($family_address)";
-               }
-               if($family == 0) { $location = ""; }
-               
-               //Only perform a database update if we have made a change to this appointment
-               $sql = "SELECT * FROM 3rd_appointment where appointment='$appointment' and family='$family' and location='$location'";
-               $this->db->query($sql,__LINE__,__FILE__);
-               if(!$this->db->next_record()) {
-                 // Perform database save actions here
-                 $this->db->query("UPDATE 3rd_appointment set " .
-                                  " family='" . $family . "'" .
-                                  ",location='" . $location . "'" .
-                                  " WHERE appointment=" . $appointment,__LINE__,__FILE__);
-                 
-                 // Email the appointment
-                 $this->email_appt($appointment);
-               }
-             }
-         }
-         
-         // Save any changes made to the visit notes table
-         $new_data = get_var('vis_notes',array('POST'));
-         foreach ($new_data as $entry)
-          {
-            $visit_notes = $entry['notes'];
-            $family = $entry['family_id'];
-            $visit_pri = $entry['pri'];
-            
-            // Perform database save actions here
-            $this->db->query("UPDATE 3rd_family set " .
-                             " visit_notes='" . $visit_notes . "'" .
-                             ",visit_pri='" . $visit_pri . "'" .
-                             " WHERE family=" . $family,__LINE__,__FILE__);
-            
-          }
-
-         $take_me_to_url = $GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.vis_sched');
-         //Header('Location: ' . $take_me_to_url);
-       }
-
-      // APPOINTMENT TABLE
-      $date_width=250; $time_width=100; $family_width=250; $location_width=100;
-      $appt_table_width=$date_width + $time_width + $family_width + $location_width;
-      $appt_header_row = "<th width=$date_width><font size=-2>Date</th>";
-      $appt_header_row.= "<th width=$time_width><font size=-2>Time</th>";      
-      $appt_header_row.= "<th width=$family_width><font size=-2>Family</th>";
-      $appt_header_row.= "<th width=$location_width><font size=-2>Location</th>";
-      $appt_table_data = ""; 
-
-      // Find out what the EQ Presidency ID is
-      $sql = "SELECT * FROM 3rd_presidency where eqpres=1 and valid=1";
-      $this->db->query($sql,__LINE__,__FILE__);
-      if($this->db->next_record()) {
-       $presidency_name = $this->db->f('name');
-       $presidency_id = $this->db->f('presidency');
-      } else {
-       print "<hr><font color=red><h3>-E- Unable to locate Presidency in 3rd_presidency table</h3></font></hr>";
-       return;
-      }
-            
-      // query the database for all the appointments
-      $sql = "SELECT * FROM 3rd_appointment where presidency=$presidency_id and date>=CURDATE() ORDER BY date ASC, time ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-
-      while ($this->db->next_record())
-       {
-         $appointment = $this->db->f('appointment');
-         $family = $this->db->f('family');
-         $location = $this->db->f('location');
-         $family_name_array = explode(",", $familyid2name[$family]);
-         $family_last_name = $family_name_array[0];
-         $family_address = $familyid2address[$family];
-         if(($location == "") && ($family > 0)) { $location = "$family_last_name"." home ($family_address)"; }
-                       
-         $date = $this->db->f('date');
-         $date_array = explode("-",$date);
-         $year = $date_array[0]; $month = $date_array[1]; $day = $date_array[2];
-         $day_string = date("l d-M-Y", mktime(0,0,0,$month,$day,$year));
-         
-         $time = $this->db->f('time');
-         $time_array = explode(":",$time);
-         $time_string = date("g:i a", mktime($time_array[0], $time_array[1], $time_array[2]));
-         
-         $appt_table_data.= "<tr bgcolor=". $this->t->get_var('tr_color') .">";
-         $appt_table_data.= "<td align=center>$day_string</td>";
-         $appt_table_data.= "<td align=center>$time_string</td>";
-
-         $appt_table_data.= '<td align=center><select name=appt_notes['.$appointment.'][family]>';
-         $appt_table_data.= '<option value=0></option>';
-         for ($i=0; $i < count($family_id); $i++) {
-           $id = $family_id[$i];
-           $name = $family_name[$i];
-           if($family_id[$i] == $family) { $selected[$id] = 'selected="selected"'; } else { $selected[$id] = ''; }
-           $appt_table_data.= '<option value='.$id.' '.$selected[$id].'>'.$name.' Family</option>';
-         }
-         $appt_table_data.='</select></td>';
-
-         $appt_table_data.= '<td align=center><input type=text size="35" maxlength="120" ';
-         $appt_table_data.= 'name="appt_notes['.$appointment.'][location]" value="'.$location.'">';
-
-         $appt_table_data.= '<input type=hidden name="appt_notes['.$appointment.'][appointment]" value="'.$appointment.'">';
-         
-         $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
-         $this->t->set_var('tr_color',$tr_color);
-       }
-
-      $this->t->set_var('appt_table_data',$appt_table_data);
-      $this->t->set_var('appt_header_row',$appt_header_row);
-      $this->t->set_var('appt_table_width',$appt_table_width);
-
-      
-      // VISIT SCHEDULING TABLE
-      $sql = "SELECT * FROM 3rd_family where valid=1 and indiv_id != 0 ORDER BY visit_pri ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-
-      $total_families=0; $families_with_yearly_visit=0;
-      
-      $i=0; 
-      $family_id = NULL;
-      $family_name = NULL;
-      $family_phone = NULL;
-      $family_visit_pri = NULL;
-      $family_visit_notes = NULL;
-      while ($this->db->next_record())
-       {
-         $family_id[$i] = $this->db->f('family');
-         $family_name[$i] = $this->db->f('name');
-         $family_phone[$family_id[$i]] = $family_id[$i] . " ERROR";
-         $family_visit_pri[$family_id[$i]] = $this->db->f('visit_pri');
-         $family_visit_notes[$family_id[$i]] = $this->db->f('visit_notes');
-         $i++;
-         $total_families++;
-       }
-
-      $sql = "SELECT * FROM 3rd_parent where valid=1";
-      $this->db->query($sql,__LINE__,__FILE__);
-      while ($this->db->next_record())
-       {
-         $family = $this->db->f('family');
-         $phone = $this->db->f('phone');
-         $family_phone[$family] = $phone;
-       }
-      
-      $max = count($family_id);
-      
-      for($i=0; $i < $max; $i++) {
-          $id = $family_id[$i];
-          $name = $family_name[$i];
-         $phone = $family_phone[$id];
-         $vis_pri = $family_visit_pri[$id];
-         $vis_notes = $family_visit_notes[$id];
-
-         // If this family has had a yearly visit this year, don't show them on the schedule list
-         $year_start = $year - 1 . "-12-31"; $year_end = $year + 1 . "-01-01";
-         $sql = "SELECT * FROM 3rd_visit WHERE date > '$year_start' AND date < '$year_end' ".
-            "AND family=" . $id . " AND companionship=0";
-         $this->db2->query($sql,__LINE__,__FILE__);
-         
-         if(!$this->db2->next_record()) {
-           $sql = "SELECT * FROM 3rd_visit WHERE family=" . $id . " AND companionship=0 ORDER BY date DESC";
-           $this->db->query($sql,__LINE__,__FILE__);
-           if($this->db->next_record()) { $date = $this->db->f('date'); } else { $date = ""; }
-           $link_data['menuaction'] = '3rd.3rd.vis_update';
-           $link_data['visit'] = '';
-           $link_data['family'] = $id;
-           $link_data['name'] = $name;
-           $link_data['action'] = 'add';
-           $link = $GLOBALS['phpgw']->link('/3rd/index.php',$link_data);
-           $table_data.= "<tr bgcolor=". $this->t->get_var('tr_color') ."><td title=\"$phone\"><a href=$link>$name Family</a></td>";
-           $table_data.= "<td align=center>$phone</td>";
-           $table_data.= "<td align=center>";
-           $table_data.= '<select name=vis_notes['.$i.'][pri]>';
-           foreach(range(0,6) as $num) {
-             if($num == 0) { $num = 1; } else {$num = $num*5; }
-             if($vis_pri == $num) { $selected[$num] = 'selected="selected"'; } else { $selected[$num] = ''; }
-             $table_data.= '<option value='.$num.' '.$selected[$num].'>'.$num.'</option>';
-           }
-           $table_data.= '</select></td>';
-           $table_data.= "<td align=center>$date</td>";
-           $table_data.= '<td><input type=text size="50" maxlength="128" name="vis_notes['.$i.'][notes]" value="'.$vis_notes.'">';
-           $table_data.= '<input type=hidden name="vis_notes['.$i.'][family_id]" value="'.$id.'">';
-           $table_data.= '<input type=hidden name="vis_notes['.$i.'][family_name]" value="'.$name.'">';
-           $table_data.= '</td>';
-           $table_data.= '</tr>';
-           $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
-           $this->t->set_var('tr_color',$tr_color);
-         } else {
-           $link_data['menuaction'] = '3rd.3rd.vis_update';
-           $link_data['visit'] = $this->db2->f('visit');
-           $link_data['family'] = $this->db2->f('family');
-           $link_data['name'] = $name;
-           $link_data['date'] = $this->db2->f('date');
-           $link_data['action'] = 'view';
-           $link = $GLOBALS['phpgw']->link('/3rd/index.php',$link_data);    
-           $families_with_yearly_visit++;
-           $date = $this->db2->f('date');
-           $vis_notes = $this->db2->f('notes');
-           if(strlen($vis_notes) > 40) { $vis_notes = stripslashes(substr($vis_notes,0,40) . "..."); }
-           $completed_data.= "<tr bgcolor=". $this->t->get_var('tr_color2') ."><td title=\"$phone\"><a href=$link>$name Family</a></td>";
-           $completed_data.= "<td align=center>$phone</td>";
-           $completed_data.= "<td align=center><a href=".$link.">$date</a></td>";
-           $completed_data.= "<td align=left>$vis_notes</td>";
-           $completed_data.= '</tr>';
-           $tr_color2 = $this->nextmatchs->alternate_row_color($tr_color2);
-           $this->t->set_var('tr_color2',$tr_color2);
-         }
-      }
-
-      $name_width=190; $phone_width=100; $date_width=100; $notes_width=300;
-      $completed_table_width=$name_width + $phone_width + $date_width + $notes_width;
-      $completed_header_row = "<th width=$name_width><font size=-2>Family Name</th>";
-      $completed_header_row.= "<th width=$phone_width><font size=-2>Phone</th>";      
-      $completed_header_row.= "<th width=$date_width><font size=-2>Date</th>";
-      $completed_header_row.= "<th width=$notes_width><font size=-2>Visit Notes</th>";
-      
-      $family_width=300; $totals_width=100;
-      $totals_table_width=$family_width + $totals_width;
-      $totals_header_row = "<th width=$family_width><font size=-2>Families</th>";
-      $totals_header_row.= "<th width=$totals_width><font size=-2>$year</th>";
-      $totals_data.= "<tr bgcolor=". $this->t->get_var('tr_color') .">";
-      $totals_data.= "<td align=left><font size=-2><b>Total Families with yearly Visits completed:</b></font></td>";
-      $totals_data.= "<td align=center><font size=-2><b>$families_with_yearly_visit / $total_families</b></font></td>";
-      $percent = ceil(($families_with_yearly_visit / $total_families)*100);
-      $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
-      $this->t->set_var('tr_color',$tr_color);
-      $totals_data.= "<tr bgcolor=". $this->t->get_var('tr_color') .">";
-      $totals_data.= "<td align=left><font size=-2><b>Percentage:</b></font></td>";
-      $totals_data.= "<td align=center><font size=-2><b>$percent%</b></font></td>";
-      $totals_data.= "</tr>";
-      
-      $this->t->set_var('table_width',$table_width);
-      $this->t->set_var('header_row',$header_row);
-      $this->t->set_var('table_data',$table_data);
-      $this->t->set_var('totals_header_row',$totals_header_row);
-      $this->t->set_var('totals_table_width',$totals_table_width);
-      $this->t->set_var('completed_header_row',$completed_header_row);
-      $this->t->set_var('completed_table_width',$completed_table_width);
-      $this->t->set_var('completed',$completed_data);
-      $this->t->set_var('totals',$totals_data);
-      $this->t->fp('familylist','family_list',True);
-      $this->t->fp('apptlist','appt_list',True);
-      
-      $this->t->pfp('out','vis_sched_t');
-      $this->save_sessiondata(); 
-      
-    }
-  
-  function ppi_view()
-    {
-      $this->t->set_file(array('ppi_view_t' => 'ppi_view.tpl'));
-      $this->t->set_block('ppi_view_t','district_list','list');
-
-      $this->t->set_var('linkurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.ppi_view'));
-      $num_months = get_var('num_months',array('GET','POST'));
-      if($num_months == '') { $num_months = $this->default_ppi_num_months; }
-      $this->t->set_var('num_months',$num_months);
-      if($num_months == 1) { $this->t->set_var('lang_num_months','Month of History'); }
-      else {  $this->t->set_var('lang_num_months','Months of History'); }
-      $this->t->set_var('lang_filter','Filter');
-      $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.ppi_view'));
-            
-      $this->t->set_var('ppi_link',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.ppi_view'));
-      $this->t->set_var('ppi_link_title','Yearly PPIs'); 
-
-      $this->t->set_var('schedule_ppi_link',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.ppi_sched'));
-      $this->t->set_var('schedule_ppi_link_title','Schedule Yearly PPIs');
-      
-      $this->t->set_var('title','Yearly PPIs');
-      $num_months = get_var('num_months',array('GET','POST'));
-      if($num_months == '') { $num_months = $this->default_ppi_num_years; }
-      $this->t->set_var('num_months',$num_months);
-      if($num_months == 1) { $this->t->set_var('lang_num_months','Year of History'); }
-      else { $this->t->set_var('lang_num_months','Years of History'); }        
-
-      $sql = "SELECT * FROM 3rd_presidency where president=1 and valid=1";
-      $this->db->query($sql,__LINE__,__FILE__);
-      if($this->db->next_record()) {
-       $president_name = $this->db->f('name');
-       $interviewer = $this->db->f('indiv');
-       $interview_type = 'ppi';
-      } else {
-       print "<hr><font color=red><h3>-E- Unable to locate President in 3rd_presidency table</h3></font></hr>";
-       return;
-      }
-      $this->t->set_var('district_number','*');
-      $this->t->set_var('district_name',$president_name);
-
-      $sql = "SELECT * FROM 3rd_indiv where valid=1 ORDER BY indiv ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i=0;
-      while ($this->db->next_record())
-       {
-         $indiv_id[$i] = $this->db->f('indiv');
-         $indiv_name[$i] = $this->db->f('name');
-         $indiv_phone[$indiv_id[$i]] = $this->db->f('phone');
-         $indiv_ppi_pri[$indiv_id[$i]] = $this->db->f('ppi_pri');
-         $indiv_ppi_notes[$indiv_id[$i]] = $this->db->f('ppi_notes');
-         $i++;
-       }
-      $total_indivs=$i;
-      array_multisort($indiv_name, $indiv_id);
-      //var_dump($indiv_name); print "<br><br>"; var_dump($indiv_id);
-      
-      $header_row="<th width=$comp_width><font size=-2>Individual Name</th>";
-       
-      $indiv_width=400; $ppi_width=75; $table_width=$indiv_width + $num_months*$ppi_width;
-      $table_data="";
-      for($m=$num_months; $m >= 0; $m--) {
-       $year = date('Y') - $m;
-       $header_row .= "<th width=150><font size=-2>$year</th>"; 
-       $ppis[$m] = 0;
-      }
-      
-      for ($j=0; $j < count($indiv_id); $j++) {
-       $id = $indiv_id[$j];
-       $name = $indiv_name[$j];
-       $phone = $indiv_phone[$id];
-       
-       $link_data['menuaction'] = '3rd.3rd.ppi_update';
-       $link_data['interviewer'] = $interviewer;
-       $link_data['indiv'] = $id;
-       $link_data['name'] = $name;
-       $link_data['interview'] = '';
-       $link_data['interview_type'] = $interview_type;
-       $link_data['action'] = 'add';
-       $link = $GLOBALS['phpgw']->link('/3rd/index.php',$link_data);
-       $this->nextmatchs->template_alternate_row_color(&$this->t);
-       $table_data.= "<tr bgcolor=". $this->t->get_var('tr_color') ."><td title=\"$phone\"><a href=$link>$name</a></td>";
-
-       // Find out how many times PPIs were performed in the past $num_months for this individual
-       for($m=$num_months; $m >= 0; $m--) {
-         $year = date('Y') - $m;
-         $year_start = $year - 1 . "-12-31"; $year_end = $year + 1 . "-01-01";
-         $sql = "SELECT * FROM 3rd_interview WHERE date > '$year_start' AND date < '$year_end' ".
-            "AND indiv=" . $id . " AND interview_type='ppi'";
-         $this->db2->query($sql,__LINE__,__FILE__);
-                 
-         if(!$total_ppis[$m]) { $total_ppis[$m] = 0; }
-         if($this->db2->next_record()) {
-           $ppis[$m]++; $total_ppis[$m]++; $ppi_recorded[$companionship][$m]=1;
-           $link_data['menuaction'] = '3rd.3rd.ppi_update';
-           $link_data['companionship'] = $companionship;
-           $link_data['interviewer'] = $this->db2->f('interviewer');
-           $link_data['indiv'] = $id;
-           $link_data['name'] = $name;
-           $link_data['interview'] = $this->db2->f('interview');
-           $link_data['interview_type'] = $interview_type;
-           $link_data['action'] = 'view';
-           $date = $this->db2->f('date');
-           $date_array = explode("-",$date);
-           $month = $date_array[1];
-           $day   = $date_array[2];
-           $link = $GLOBALS['phpgw']->link('/3rd/index.php',$link_data);
-           $table_data .= '<td align=center><a href='.$link.'><img src="images/checkmark.gif">&nbsp;'.$month.'-'.$day.'</a></td>';
-         }
-         else { $table_data .= "<td>&nbsp;</td>"; }
-       }
-       $table_data .= "</tr>\n"; 
-      }
-      $table_data .= "<tr><td colspan=20><hr></td></tr>";
-      
-      $stat_data = "<tr><td><b><font size=-2>$total_indivs Individuals<br>PPI Totals:</font></b></td>";
-      for($m=$num_months; $m >=0; $m--) {
-       $percent = ceil(($ppis[$m] / $total_indivs)*100);
-       $stat_data .= "<td align=center><font size=-2><b>$ppis[$m]<br>$percent%</font></b></td>";
-      }
-      $stat_data .= "</tr>";
-      
-      $this->t->set_var('table_width',$table_width);
-      $this->t->set_var('header_row',$header_row);
-      $this->t->set_var('table_data',$table_data);
-      $this->t->set_var('stat_data',$stat_data);
-      $this->t->pfp('out','ppi_view_t');
-      $this->save_sessiondata(); 
-    }
-
-  function ppi_update()
-    {
-      $this->t->set_file(array('form' => 'ppi_update.tpl'));
-      $this->t->set_block('form','interviewer_list','int_list');
-      $this->t->set_block('form','add','addhandle');
-      $this->t->set_block('form','edit','edithandle');
-      
-      $this->t->set_var('done_action',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.ppi_view'));
-      $this->t->set_var('readonly','');
-      $this->t->set_var('disabled','');
-      
-      $action = get_var('action',array('GET','POST'));
-      $companionship = get_var('companionship',array('GET','POST'));
-      $interviewer = get_var('interviewer',array('GET','POST'));      
-      $name = get_var('name',array('GET','POST'));
-      $interview = get_var('interview',array('GET','POST'));
-      $indiv = get_var('indiv',array('GET','POST'));
-      $aaronic = get_var('aaronic',array('GET','POST'));
-      $date = get_var('date',array('GET','POST'));
-      $notes = get_var('notes',array('GET','POST'));
-      $interview_type = get_var('interview_type',array('GET','POST'));
-     
-      $sql = "SELECT * FROM 3rd_presidency where valid=1 and (president=1 or counselor=1 or secretary=1)";
-      $this->db2->query($sql,__LINE__,__FILE__);
-      while ($this->db2->next_record())
-      {
-        $indiv = $this->db2->f('indiv');
-       $interviewer_name = $this->db2->f('name');
-        if($indiv == $interviewer) { 
-          $this->t->set_var('interviewer',$interviewer . ' selected');
-        } else {
-         $this->t->set_var('interviewer',$interviewer);
-       }
-        $this->t->set_var('interviewer_name',$interviewer_name);
-        $this->t->set_var('interview_type_checked','');
-        $this->t->fp('int_list','interviewer_list',True);
-      }
-    
-      if($action == 'save')
-       {
-         $notes = get_var('notes',array('POST'));
-         $this->db->query("UPDATE 3rd_interview set " .
-                    "   interview='" . $interview . "'" .
-                   ", interviewer='" . $interviewer . "'" .
-                         ", indiv='" . $indiv . "'" .
-                       ", aaronic='" . $aaronic . "'" .
-                          ", date='" . $date . "'" .
-                         ", notes='" . $notes . "'" .
-                ", interview_type='" . $interview_type . "'" .
-                          " WHERE interview=" . $interview,__LINE__,__FILE__);
-         $this->ppi_view();
-         return false;
-       }
-
-      if($action == 'insert')
-       {
-         $notes = get_var('notes',array('POST'));
-         $this->db->query("INSERT INTO 3rd_interview (interviewer,indiv,aaronic,date,notes,interview_type) "
-                          . "VALUES ('" . $interviewer . "','" . $indiv . "','" . $aaronic . "','"
-                          . $date . "','" . $notes . "','" . $interview_type  ."')",__LINE__,__FILE__);
-         $this->ppi_view();
-         return false;
-       }
-      
-      if($action == 'add')
-       {
-         $this->t->set_var('cal_date',$this->jscal->input('date','','','','','','',$this->cal_options));
-         $this->t->set_var('interview', '');
-         $this->t->set_var('interviewer', $interviewer);
-         $this->t->set_var('name',$name);
-         $this->t->set_var('indiv',$indiv);
-         $this->t->set_var('date','');
-         $this->t->set_var('notes','');
-         $this->t->set_var('interview_type',$interview_type);
-         $this->t->set_var('interview_type_checked','checked');
-         $this->t->set_var('lang_done','Cancel');
-         $this->t->set_var('lang_action','Adding New PPI');
-         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.ppi_update&interview='
-                                                               . $interview . '&action=' . 'insert'));
-       }
-
-      if($action == 'edit' || $action == 'view')
-       {
-         $sql = "SELECT * FROM 3rd_interview WHERE interview=".$interview;
-         $this->db->query($sql,__LINE__,__FILE__);
-         $this->db->next_record();
-         $this->t->set_var('interview',$interview);
-         $this->t->set_var('name',$name);
-         $this->t->set_var('interviewer', $this->db->f('interviewer'));
-         $this->t->set_var('indiv',$this->db->f('indiv'));
-         $this->t->set_var('date',$this->db->f('date'));
-         $this->t->set_var('notes',$this->db->f('notes'));
-         $this->t->set_var('interview_type',$this->db->f('interview_type'));
-         if($this->db->f('interview_type') == 1) { $this->t->set_var('interview_type_checked','checked'); }
-       }
-      
-      if($action == 'edit')
-       {
-         $this->t->set_var('cal_date',$this->jscal->input('date',$date,'','','','','',$this->cal_options));
-         $this->t->set_var('lang_done','Cancel');
-         $this->t->set_var('lang_action','Editing PPI');
-         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.ppi_update&interview='
-                                                               . $interview . '&action=' . 'save'));
-       }
-
-      if($action == 'view')
-       {
-         $date = $this->db->f('date');
-         $this->t->set_var('cal_date','<input type=text size="10" maxlength="10" name="date" value="'.$date.'" readonly>');
-         $this->t->set_var('readonly','READONLY');
-         $this->t->set_var('disabled','DISABLED');
-         $this->t->set_var('lang_done','Done');
-         $this->t->set_var('lang_action','Viewing PPI');
-         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.ppi_update&interview='
-                                                               . $interview . '&action=' . 'edit'));
-       }
-      
-      $this->t->set_var('lang_reset','Clear Form');
-      $this->t->set_var('lang_add','Add PPI');
-      $this->t->set_var('lang_save','Save Changes');
-      $this->t->set_var('edithandle','');
-      $this->t->set_var('addhandle','');
-
-      $this->t->pfp('out','form');
-      
-      if($action == 'view') { $this->t->set_var('lang_save','Edit PPI'); }
-      if($action == 'edit' || $action == 'view') { $this->t->pfp('addhandle','edit'); }
-      if($action == 'add') { $this->t->pfp('addhandle','add'); }
-     
-      $this->save_sessiondata(); 
-    }
-
-    function int_view()
-    {
-      $this->t->set_file(array('int_view_t' => 'int_view.tpl'));
-      $this->t->set_block('int_view_t','district_list','list');
-
-      $this->t->set_var('linkurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.int_view'));
-      $num_quarters = get_var('num_quarters',array('GET','POST'));
-      if($num_quarters == '') { $num_quarters = $this->default_int_num_quarters; }
-      $this->t->set_var('num_quarters',$num_quarters);
-      if($num_quarters == 1) { $this->t->set_var('lang_num_quarters','Quarter of History'); }
-      else {  $this->t->set_var('lang_num_quarters','Quarters of History'); }
-      $this->t->set_var('lang_filter','Filter');
-      
-      $this->t->set_var('int_link',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.int_view'));
-      $this->t->set_var('int_link_title','Hometeaching Interviews'); 
-      
-      $this->t->set_var('schedule_int_link',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.int_sched'));
-      $this->t->set_var('schedule_int_link_title','Schedule Hometeaching Interviews');
-      
-      $this->t->set_var('title','Hometeaching Interviews'); 
-
-      $num_months = $num_quarters * 3 - 1;
-      $current_month = $this->current_month;
-      if($current_month >= 1 && $current_month <= 3) { $current_month=3; }
-      else if($current_month >= 4 && $current_month <= 6) { $current_month=6; }
-      else if($current_month >= 7 && $current_month <= 9) { $current_month=9; }
-      else if($current_month >= 10 && $current_month <= 12) { $current_month=12; }
-
-      $sql = "SELECT * FROM 3rd_district where valid=1 ORDER BY district ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i=0;
-      while ($this->db->next_record())
-       {
-         $districts[$i]['district'] = $this->db->f('district');
-         $districts[$i]['name'] = $this->db->f('name');
-         $districts[$i]['supervisor'] = $this->db->f('supervisor');
-         $i++;
-       }
-
-      $sql = "SELECT * FROM 3rd_indiv where valid=1 ORDER BY indiv ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i=0;
-      while ($this->db->next_record())
-       {
-         $indiv_id[$i] = $this->db->f('indiv');
-         $indiv_name[$i] = $this->db->f('name');
-         $indiv_phone[$indiv_id[$i]] = $this->db->f('phone');
-         $i++;
-       }
-      array_multisort($indiv_name, $indiv_id);
-      for($i=0; $i < count($indiv_id); $i++) {
-          $id = $indiv_id[$i];
-          $indivs[$id] = $indiv_name[$i];
-      }      
-
-      $sql = "SELECT * FROM 3rd_aaronic where valid=1 ORDER BY aaronic ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      while ($this->db->next_record())
-       {
-         $aaronic_id = $this->db->f('aaronic');
-         $aaronic[$aaronic_id]['name'] = $this->db->f('name');
-         $aaronic[$aaronic_id]['phone'] = $this->db->f('phone');
-       }
-      
-      $total_companionships = 0;
-      $this->nextmatchs->template_alternate_row_color(&$this->t);
-      for ($i=0; $i < count($districts); $i++) {
-       $this->t->set_var('district_number',$districts[$i]['district']);
-       $this->t->set_var('district_name',$districts[$i]['name']);      
-       $supervisor = $districts[$i]['supervisor'];
-               
-       // Select all the unique companionship numbers for this district
-       $sql = "SELECT distinct companionship FROM 3rd_companionship where valid=1 and district=". $districts[$i]['district'];
-       $this->db->query($sql,__LINE__,__FILE__);
-       $j=0; $unique_companionships = '';
-       while ($this->db->next_record())
-         {
-           $unique_companionships[$j]['companionship'] = $this->db->f('companionship');
-           $j++;
-         }
-       
-       $comp_width=250; $int_width=75; $table_width=$comp_width + $num_months*$int_width;
-       $table_data=""; $num_companionships = $j; $num_indivs = 0;
-       for($m=$num_months; $m >= 0; $m--) { $ints[$m] = 0; }
-       for ($j=0; $j < count($unique_companionships); $j++) {
-         // Select all the companions in each companionship
-         $sql = "SELECT * FROM 3rd_companionship where valid=1 and ".
-            "companionship=". $unique_companionships[$j]['companionship'];
-         $this->db->query($sql,__LINE__,__FILE__);
-         $k=0;
-         $comp = $unique_companionships[$j]['companionship'];
-         for($m=$num_months; $m >= 0; $m--) { $int_recorded[$comp][$m] = 0; }
-         while ($this->db->next_record())
-           {
-             // Get this companions information
-             $num_indivs++;
-             $companionship = $this->db->f('companionship');
-             $indiv_id = $this->db->f('indiv');
-             $aaronic_id = $this->db->f('aaronic');
-             if($indiv_id) {
-               $name = $indivs[$indiv_id];
-               $phone = $indiv_phone[$indiv_id];
-             }
-             else if($aaronic_id) {
-               $name = $aaronic[$aaronic_id]['name'];
-               $phone = $aaronic[$aaronic_id]['phone'];
-             }
-             $link_data['menuaction'] = '3rd.3rd.int_update';
-             $link_data['companionship'] = $companionship;
-             $link_data['interviewer'] = $supervisor;
-             $link_data['indiv'] = $indiv_id;
-             $link_data['aaronic'] = $aaronic_id;
-             $link_data['name'] = $name;
-             $link_data['interview'] = '';
-             $link_data['action'] = 'add';
-             $link = $GLOBALS['phpgw']->link('/3rd/index.php',$link_data);
-             $table_data.= "<tr bgcolor=". $this->t->get_var('tr_color') ."><td title=\"$phone\"><a href=$link>$name</a></td>";
-
-             // Find out how many times Interviews were performed in the past $num_months for this individual
-             $header_row="<th width=$comp_width><font size=-2>Companionship</th>";
-             for($m=$num_months; $m >= 0; $m--) {
-               $month = $current_month - $m;
-               $year = $this->current_year;
-               if($month <= 0) { $remainder = $month; $month = 12 + $remainder; $year=$year-1; }
-               if($month < 10) { $month = "0"."$month"; }
-               $month_start = "$year"."-"."$month"."-"."01";
-               $month_end = "$year"."-"."$month"."-"."31";
-               $month = "$month"."/"."$year";
-               $sql = "SELECT * FROM 3rd_interview WHERE date >= '$month_start' AND date <= '$month_end' ".
-                  "AND indiv=" . $indiv_id . " AND aaronic=" . $aaronic_id;
-               $this->db2->query($sql,__LINE__,__FILE__);
-               $header_row .= "<th width=$int_width><font size=-2>$month</th>";
-             
-               if(!$total_ints[$m]) { $total_ints[$m] = 0; }
-               if($this->db2->next_record()) {
-                 if(!$int_recorded[$companionship][$m]) {
-                   $ints[$m]++; $total_ints[$m]++; $int_recorded[$companionship][$m]=1;
-                 }
-                 $link_data['menuaction'] = '3rd.3rd.int_update';
-                 $link_data['companionship'] = $companionship;
-                 $link_data['interviewer'] = $this->db2->f('interviewer');
-                 $link_data['indiv'] = $indiv_id;
-                 $link_data['aaronic'] = $aaronic_id;
-                 $link_data['name'] = $name;
-                 $link_data['interview'] = $this->db2->f('interview');
-                 $link_data['action'] = 'view';
-                 $date = $this->db2->f('date');
-                 $date_array = explode("-",$date);
-                 $month = $date_array[1];
-                 $day   = $date_array[2];
-                 $link = $GLOBALS['phpgw']->link('/3rd/index.php',$link_data);
-                 $table_data .= '<td align=center><a href='.$link.'><img src="images/checkmark.gif">&nbsp;'.$month.'-'.$day.'</a></td>';
-               }
-               else { $table_data .= "<td>&nbsp;</td>"; }
-             }
-             $table_data .= "</tr>"; 
-             $k++;
-           }
-         $table_data .= "<tr><td colspan=20><hr></td></tr>";
-       }
-       $total_companionships += $num_companionships;
-       $stat_data = "<tr><td><b><font size=-2>$num_companionships Companionships<br>Interview Totals:</font></b></td>";
-
-       // Print the hometeaching interview stats
-       for($m=$num_months; $m >=0; $m--) {
-         $month = $current_month - $m;
-         if($month < 0) { $month = 12 + $month; } // Handle going backwards over a year boundary
-         $month_begins = $month % $this->monthly_hometeaching_interview_stats;
-         //print "$month % $this->monthly_hometeaching_interview_stats = $month_begins <br>";
-         if($this->monthly_hometeaching_interview_stats == 1) { $month_begins = 1; }
-         if(($month_begins) == 1) { $total = $ints[$m]; }
-         else { $total += $ints[$m]; }
-         $percent = ceil(($total / $num_companionships)*100);
-         $stat_data .= "<td align=center><font size=-2><b>$total<br>$percent%</font></b></td>";
-       }
-       $stat_data .= "</tr>";
-       
-       $this->t->set_var('table_width',$table_width);
-       $this->t->set_var('header_row',$header_row);
-       $this->t->set_var('table_data',$table_data);
-       $this->t->set_var('stat_data',$stat_data);
-       $this->t->fp('list','district_list',True);
-      }
-
-      // Display the totals
-      $total = 0;
-      $totals = "<tr><td><b><font size=-2>$total_companionships Total Comps<br>Interview Totals:</font></b></td>";
-      for($m=$num_months; $m >=0; $m--) {
-       $month = $current_month - $m;
-       if($month < 0) { $month = 12 + $month; } // Handle going backwards over a year boundary
-       $month_begins = $month % $this->monthly_hometeaching_interview_stats;
-       if($this->monthly_hometeaching_interview_stats == 1) { $month_begins = 1; }
-       if(($month_begins) == 1) { $total = $total_ints[$m]; }
-       else { $total += $total_ints[$m]; }
-       $percent = ceil(($total / $total_companionships)*100);
-       $totals .= "<td align=center><font size=-2><b>$total<br>$percent%</font></b></td>";
-      }
-      $totals .= "</tr>";
-          
-      $this->t->set_var('totals',$totals);
-      $this->t->pfp('out','int_view_t');
-      $this->save_sessiondata(); 
-    }
-
-  function int_update()
-    {
-      $this->t->set_file(array('form' => 'int_update.tpl'));
-      $this->t->set_block('form','interviewer_list','int_list');
-      $this->t->set_block('form','add','addhandle');
-      $this->t->set_block('form','edit','edithandle');
-      
-      $this->t->set_var('done_action',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.int_view'));
-      $this->t->set_var('readonly','');
-      $this->t->set_var('disabled','');
-      $this->t->set_var('interview_type_checked','');
-      
-      $action = get_var('action',array('GET','POST'));
-      $companionship = get_var('companionship',array('GET','POST'));
-      $interviewer = get_var('interviewer',array('GET','POST'));      
-      $name = get_var('name',array('GET','POST'));
-      $interview = get_var('interview',array('GET','POST'));
-      $indiv = get_var('indiv',array('GET','POST'));
-      $aaronic = get_var('aaronic',array('GET','POST'));
-      $date = get_var('date',array('GET','POST'));
-      $notes = get_var('notes',array('GET','POST'));
-      $interview_type = get_var('interview_type',array('GET','POST'));
-
-      $sql = "SELECT * FROM 3rd_presidency where valid=1 and (president=1 or counselor=1 or secretary=1 or district!=0)";
-      $this->db2->query($sql,__LINE__,__FILE__);
-      while ($this->db2->next_record())
-      {
-        $indiv = $this->db2->f('indiv');
-        $interviewer_name = $this->db2->f('name');
-        if($indiv == $interviewer) {
-          $this->t->set_var('interviewer',$interviewer . ' selected');
-        } else {
-          $this->t->set_var('interviewer',$interviewer);
-        }
-        $this->t->set_var('interviewer_name',$interviewer_name);
-        $this->t->fp('int_list','interviewer_list',True);
-      }
-      
-      if($action == 'save')
-       {
-         $notes = get_var('notes',array('POST'));
-         $this->db->query("UPDATE 3rd_interview set " .
-                    "   interview='" . $interview . "'" .
-                   ", interviewer='" . $interviewer . "'" .
-                         ", indiv='" . $indiv . "'" .
-                       ", aaronic='" . $aaronic . "'" .
-                          ", date='" . $date . "'" .
-                         ", notes='" . $notes . "'" .
-                ", interview_type='" . $interview_type . "'" .
-                          " WHERE interview=" . $interview,__LINE__,__FILE__);
-         $this->int_view();
-         return false;
-       }
-
-      if($action == 'insert')
-       {
-         $notes = get_var('notes',array('POST'));
-         $this->db->query("INSERT INTO 3rd_interview (interviewer,indiv,aaronic,date,notes,interview_type) "
-                          . "VALUES ('" . $interviewer . "','" . $indiv . "','" . $aaronic . "','"
-                          . $date . "','" . $notes ."','" . $interview_type . "')",__LINE__,__FILE__);
-         $this->int_view();
-         return false;
-       }
-      
-      if($action == 'add')
-       {
-         $this->t->set_var('cal_date',$this->jscal->input('date','','','','','','',$this->cal_options));
-         $this->t->set_var('interview', '');
-         $this->t->set_var('interviewer', $interviewer);
-         $this->t->set_var('name',$name);
-         $this->t->set_var('indiv',$indiv);
-         $this->t->set_var('aaronic',$aaronic);
-         $this->t->set_var('date','');
-         $this->t->set_var('notes','');
-         $this->t->set_var('lang_done','Cancel');
-         $this->t->set_var('lang_action','Adding New Interview');
-         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.int_update&interview='
-                                                               . $interview . '&action=' . 'insert'));
-       }
-
-      if($action == 'edit' || $action == 'view')
-       {
-         $sql = "SELECT * FROM 3rd_interview WHERE interview=".$interview;
-         $this->db->query($sql,__LINE__,__FILE__);
-         $this->db->next_record();
-         $this->t->set_var('interview',$interview);
-         $this->t->set_var('name',$name);
-         $this->t->set_var('interviewer', $this->db->f('interviewer'));
-         $this->t->set_var('indiv',$this->db->f('indiv'));
-         $this->t->set_var('aaronic',$this->db->f('aaronic'));
-         $this->t->set_var('date',$this->db->f('date'));
-         $this->t->set_var('notes',$this->db->f('notes'));
-         if($this->db->f('interview_type') == 1) { $this->t->set_var('interview_type_checked','checked'); }
-       }
-      
-      if($action == 'edit')
-       {
-         $this->t->set_var('cal_date',$this->jscal->input('date',$date,'','','','','',$this->cal_options));
-         $this->t->set_var('lang_done','Cancel');
-         $this->t->set_var('lang_action','Editing Interview');
-         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.int_update&interview='
-                                                               . $interview . '&action=' . 'save'));
-       }
-
-      if($action == 'view')
-       {
-         $date = $this->db->f('date');
-         $this->t->set_var('cal_date','<input type=text size="10" maxlength="10" name="date" value="'.$date.'" readonly>');
-         $this->t->set_var('readonly','READONLY');
-         $this->t->set_var('disabled','DISABLED');
-         $this->t->set_var('lang_done','Done');
-         $this->t->set_var('lang_action','Viewing Interview');
-         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.int_update&interview='
-                                                               . $interview . '&action=' . 'edit'));
-       }
-      
-      $this->t->set_var('lang_reset','Clear Form');
-      $this->t->set_var('lang_add','Add Interview');
-      $this->t->set_var('lang_save','Save Changes');
-      $this->t->set_var('edithandle','');
-      $this->t->set_var('addhandle','');
-
-      $this->t->pfp('out','form');
-      
-      if($action == 'view') { $this->t->set_var('lang_save','Edit Interview'); }
-      if($action == 'edit' || $action == 'view') { $this->t->pfp('addhandle','edit'); }
-      if($action == 'add') { $this->t->pfp('addhandle','add'); }
-     
-      $this->save_sessiondata(); 
-    }
-
-  function vis_view()
-    {
-      $this->t->set_file(array('vis_view_t' => 'vis_view.tpl'));
-      $this->t->set_block('vis_view_t','visit_list','list1');
-      $this->t->set_block('vis_view_t','family_list','list2');
-
-      $this->t->set_var('lang_name','Family Name');
-      $this->t->set_var('lang_date','Date');
-
-      $this->t->set_var('vis_link',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.vis_view'));
-      $this->t->set_var('vis_link_title','View Yearly Visits');
-      
-      $this->t->set_var('schedule_vis_link',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.vis_sched'));
-      $this->t->set_var('schedule_vis_link_title','Schedule Yearly Visits');
-
-      $this->t->set_var('linkurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.vis_view'));
-      $num_years = get_var('num_years',array('GET','POST'));
-      if($num_years == '') { $num_years = $this->default_vis_num_years; }
-      $this->t->set_var('num_years',$num_years);
-      if($num_years == 1) { $this->t->set_var('lang_num_years','Year of History'); }
-      else {  $this->t->set_var('lang_num_years','Years of History'); }
-      $this->t->set_var('lang_filter','Filter');
-      
-      $year = date('Y') - $num_years + 1;
-      $year_start = $year - 1 . "-12-31"; $year_end = $year + 1 . "-01-01";
-      
-      $sql = "SELECT * FROM 3rd_visit WHERE companionship=0 and date > '$year_start' ORDER BY date DESC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $total_records = $this->db->num_rows();
-
-      $i = 0;
-      while ($this->db->next_record())
-       {
-         $visit_list[$i]['visit'] = $this->db->f('visit');
-         $visit_list[$i]['family'] = $this->db->f('family');
-         $visit_list[$i]['date']  = $this->db->f('date');
-         $i++;
-       }
-            
-      for ($i=0; $i < count($visit_list); $i++)
-       {         
-         $this->nextmatchs->template_alternate_row_color(&$this->t);
-
-         $sql = "SELECT * FROM 3rd_family WHERE family=".$visit_list[$i]['family'];
-         $this->db->query($sql,__LINE__,__FILE__);
-         $this->db->next_record();
-                 
-         $this->t->set_var('family',$visit_list[$i]['family']);
-         $this->t->set_var('family_name',$this->db->f('name'));
-         $this->t->set_var('date',$visit_list[$i]['date']);
-         
-         $link_data['menuaction'] = '3rd.3rd.vis_update';
-         $link_data['visit'] = $visit_list[$i]['visit'];
-         $link_data['name'] = $this->db->f('name');
-         $link_data['date'] = $visit_list[$i]['date'];
-         $link_data['action'] = 'view';
-         $this->t->set_var('view',$GLOBALS['phpgw']->link('/3rd/index.php',$link_data));
-         $this->t->set_var('lang_view','View');
-
-         $link_data['menuaction'] = '3rd.3rd.vis_update';
-         $link_data['visit'] = $visit_list[$i]['visit'];
-         $link_data['name'] = $this->db->f('name');
-         $link_data['date'] = $visit_list[$i]['date'];
-         $link_data['action'] = 'edit';
-         $this->t->set_var('edit',$GLOBALS['phpgw']->link('/3rd/index.php',$link_data));
-         $this->t->set_var('lang_edit','Edit');
-
-         $this->t->fp('list1','visit_list',True);
-       }
-
-      // List the families that are available to record a visit against
-      $sql = "SELECT * FROM 3rd_family WHERE valid=1";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $total_records = $this->db->num_rows();
-
-      $i = 0;
-      while ($this->db->next_record())
-       {
-         $family_names[$i] = $this->db->f('name');
-         $family_ids[$i] = $this->db->f('family');
-         $i++;
-       } array_multisort($family_names, $family_ids);
-      
-      for ($i=0; $i < count($family_names); $i++)
-       {
-         $link_data['menuaction'] = '3rd.3rd.vis_update';
-         $link_data['visit'] = '';
-         $link_data['family'] = $family_ids[$i];
-         $link_data['action'] = 'add';
-         $link_data['name'] = $family_names[$i];
-         $this->t->set_var('add',$GLOBALS['phpgw']->link('/3rd/index.php',$link_data));
-
-         $this->t->set_var('name',$family_names[$i]);
-         if(($i+1) % 3 == 0) { $this->t->set_var('table_sep',"</td></tr><tr>"); }
-         else { $this->t->set_var('table_sep',"</td>"); }
-         if(($i) % 3 == 0) { $this->nextmatchs->template_alternate_row_color(&$this->t); }
-
-         $this->t->fp('list2','family_list',True);
-       }   
-
-      $this->t->pfp('out','vis_view_t');
-      $this->save_sessiondata(); 
-    }
-
-  function vis_update()
-    {
-      $this->t->set_file(array('form' => 'vis_update.tpl'));
-      $this->t->set_block('form','add','addhandle');
-      $this->t->set_block('form','edit','edithandle');
-      
-      $this->t->set_var('done_action',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.vis_view'));
-      $this->t->set_var('readonly','');
-      $this->t->set_var('disabled','');
-      
-      $action = get_var('action',array('GET','POST'));
-      $visit = get_var('visit',array('GET','POST'));
-      $family = get_var('family',array('GET','POST'));
-      $name = get_var('name',array('GET','POST'));
-      $date = get_var('date',array('GET','POST'));
-      $notes = get_var('notes',array('GET','POST'));
-      $companionship = 0;
-      
-      if($action == 'save')
-       {
-         $notes = get_var('notes',array('POST'));
-         $this->db->query("UPDATE 3rd_visit set " .
-                          "  date='" . $date . "'" .
-                         ", notes='" . $notes . "'" .
-                          " WHERE visit=" . $visit,__LINE__,__FILE__);
-         $this->vis_view();
-         return false;
-       }
-
-      if($action == 'insert')
-       {
-         $notes = get_var('notes',array('POST'));
-         $this->db->query("INSERT INTO 3rd_visit (family,companionship,date,notes) "
-                          . "VALUES ('" . $family . "','" . $companionship . "','"
-                          . $date . "','" . $notes . "')",__LINE__,__FILE__);
-         $this->vis_view();
-         return false;
-       }
-      
-      if($action == 'add')
-       {
-         $this->t->set_var('cal_date',$this->jscal->input('date','','','','','','',$this->cal_options));
-         $this->t->set_var('family', $family);
-         $this->t->set_var('visit', '');
-         $this->t->set_var('name', $name);
-         $this->t->set_var('date','');
-         $this->t->set_var('notes','');
-         $this->t->set_var('lang_done','Cancel');
-         $this->t->set_var('lang_action','Adding New Visit');
-         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.vis_update&family='
-                                                               . $family . '&action=' . 'insert'));
-       }
-
-      if($action == 'edit' || $action == 'view')
-       {
-         $sql = "SELECT * FROM 3rd_visit WHERE visit=".$visit;
-         $this->db->query($sql,__LINE__,__FILE__);
-         $this->db->next_record();
-         $this->t->set_var('visit',$visit);
-         $this->t->set_var('name',$name);
-         $this->t->set_var('family', $family);
-         $this->t->set_var('date',$this->db->f('date'));
-         $this->t->set_var('notes',$this->db->f('notes'));
-       }
-      
-      if($action == 'edit')
-       {
-         $this->t->set_var('cal_date',$this->jscal->input('date',$date,'','','','','',$this->cal_options));
-         $this->t->set_var('lang_done','Cancel');
-         $this->t->set_var('lang_action','Editing Visit');
-         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.vis_update&visit='
-                                                               . $visit . '&action=' . 'save'));
-       }
-
-      if($action == 'view')
-       {
-         $date = $this->db->f('date');
-         $this->t->set_var('cal_date','<input type=text size="10" maxlength="10" name="date" value="'.$date.'" readonly>');
-         $this->t->set_var('readonly','READONLY');
-         $this->t->set_var('disabled','DISABLED');
-         $this->t->set_var('lang_done','Done');
-         $this->t->set_var('lang_action','Viewing Visit');
-         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.vis_update&visit='
-                                                               . $visit . '&action=' . 'edit'));
-       }
-      
-      $this->t->set_var('lang_reset','Clear Form');
-      $this->t->set_var('lang_add','Add Visit');
-      $this->t->set_var('lang_save','Save Changes');
-      $this->t->set_var('edithandle','');
-      $this->t->set_var('addhandle','');
-
-      $this->t->pfp('out','form');
-      
-      if($action == 'view') { $this->t->set_var('lang_save','Edit Visit'); }
-      if($action == 'edit' || $action == 'view') { $this->t->pfp('addhandle','edit'); }
-      if($action == 'add') { $this->t->pfp('addhandle','add'); }
-
-      $this->save_sessiondata(); 
-    }
-
-  function att_view()
-    {
-      $monthnum['Jan']=1; $monthnum['Feb']=2; $monthnum['Mar']=3; $monthnum['Apr']=4;
-      $monthnum['May']=5; $monthnum['Jun']=6; $monthnum['Jul']=7; $monthnum['Aug']=8;
-      $monthnum['Sep']=9; $monthnum['Oct']=10; $monthnum['Nov']=11; $monthnum['Dec']=12;
-
-      $this->t->set_file(array('att_view_t' => 'att_view.tpl'));
-      $this->t->set_block('att_view_t','act_list','list');
-
-      $this->t->set_block('att_view_t','month_list','list1');
-      $this->t->set_block('att_view_t','header_list','list2');
-      $this->t->set_block('att_view_t','indiv_list','list3');
-      
-      $this->t->set_var('linkurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.att_view'));
-      $num_quarters = get_var('num_quarters',array('GET','POST'));
-      if($num_quarters == '') { $num_quarters = $this->default_att_num_quarters; }
-      $this->t->set_var('num_quarters',$num_quarters);
-      $this->t->set_var('lang_filter','Filter');
-      if($num_quarters == 1) { $this->t->set_var('lang_num_quarters','Quarter of History'); }
-      else { $this->t->set_var('lang_num_quarters','Quarters of History'); }
-
-      $num_months = $num_quarters * 3;
-      $current_month = $this->current_month;
-      if($current_month >= 1 && $current_month <= 3) { $current_month=3; }
-      else if($current_month >= 4 && $current_month <= 6) { $current_month=6; }
-      else if($current_month >= 7 && $current_month <= 9) { $current_month=9; }
-      else if($current_month >= 10 && $current_month <= 12) { $current_month=12; }
-
-      $sql = "SELECT * FROM 3rd_indiv where valid=1";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i=0;
-      while ($this->db->next_record())
-       {
-         $indiv_name[$i] = $this->db->f('name');
-         $indiv_id[$i] = $this->db->f('indiv');
-         $i++;
-       }
-      array_multisort($indiv_name, $indiv_id);
-      
-      // Create a list of sunday dates for a window of 3 months back and current month
-      $i=0; 
-      $last_time = 0; 
-      $found_sunday = 0;
-      $sunday_list[0]['date'] = date("Y-m-d", mktime(0, 0, 0, ($current_month-$num_months)+1, 1, date("y")));
-      $last_date = explode("-",$sunday_list[0]['date']);
-      $last_time = mktime(0, 0, 0, $last_date[1], $last_date[2], $last_date[0]);
-      $time_limit = mktime(0, 0, 0, $current_month, 31, date("y"));
-      while($last_time < $time_limit)
-      {
-        $day = date("w",$last_time);
-        if(date("w",$last_time) == 0) {
-         $sunday_list[$i]['date'] = date("Y-m-d", $last_time);
-         $last_date = explode("-",$sunday_list[$i]['date']);
-         $last_time = mktime(0, 0, 0, $last_date[1], $last_date[2], $last_date[0]);
-         $sunday_list[$i]['day'] = $last_date[2];
-         $sunday_list[$i]['month'] = date("M",$last_time);
-         $sunday_list[$i]['year'] = $last_date[0];
-         $found_sunday = 1;
-         $last_date = $sunday_list[$i]['date'];
-       }
-       $last_time += 90000;
-       if($found_sunday) { $i++; $found_sunday=0; }
-      }
-
-      $total_indivs = count($indiv_id);
-      $old_month=$sunday_list[0]['month']; $span=0;
-      for ($i=0; $i < count($sunday_list); $i++) {
-        $date = $sunday_list[$i]['date'];
-        $this->t->set_var('date',$sunday_list[$i]['date']);
-       $this->t->set_var('day',$sunday_list[$i]['day']);
-       if(($old_month != $sunday_list[$i]['month']) || $i == count($sunday_list)-1) {
-         if($i == count($sunday_list)-1) { $span++; }
-         $cur_month = $sunday_list[$i]['month'];
-         $old_month = $sunday_list[$i]['month'];         
-         $link_data['menuaction'] = '3rd.3rd.att_update';
-         $link_data['month'] = $sunday_list[$i-1]['month'];
-         $link_data['year'] = $sunday_list[$i-1]['year'];
-         $link_data['action'] = 'update_month';
-         $cur_month = $sunday_list[$i-1]['month'];
-         $cur_year = $sunday_list[$i-1]['year'];
-         $header_row .= "<th><font size=-3>$cur_month&nbsp;$cur_year</font></th>";
-         $this->t->set_var('update_month',$GLOBALS['phpgw']->link('/3rd/index.php',$link_data));
-         $this->t->set_var('month',$sunday_list[$i-1]['month']);
-         $this->t->set_var('year',$sunday_list[$i-1]['year']);
-         $this->t->set_var('span',$span); $span=0;
-         $this->t->fp('list1','month_list',True);
-       } $span++;
-      }
-      $this->t->set_var('total_indivs',$total_indivs);
-      $this->t->set_var('header_row',$header_row);
-      
-      $indiv_width=200; $att_width=25; $total_width=$indiv_width; 
-      for ($i=0; $i < count($sunday_list); $i++) {
-       $link_data['menuaction'] = '3rd.3rd.att_update';
-       $link_data['month'] = $sunday_list[$i]['month'];
-       $link_data['year'] = $sunday_list[$i]['year'];
-       $link_data['day'] = $sunday_list[$i]['day'];
-       $link_data['date'] = $sunday_list[$i]['date'];
-       $link_data['action'] = 'update_day';
-       $this->t->set_var('update_day',$GLOBALS['phpgw']->link('/3rd/index.php',$link_data));
-        $this->t->set_var('date',$sunday_list[$i]['date']);
-       $this->t->set_var('day',$sunday_list[$i]['day']);
-        $this->t->set_var('month',$sunday_list[$i]['month']);
-       $this->t->set_var('year',$sunday_list[$i]['year']);
-       $this->t->fp('list2','header_list',True);
-       $total_width += $att_width;
-       $attendance[$monthnum[$sunday_list[$i]['month']]]=0;
-      }
-
-      for ($i=0; $i < count($indiv_id); $i++) {
-        $att_table = "";
-       $this->nextmatchs->template_alternate_row_color(&$this->t);
-       $this->t->set_var('indiv_name',$indiv_name[$i]);
-       #print "checking for indiv: " . $indiv_id[$i] . "<br>";
-       for ($j=0; $j < count($sunday_list); $j++) {
-         #print "checking for date: " .  $sunday_list[$j]['date'] . "<br>";
-         #print "SELECT * FROM 3rd_attendance WHERE date='"
-         #  . $sunday_list[$j]['date'] . "' AND indiv=" . $indiv_id[$i] . "<br>";
-         $sql = "SELECT * FROM 3rd_attendance WHERE date='"
-            . $sunday_list[$j]['date'] . "' AND indiv=" . $indiv_id[$i];
-         $this->db->query($sql,__LINE__,__FILE__);
-         if($this->db->next_record()) {
-           $cur_month = $sunday_list[$j]['month'];
-           if($attended[$i][$cur_month] != 1) { 
-             $attended[$i][$cur_month]=1;
-             $attendance[$monthnum[$cur_month]]++;
-           } 
-           $att_table .= '<td align=center><img src="images/checkmark.gif"></td>';
-         } else {
-           $att_table .= '<td>&nbsp;</td>';
-         }
-       }
-       $this->t->set_var('att_table',$att_table);
-       $this->t->fp('list3','indiv_list',True);
-      }
-      $this->t->set_var('total_width',$total_width);
-      $this->t->set_var('indiv_width',$indiv_width);
-      $this->t->set_var('att_width',$att_width);
-
-      # Now calculate attendance for these months
-      $attendance_str = "";
-      $nonattendance_str = "";
-      $aveattendance_str = "";
-      $avenonattendance_str = "";
-      $num_months=0;
-      $ave_total_attended=0;
-      ksort($attendance);
-      foreach($attendance as $att => $value) {
-       $total_attended = $attendance[$att];
-       $ave_total_attended += $attendance[$att]; $num_months++;
-       $percent = ceil(($total_attended / $total_indivs)*100);
-       $attendance_str.="<td align=center><font size=-2><b>$total_attended ($percent%)</b></font></td>";
-       $total_nonattended = $total_indivs - $total_attended;
-       $percent = ceil(($total_nonattended / $total_indivs)*100);
-       $nonattendance_str.="<td align=center><font size=-2><b>$total_nonattended ($percent%)</b></font></td>";
-       
-       $total_attended = ceil(($ave_total_attended / $num_months));
-       $percent = ceil(($total_attended / $total_indivs)*100);
-       $aveattendance_str .= "<td align=center><font size=-2><b>$total_attended ($percent%)</b></font></td>";
-       $total_attended = $total_indivs - ceil(($ave_total_attended / $num_months));
-       $percent = ceil(($total_attended / $total_indivs)*100);
-       $avenonattendance_str .= "<td align=center><font size=-2><b>$total_attended ($percent%)</b></font></td>";
-      }
-      
-      $this->t->set_var('attendance',$attendance_str);
-      $this->t->set_var('aveattendance',$aveattendance_str);
-      $this->t->set_var('nonattendance',$nonattendance_str);
-      $this->t->set_var('avenonattendance',$avenonattendance_str);
-      
-      $this->t->pfp('out','att_view_t');
-      $this->save_sessiondata(); 
-    }
-
-  function att_update()
-    {
-      $monthnum['Jan']=1; $monthnum['Feb']=2; $monthnum['Mar']=3; $monthnum['Apr']=4;
-      $monthnum['May']=5; $monthnum['Jun']=6; $monthnum['Jul']=7; $monthnum['Aug']=8;
-      $monthnum['Sep']=9; $monthnum['Oct']=10; $monthnum['Nov']=11; $monthnum['Dec']=12;
-
-      $this->t->set_file(array('form' => 'att_update.tpl'));
-      $this->t->set_block('form','edit','edithandle');
-      
-      $this->t->set_block('form','month_list','list1');
-      $this->t->set_block('form','header_list','list2');
-      $this->t->set_block('form','indiv_list','list3');
-
-      $this->t->set_var('done_action',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.att_view'));
-
-      $action = get_var('action',array('GET','POST'));
-      $month = get_var('month',array('GET','POST'));
-      $year = get_var('year',array('GET','POST'));
-      $day = get_var('day',array('GET','POST'));
-      $date = get_var('date',array('GET','POST'));
-
-      if($action == 'save_month' || $action == 'save_day')
-       {
-          $new_data = get_var('indivs_attended',array('POST'));
-          $month = $monthnum[$month]; if($month < 10) { $month = "0" . $month; }
-
-          if($action == 'save_month') {        
-             $this->db->query("DELETE from 3rd_attendance where date LIKE '".$year."-".$month."-%'",__LINE__,__FILE__);
-          }
-
-          if($action == 'save_day') {        
-             $this->db->query("DELETE from 3rd_attendance where date LIKE '".$year."-".$month."-".$day."'",__LINE__,__FILE__);
-          }   
-
-          foreach ($new_data as $data)
-          {
-             $data_array = explode("-",$data);
-             $indiv = $data_array[0];
-             $date  = "$data_array[1]-$data_array[2]-$data_array[3]";        
-             $this->db->query("INSERT INTO 3rd_attendance (indiv,date) "
-                              . "VALUES (" . $indiv . ",'". $date . "')",__LINE__,__FILE__);
-          }
-       
-        $this->att_view();
-        return false;    
-       }
-
-      $sql = "SELECT * FROM 3rd_indiv where valid=1";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i=0;
-      while ($this->db->next_record())
-       {
-         $indiv_name[$i] = $this->db->f('name');
-         $indiv_id[$i] = $this->db->f('indiv');
-         $indiv_attending[$indiv_id[$i]] = $this->db->f('attending');
-         $i++;
-       }
-      array_multisort($indiv_name, $indiv_id);
-      
-      if($action == 'update_month')
-      {
-        $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.att_update&action=save_month'));
-        $i=0; 
-       $last_time = 0; 
-       $found_sunday = 0;
-       $sunday_list[0]['date'] = date("Y-m-d", mktime(0, 0, 0, $monthnum[$month], 1, $year));
-       $last_date = explode("-",$sunday_list[0]['date']);
-       $last_time = mktime(0, 0, 0, $last_date[1], $last_date[2], $last_date[0]);
-       $time_limit = mktime(0, 0, 0, $monthnum[$month], 31, $year);
-       while($last_time <= $time_limit)
-       {
-          $day = date("w",$last_time);
-          if(date("w",$last_time) == 0) { 
-           $sunday_list[$i]['date'] = date("Y-m-d", $last_time); 
-           $last_date = explode("-",$sunday_list[$i]['date']);
-           $last_time = mktime(0, 0, 0, $last_date[1], $last_date[2], $last_date[0]);
-           $sunday_list[$i]['day'] = $last_date[2];
-           $sunday_list[$i]['month'] = date("M",$last_time);
-           $sunday_list[$i]['year'] = $last_date[0];
-           $found_sunday = 1; 
-         }
-         $last_time += 90000;
-         if($found_sunday) { $i++; $found_sunday=0; }
-        }
-
-       $this->t->set_var('span', $i);
-       $this->t->set_var('month',$sunday_list[$i-1]['month']);
-       $this->t->set_var('year',$sunday_list[$i-1]['year']);
-       $this->t->fp('list1','month_list',True);
-       $indiv_width=200; $att_width=25; $total_width=$indiv_width;
-       for ($i=0; $i < count($sunday_list); $i++) {
-         $link_data['menuaction'] = '3rd.3rd.att_update';
-         $link_data['month'] = $sunday_list[$i]['month'];
-         $link_data['year'] = $sunday_list[$i]['year'];
-         $link_data['day'] = $sunday_list[$i]['day'];
-         $link_data['date'] = $sunday_list[$i]['date'];
-         $link_data['action'] = 'update_day';
-         $this->t->set_var('update_day',$GLOBALS['phpgw']->link('/3rd/index.php',$link_data));
-         $this->t->set_var('date',$sunday_list[$i]['date']);
-         $this->t->set_var('day',$sunday_list[$i]['day']);
-         $this->t->set_var('month',$sunday_list[$i]['month']);
-         $this->t->set_var('year',$sunday_list[$i]['year']);
-         $this->t->fp('list2','header_list',True);
-         $total_width += $att_width;
-       }     
-      }
-
-      if($action == 'update_day')
-      {
-        $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.att_update&action=save_day'));
-        $sunday_list[0]['date'] = date("Y-m-d", mktime(0, 0, 0, $monthnum[$month], $day, $year));
-        $this->t->set_var('month',$month);
-       $this->t->set_var('year',$year);
-       $this->t->fp('list1','month_list',True);
-       $this->t->set_var('date',$date);
-       $this->t->set_var('day',$day);
-       $this->t->set_var('month',$month);
-       $this->t->set_var('year',$year);
-       $this->t->fp('list2','header_list',True);
-      }           
-            
-      for ($i=0; $i < count($indiv_id); $i++) {
-        $att_table = "";
-       $this->nextmatchs->template_alternate_row_color(&$this->t);
-       $this->t->set_var('indiv_name',$indiv_name[$i]);
-       for ($j=0; $j < count($sunday_list); $j++) {
-         $sql = "SELECT * FROM 3rd_attendance WHERE date='"
-            . $sunday_list[$j]['date'] . "' AND indiv=" . $indiv_id[$i];
-         $this->db->query($sql,__LINE__,__FILE__);
-         $value = $indiv_id[$i] . "-" . $sunday_list[$j]['date'];
-         if($this->db->next_record()) {
-           $att_table .= '<td align=center><input type="checkbox" name="indivs_attended[]" value="'.$value.'" checked></td>';
-         } else if($indiv_attending[$indiv_id[$i]] == 1) {
-           $att_table .= '<td align=center><input type="checkbox" name="indivs_attended[]" value="'.$value.'" checked></td>';
-         } else {
-           $att_table .= '<td align=center><input type="checkbox" name="indivs_attended[]" value="'.$value.'"></td>';
-         }
-       }
-       $this->t->set_var('att_table',$att_table);
-       $this->t->fp('list3','indiv_list',True);
-      } 
-           
-      $this->t->set_var('lang_done', 'Cancel');
-      $this->t->set_var('lang_reset','Clear Form');
-      $this->t->set_var('lang_save','Save Changes');
-
-      $this->t->pfp('out','form');
-      $this->t->pfp('addhandle','edit');
-
-      $this->save_sessiondata();       
-    }
-
-  function dir_view()
-    {
-      $this->t->set_file(array('dir_view_t' => 'dir_view.tpl'));
-      $this->t->set_block('dir_view_t','dir_list','list');
-      
-      $sql = "SELECT * FROM 3rd_parent where valid=1 ORDER BY name ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i=0;
-      while ($this->db->next_record())
-       {
-         $parent[$i]['id'] = $this->db->f('parent');
-         $parent[$i]['name'] = $this->db->f('name');
-         $parent[$i]['phone'] = $this->db->f('phone');
-         $parent[$i]['address'] = $this->db->f('address');
-         $i++;
-       }   
-      
-      for ($i=0; $i < count($parent); $i++) 
-      {
-        $name = $parent[$i]['name'];
-       $phone = $parent[$i]['phone'];
-       $address = $parent[$i]['address'];
-       $this->t->set_var('name', $name);
-       $this->t->set_var('address', $address);
-       $this->t->set_var('phone', $phone);
-        $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
-        $this->t->set_var('tr_color',$tr_color);
-       $this->t->fp('list','dir_list',True);
-       //print "$phone $name $address<br>";
-      }
-      $this->t->pfp('out','dir_view_t');
-      $this->save_sessiondata();   
-    }
-  
-  function org_view()
-    {
-      $this->t->set_file(array('org_view_t' => 'org_view.tpl'));
-      $this->t->set_block('org_view_t','calling_list','list1');
-      $this->t->set_block('org_view_t','org_list','list2');
-
-      # Display a list ordered alphabetically
-      $sql = "SELECT * FROM 3rd_calling ORDER BY name ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i=0;
-      while ($this->db->next_record())
-       {
-         $calling[$i]['id'] = $this->db->f('indiv_id');
-         $calling[$i]['name'] = $this->db->f('name');
-         $calling[$i]['position'] = $this->db->f('position');
-         $calling[$i]['sustained'] = $this->db->f('sustained');
-         $calling[$i]['organization'] = $this->db->f('organization');
-         $i++;
-       }   
-      for ($i=0; $i < count($calling); $i++) 
-      {
-        $name = $calling[$i]['name'];
-       $position = $calling[$i]['position'];
-       $sustained = $calling[$i]['sustained'];
-       $organization = $calling[$i]['organization'];
-       $this->t->set_var('name', $name);
-       $this->t->set_var('position', $position);
-       $this->t->set_var('sustained', $sustained);
-       $this->t->set_var('organization', $organization);
-        $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
-        $this->t->set_var('tr_color',$tr_color);
-       $this->t->fp('list1','calling_list',True);
-      }
-
-      # Display a list ordered by organization
-      $sql = "SELECT * FROM 3rd_calling ORDER BY sequence ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i=0;
-      while ($this->db->next_record())
-       {
-         $calling[$i]['id'] = $this->db->f('indiv_id');
-         $calling[$i]['name'] = $this->db->f('name');
-         $calling[$i]['position'] = $this->db->f('position');
-         $calling[$i]['sustained'] = $this->db->f('sustained');
-         $calling[$i]['organization'] = $this->db->f('organization');
-         $i++;
-       }   
-      for ($i=0; $i < count($calling); $i++) 
-      {
-        $name = $calling[$i]['name'];
-       $position = $calling[$i]['position'];
-       $sustained = $calling[$i]['sustained'];
-       $organization = $calling[$i]['organization'];
-       $this->t->set_var('name', $name);
-       $this->t->set_var('position', $position);
-       $this->t->set_var('sustained', $sustained);
-       $this->t->set_var('organization', $organization);
-        $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
-        $this->t->set_var('tr_color',$tr_color);
-       $this->t->fp('list2','org_list',True);
-      }
-      
-      $this->t->pfp('out','org_view_t');
-      $this->save_sessiondata();   
-    }
-  
-  function schedule()
-    {
-      $this->t->set_file(array('sched_t' => 'schedule.tpl'));
-      $this->t->set_block('sched_t','presidency_list','list');
-
-      $action = get_var('action',array('GET','POST'));
-      
-      $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.schedule&action=save'));
-      $this->t->set_var('title','Scheduling Tool');
-
-      $this->t->set_var('lang_save','Save Schedule');
-      $this->t->set_var('lang_reset','Cancel');
-      
-      $this->t->set_var('schedule_vis_link',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.vis_sched'));
-      $this->t->set_var('schedule_vis_link_title','Schedule Yearly Visits');
-
-      $this->t->set_var('schedule_int_link',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.int_sched'));
-      $this->t->set_var('schedule_int_link_title','Schedule Hometeaching Interviews');
-      
-      $this->t->set_var('schedule_ppi_link',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.ppi_sched'));
-      $this->t->set_var('schedule_ppi_link_title','Schedule Yearly PPIs');
-      
-      $date_width=150; $time_width=220; $indiv_width=170; $family_width=180; $location_width=100;
-      $table_width=$date_width + $time_width + $indiv_width + $family_width + $location_width;
-      $header_row = "<th width=$date_width><font size=-2>Date</th>";
-      $header_row.= "<th width=$time_width><font size=-2>Time</th>";      
-      $header_row.= "<th width=$indiv_width><font size=-2>individual</th>";
-      $header_row.= "<th width=$family_width><font size=-2>Family</th>";
-      $header_row.= "<th width=$location_width><font size=-2>Location</th>";
-      $table_data = "";
-
-      $sql = "SELECT * FROM 3rd_presidency where valid=1";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i=0;
-      while ($this->db->next_record())
-       {
-         $presidency_data[$i]['id'] = $this->db->f('presidency');
-         $presidency_data[$i]['name'] = $this->db->f('name');
-         $presidency_data[$i]['indiv'] = $this->db->f('indiv');
-         $presidency2name[$presidency_data[$i]['id']] = $presidency_data[$i]['name'];
-         $presidency2indiv[$presidency_data[$i]['id']] = $presidency_data[$i]['indiv'];
-         $i++;
-       }
-      
-      $sql = "SELECT * FROM 3rd_family where valid=1 and indiv_id != 0 ORDER BY name ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i=0;
-      while ($this->db->next_record())
-       {
-         $family_id[$i] = $this->db->f('family');
-         $family_name[$i] = $this->db->f('name');
-         $familyid2name[$family_id[$i]] = $family_name[$i];
-         $sql = "SELECT * FROM 3rd_parent where family='$family_id[$i]'";
-         $this->db2->query($sql,__LINE__,__FILE__);
-         if($this->db2->next_record()) {
-           $familyid2address[$family_id[$i]] = $this->db2->f('address');
-         }
-         $i++;
-       }
-      array_multisort($family_name, $family_id);
-
-      if($action == 'save')
-       {
-         $new_data = get_var('sched',array('POST'));
-         foreach ($new_data as $presidency_array)
-          {
-            foreach ($presidency_array as $entry)
-              {
-                $presidency = $entry['presidency'];
-                $appointment = $entry['appointment'];
-                $location = $entry['location'];
-                $date = $entry['date'];
-                $hour = $entry['hour'];
-                $minute = $entry['minute'];
-                $pm = $entry['pm'];
-                $indiv = $entry['indiv'];
-                $family = $entry['family'];
-                $location = $entry['location'];
-                if($pm) { $hour = $hour + 12; }
-                $time = $hour.':'.$minute.':'.'00';
-                $uid = 0;
-
-                // Update our location
-                if($location == "") {
-                  if($family > 0) {
-                    $family_name_array = explode(",", $familyid2name[$family]);
-                    $family_last_name = $family_name_array[0];
-                    $family_address = $familyid2address[$family];
-                    $location = "$family_last_name"." home ($family_address)";
-                  }
-                  else if($indiv > 0) {
-                    $supervisor_name_array = explode(",",$presidency2name[$presidency]);
-                    $supervisor_last_name = $supervisor_name_array[0];
-                    $sql = "SELECT * FROM 3rd_indiv where indiv='$presidency2indiv[$presidency]'";
-                    $this->db2->query($sql,__LINE__,__FILE__);
-                    if($this->db2->next_record()) {
-                      $indiv_id = $this->db2->f('indiv_id');
-                    }
-                    $sql = "SELECT * FROM 3rd_parent where indiv_id='$indiv_id'";
-                    $this->db2->query($sql,__LINE__,__FILE__);
-                    if($this->db2->next_record()) {
-                      $supervisor_address = $this->db2->f('address');
-                    }
-                    $location = "$supervisor_last_name"." home ($supervisor_address)";
-                  }
-                }
-                
-                // Zero out the family or individual if date = NULL
-                if($date == "") {
-                  $indiv = 0;
-                  $family = 0;
-                  $location = "";
-                }
-
-                if(($indiv == 0) && ($family == 0)) { $location = ""; }
-                
-                // Update an existing appointment
-                if($appointment < $this->max_appointments)
-                  {
-                    //Only perform a database update if we have made a change to this appointment
-                    $sql = "SELECT * FROM 3rd_appointment where " .
-                       "appointment='$appointment'" .
-                       " and presidency='$presidency'" .
-                       " and indiv='$indiv'" .
-                       " and family='$family'" .
-                       " and date='$date'" .
-                       " and time='$time'" .
-                       " and location='$location'";
-                    $this->db->query($sql,__LINE__,__FILE__);
-                    if(!$this->db->next_record()) {
-                      $old_date = $this->db->f('date');
-                      $old_time = $this->db->f('time');
-                      $this->db2->query("UPDATE 3rd_appointment set" .
-                                       " family=" . $family . 
-                                       " ,indiv=" . $indiv . 
-                                       " ,date='" . $date . "'" .
-                                       " ,time='" . $time . "'" .
-                                       " ,location='" . $location . "'" .
-                                       " ,presidency='" . $presidency . "'" .
-                                       " WHERE appointment=" . $appointment,__LINE__,__FILE__);
-                      
-                      // Email the appointment
-                      $this->email_appt($appointment);
-                    }
-                  }
-                
-                // Add a new appointment
-                else if(($appointment >= $this->max_appointments) && ($date != "") && ($time != ""))
-                  {
-                    //print "adding entry: appt=$appointment date: $date time: $time indiv: $indiv family: $family<br>";
-                    $this->db2->query("INSERT INTO 3rd_appointment (appointment,presidency,family,indiv,date,time,location,uid) "
-                          . "VALUES (NULL,'" . $presidency . "','" . $family . "','" . $indiv . "','"
-                          . $date . "','" . $time  . "','" . $location . "','" . $uid ."')",__LINE__,__FILE__);
-
-                    // Now reselect this entry from the database to see if we need
-                    // to send an appointment out for it.
-                    $sql = "SELECT * FROM 3rd_appointment where " .
-                       "indiv='$indiv'" .
-                       " and family='$family'" .
-                       " and presidency='$presidency'" .
-                       " and date='$date'" .
-                       " and time='$time'" .
-                       " and uid='$uid'" .
-                       " and location='$location'";
-                    $this->db3->query($sql,__LINE__,__FILE__);
-                    if($this->db3->next_record()) {
-                      // Email the appointment if warranted
-                      if(($date != "") && ($time != "") && (($indiv > 0) || $family > 0)) { 
-                        $this->email_appt($this->db3->f('appointment'));
-                      }
-                    }
-                  }
-              }
-          }
-         
-         $take_me_to_url = $GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.schedule');
-         //Header('Location: ' . $take_me_to_url);
-       }
-      
-      $sql = "SELECT * FROM 3rd_indiv where valid=1 ORDER BY indiv ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i=0;
-      while ($this->db->next_record())
-       {
-         $indiv_id[$i] = $this->db->f('indiv');
-         $indiv_name[$i] = $this->db->f('name');
-         $indiv_phone[$indiv_id[$i]] = $this->db->f('phone');
-         $i++;
-       }
-      array_multisort($indiv_name, $indiv_id);
-      
-      for ($i=0; $i < count($presidency_data); $i++) {
-       $presidency = $presidency_data[$i]['id'];
-       $interviewer = $presidency_data[$i]['indiv'];
-       $name = $presidency_data[$i]['name'];
-       $this->t->set_var('presidency_name',$name);
-       $table_data="";
-       
-       // query the database for all the appointments
-       $sql = "SELECT * FROM 3rd_appointment where presidency=$presidency and date>=CURDATE() ORDER BY date ASC, time ASC";
-       $this->db->query($sql,__LINE__,__FILE__);
-
-       // Prefill any existing appointment slots
-       while ($this->db->next_record())
-         {
-           $appointment = $this->db->f('appointment');
-           $indiv = $this->db->f('indiv');
-           $family = $this->db->f('family');
-           $location = $this->db->f('location');
-
-           if($location == "") {
-             if($family > 0) {
-               $family_name_array = explode(",", $familyid2name[$family]);
-               $family_last_name = $family_name_array[0];
-               $family_address = $familyid2address[$family];
-               $location = "$family_last_name"." home ($family_address)";
-             }
-             else if($indiv > 0) {
-               $supervisor_name_array = explode(",",$presidency2name[$presidency]);
-               $supervisor_last_name = $supervisor_name_array[0];
-               $sql = "SELECT * FROM 3rd_indiv where indiv='$presidency2indiv[$presidency]'";
-               $this->db2->query($sql,__LINE__,__FILE__);
-               if($this->db2->next_record()) {
-                 $indiv_id = $this->db2->f('indiv_id');
-               }
-               $sql = "SELECT * FROM 3rd_parent where indiv_id='$indiv_id'";
-               $this->db2->query($sql,__LINE__,__FILE__);
-               if($this->db2->next_record()) {
-                 $supervisor_address = $this->db2->f('address');
-               }
-               $location = "$supervisor_last_name"." home ($supervisor_address)";
-             }
-           }
-           
-           $date = $this->db->f('date');
-           $date_array = explode("-",$date);
-           $year = $date_array[0]; $month = $date_array[1]; $day = $date_array[2];
-           $day_string = date("l d-M-Y", mktime(0,0,0,$month,$day,$year));
-           
-           $time = $this->db->f('time');
-           $time_array = explode(":",$time);
-           $hour = $time_array[0];
-           $minute = $time_array[1];
-           $pm = 0;
-           if($hour > 12) { $pm=1; $hour = $hour - 12; }
-           $time_string = date("g:i a", mktime($time_array[0], $time_array[1], $time_array[2]));
-           
-           $table_data.= "<tr bgcolor=". $this->t->get_var('tr_color') .">";
-
-           // Date selection
-           $table_data.= '<td align=left>';
-           $table_data.= $this->jscal->input('sched['.$presidency.']['.$appointment.'][date]',$date,'','','','','',$this->cal_options);
-           $table_data.= '</td>';
-           
-           // Hour & Minutes selection
-           $table_data.= "<td align=center>";
-           $table_data .= $this->get_time_selection_form($hour, $minute, $pm, $presidency, $appointment);
-           $table_data.= "</td>";
-           
-           // individual drop down list (for PPIs)
-           $table_data.= '<td align=center><select name=sched['.$presidency.']['.$appointment.'][indiv] STYLE="font-size : 8pt">';
-           $table_data.= '<option value=0></option>';  
-           for ($j=0; $j < count($indiv_id); $j++) {
-             $id = $indiv_id[$j];
-             $name = $indiv_name[$j];
-             if($indiv_id[$j] == $indiv) { $selected[$id] = 'selected="selected"'; } else { $selected[$id] = ''; }
-             $table_data.= '<option value='.$id.' '.$selected[$id].'>'.$name.'</option>';
-           }
-           $table_data.='</select></td>';
-
-           // Family drop down list (for Visits)
-           $table_data.= '<td align=center><select name=sched['.$presidency.']['.$appointment.'][family] STYLE="font-size : 8pt">';
-           $table_data.= '<option value=0></option>';              
-           for ($j=0; $j < count($indiv_id); $j++) {
-             $id = $family_id[$j];
-             $name = $family_name[$j];
-             if($family_id[$j] == $family) { $selected[$id] = 'selected="selected"'; } else { $selected[$id] = ''; }
-             $table_data.= '<option value='.$id.' '.$selected[$id].'>'.$name.' Family</option>';
-           }
-           $table_data.='</select></td>';
-
-           // Location text box
-           $table_data.= '<td align=center><input type=text size="25" maxlength="120" ';
-           $table_data.= 'name="sched['.$presidency.']['.$appointment.'][location]" value="'.$location.'" STYLE="font-size : 8pt">';
-           
-           $table_data.= '<input type=hidden name="sched['.$presidency.']['.$appointment.'][appointment]" value="'.$appointment.'">';
-           $table_data.= '<input type=hidden name="sched['.$presidency.']['.$appointment.'][presidency]" value="'.$presidency.'">';
-       
-           $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
-           $this->t->set_var('tr_color',$tr_color);
-           
-         }
-
-       // Create blank appointment slot
-       for ($b=0; $b < 4; $b++) {
-         $appointment = $this->max_appointments + $b;
-         $table_data.= "<tr bgcolor=". $this->t->get_var('tr_color') .">";
-
-         // Date selection
-         $table_data.= '<td align=left>';
-         $table_data.= $this->jscal->input('sched['.$presidency.']['.$appointment.'][date]','','','','','','',$this->cal_options);
-         $table_data.= '</td>';
-       
-         // Time selection
-         $table_data.= "<td align=center>";
-         $table_data .= $this->get_time_selection_form(0, 0, 0, $presidency, $appointment);
-         $table_data.= "</td>";
-         
-         // individual drop down list
-         $table_data.= '<td align=center><select name=sched['.$presidency.']['.$appointment.'][indiv] STYLE="font-size : 8pt">';
-         $table_data.= '<option value=0></option>';  
-         for ($j=0; $j < count($indiv_id); $j++) {
-           $id = $indiv_id[$j];
-           $name = $indiv_name[$j];
-           $table_data.= '<option value='.$id.'>'.$name.'</option>';
-         }
-         $table_data.='</select></td>';
-         
-         // Family drop down list
-         $table_data.= '<td align=center><select name=sched['.$presidency.']['.$appointment.'][family] STYLE="font-size : 8pt">';
-         $table_data.= '<option value=0></option>';        
-         for ($j=0; $j < count($indiv_id); $j++) {
-           $id = $family_id[$j];
-           $name = $family_name[$j];
-           $table_data.= '<option value='.$id.'>'.$name.' Family</option>';
-         }
-         $table_data.='</select></td>';
-
-         // Location text box
-         $table_data.= '<td align=center><input type=text size="25" maxlength="120" ';
-         $table_data.= 'name="sched['.$presidency.']['.$appointment.'][location]" value="" STYLE="font-size : 8pt">';
-         
-         $table_data.= '<input type=hidden name="sched['.$presidency.']['.$appointment.'][appointment]" value="'.$appointment.'">';
-         $table_data.= '<input type=hidden name="sched['.$presidency.']['.$appointment.'][presidency]" value="'.$presidency.'">';
-
-         $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
-         $this->t->set_var('tr_color',$tr_color);
-       }
-       
-       $this->t->set_var('table_data',$table_data);
-       $this->t->set_var('header_row',$header_row);
-       $this->t->set_var('table_width',$table_width);
-       $this->t->fp('list','presidency_list',True);
-       
-      }
-      
-      $this->t->pfp('out','sched_t');
-      $this->save_sessiondata();   
-    }
-
-  function email()
-    {
-      $this->t->set_file(array('email_t' => 'email.tpl'));
-      $this->t->set_block('email_t','indiv_list','list');
-
-      $action = get_var('action',array('GET','POST'));
-      
-      $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.email'));
-      $this->t->set_var('title','Email Tool');
-
-      $this->t->set_var('lang_email','Send Email');
-      $this->t->set_var('lang_reset','Cancel');
-      
-      $this->t->set_var('email_member_link',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.email&action=member'));
-      $this->t->set_var('email_member_link_title','Email Quorum Member');
-
-      $this->t->set_var('email_quorum_link',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.email&action=quorum'));
-      $this->t->set_var('email_quorum_link_title','Email Quorum');
-      
-      $this->t->set_var('email_reminder_link',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.email&action=reminder'));
-      $this->t->set_var('email_reminder_link_title','Email Reminders');
-
-      $this->t->set_var('email_edit_link',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.email&action=edit'));
-      $this->t->set_var('email_edit_link_title','Edit Email Addresses');
-
-      $table_width=600;
-      $this->t->set_var('table_width',$table_width);
-      
-      $this->t->pfp('out','email_t');
-      $this->save_sessiondata();   
-    }
-
-  function admin()
-    {
-      $this->t->set_file(array('admin_t' => 'admin.tpl'));
-      $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('/3rd/index.php','menuaction=3rd.3rd.admin&action=upload'));
-      $this->t->set_var('presidency_action',$GLOBALS['phpgw']->link('/3rd/index.php','menuaction=3rd.3rd.admin&action=presidency'));
-      
-      $action = get_var('action',array('GET','POST'));
-
-      $this->t->pfp('out','admin_t');
-
-      $sql = "SELECT * FROM 3rd_indiv where valid=1 ORDER BY indiv ASC";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $i=0;
-      while ($this->db->next_record())
-       {
-         $indiv_id[$i] = $this->db->f('indiv');
-         $indiv_name[$i] = $this->db->f('name');
-         $indiv2name[$indiv_id[$i]] = $indiv_name[$i];
-         $i++;
-       }
-      array_multisort($indiv_name, $indiv_id);
-
-      if($action == 'upload')
-       {        
-         $target_path = $this->upload_target_path . '/' . basename( $_FILES['uploadedfile']['name']);
-         
-         if(($_FILES['uploadedfile']['type'] == "application/zip") ||
-            ($_FILES['uploadedfile']['type'] == "application/x-zip-compressed") ||
-            ($_FILES['uploadedfile']['type'] == "application/x-zip") ||
-            ($_FILES['uploadedfile']['type'] == "application/octet-stream")) {
-
-           if(!move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
-             $uploadstatus = "<b><font color=red> -E- Unable to move the uploaded file to ";
-             $uploadstatus.= "the target path (check the path and permissions) of: $target_path</font></b>";
-             $uploadstatus = "<b>The following file was uploaded successfully: </b><br><br>";
-             $uploadstatus.= "Tmp Filename : " . $_FILES['uploadedfile']['tmp_name'] . "<br>";
-             $uploadstatus.= "Filename     : " . $_FILES['uploadedfile']['name'] . "<br>";
-             $uploadstatus.= "Type         : " . $_FILES['uploadedfile']['type'] . "<br>";
-             $uploadstatus.= "Size         : " . $_FILES['uploadedfile']['size'] . "<br>";
-             $uploadstatus.= "Error        : " . $_FILES['uploadedfile']['error'] . "<br>";     
-             $this->t->set_var('uploadstatus',$uploadstatus);
-             $this->t->pfp('uploadhandle','upload',True);
-             return 0;
-           }
-           
-           $uploadstatus = "<b>The following file was uploaded successfully: </b><br><br>";
-           $uploadstatus.= "Filename : " . $_FILES['uploadedfile']['name'] . "<br>";
-           $uploadstatus.= "Type     : " . $_FILES['uploadedfile']['type'] . "<br>";
-           $uploadstatus.= "Size     : " . $_FILES['uploadedfile']['size'] . "<br>";    
-           $this->t->set_var('uploadstatus',$uploadstatus);
-           $this->t->pfp('uploadhandle','upload');
-           $this->t->set_var('uploadhandle','');
-           print "<table border=1 width=80%><tr><td>\n<pre>";
-           
-           # make a directory for this data to be stored in
-           $date="data_" . date("Y_m_d");
-           $data_dir = $this->upload_target_path . '/' . $date;
-           print "-> Making the data directory: $date<br>\n";
-           exec('mkdir -p ' . $data_dir . ' 2>&1', $result, $return_code);
-           if($return_code != 0) {
-             print implode('\n',$result) . "<br>";
-             print "<b><font color=red>";
-             print "-E- Unable to create the data directory. Aborting import.";
-             print "</font></b>";
-             return 0;
-           }
-
-           # move the file uploaded into this directory
-           print "-> Moving the uploaded file into the data dir<br>\n";
-           exec('mv ' . $target_path . ' ' . $data_dir . '/' . ' 2>&1', $result, $return_code);
-           if($return_code != 0) {
-             print implode('\n',$result) . "<br>";
-             print "<b><font color=red>";
-             print "-E- Unable to move the uploaded file into the data dir. Aborting import.";
-             print "</font></b>";
-             return 0;
-           }
-           
-           # unzip the data into this directory
-           print "-> Unzipping the data<br>\n";
-           exec($this->unzip_path .' -u '. $data_dir . '/*.zip -d ' . $data_dir . ' 2>&1', $result, $return_code);
-           if($return_code != 0) {
-             print implode('\n',$result) . "<br>";
-             print "<b><font color=red>";
-             print "-E- Unable to unzip the uploaded file into the data dir: $data_dir. Aborting import.";
-             print "</font></b>";
-             return 0;
-           }
-           exec('mv ' . $data_dir . '/*/* '. $data_dir . ' 2>&1', $result, $return_code);
-
-           # update the data_latest link to point to this new directory
-           print "-> Updating the latest data dir link<br>\n";
-           $data_latest = $this->upload_target_path . '/data_latest';
-           exec('rm ' . $data_latest. '; ln -s ' . $data_dir .' '. $data_latest .' 2>&1', $result, $return_code);
-           if($return_code != 0) {
-             print implode('\n',$result) . "<br>";
-             print "<b><font color=red>";
-             print "-E- Unable to update the data latest link. Aborting import.";
-             print "</font></b>";
-             return 0;
-           }
-           
-           # run the import perl script to encorporate it into the DB
-           ob_start('ob_logstdout', 2);
-           print "-> Importing the data into the database<br>\n";
-           ob_flush(); flush(); sleep(1);
-           $import_log = $this->upload_target_path . '/import.log';
-           $data_log = $this->upload_target_path . '/data.log';
-           $import_cmd = $this->script_path . '/import_ward_data ' . $data_latest . ' 2>&1 | tee ' . $import_log;
-           $parse_cmd = $this->script_path . '/parse_ward_data -v ' . $data_latest . ' > ' . $data_log . '2>&1';
-           #print "import_cmd: $import_cmd<br>";
-           #print "parse_cmd: $parse_cmd<br>";
-           ob_start('ob_logstdout', 2);
-           passthru($import_cmd);
-           passthru($parse_cmd);
-           ob_flush(); flush(); sleep(1);
-
-           # fix the permissions of the data dir
-           exec('chmod -R o-rwx ' . $data_dir, $result, $return_code);
-           
-           $this->t->pfp('cmdhandle','cmd');
-           print "</pre></td></tr></table>";
-           
-         } else if(($_FILES['uploadedfile']['type'] != "application/zip") &&
-                   ($_FILES['uploadedfile']['type'] != "application/x-zip-compressed") &&
-                   ($_FILES['uploadedfile']['type'] != "application/x-zip") &&
-                   ($_FILES['uploadedfile']['type'] != "application/octet-stream")) {
-           $uploadstatus = "<b><font color=red>The file format must be a .zip file, please try again! </font></b>";
-           $uploadstatus.= "<br><br><b>Detected file format: " . $_FILES['uploadedfile']['type'] . "</b>";
-           $this->t->set_var('uploadstatus',$uploadstatus);
-           $this->t->pfp('uploadhandle','upload',True);
-         } else {
-           $uploadstatus = "<b><font color=red> There was an error (" . $_FILES['uploadedfile']['error'];
-           $uploadstatus.= ") uploading the file, please try again! </font></b>";
-           $this->t->set_var('uploadstatus',$uploadstatus);
-           $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'];
-            $indiv = $entry['indiv'];
-            $name = $entry['name'];
-            $district = $entry['district'];
-            $president = $entry['president'];
-            $counselor = $entry['counselor'];
-            $secretary = $entry['secretary'];
-            $eqpresidency = $entry['eqpresidency'];
-            // Set the individual id to 0 for EQ Presidency tagged entry
-            if($eqpresidency == 1) { $indiv="0"; }
-            // Re-look up the individual name for the ID if we aren't an EQ Presidency tagged entry
-            else { $name = $indiv2name[$indiv]; }
-            //print "id=$id indiv=$indiv name=$name email=$email district=$district president=$president ";
-            //print "counselor=$counselor secretary=$secretary eqpres=$eqpresidency<br>";
-
-            if(($indiv > 0) || ($name != "")) {
-              if($id < $this->max_presidency_members) {
-                //print "Updating Existing Entry<br>";
-                $this->db2->query("UPDATE 3rd_presidency set" .
-                                  " indiv=" . $indiv . 
-                                  " ,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 3rd_presidency (presidency,indiv,district,name,"
-                                  . "email,president,counselor,secretary,eqpres,valid) "
-                                  . "VALUES (NULL,'" . $indiv . "','" . $district . "','"
-                                  . $name . "','" . $email . "','" . $president  . "','"
-                                  . $counselor . "','" . $secretary . "','" . $eqpres  . "','1'"
-                                  .")",__LINE__,__FILE__);
-              }
-            } else {
-              //print "Ignoring Blank Entry<br>";
-            }
-          }
-
-         // Now update the 3rd_district table appropriately
-         
-         // Delete all the previous district entries from the table
-         $this->db->query("DELETE from 3rd_district where valid=1",__LINE__,__FILE__);
-         $this->db->query("DELETE from 3rd_district where valid=0",__LINE__,__FILE__);
-
-         // Always add a "District 0" assigned to the High Priests Group
-         $district = 0;
-         $name = "High Priests";
-         $indiv = 0;
-         $valid = 0;
-         $this->db2->query("INSERT INTO 3rd_district (district,name,supervisor,valid) "
-                           . "VALUES ('" . $district . "','" . $name . "','"
-                           . $indiv . "','" . $valid . "'"
-                           .")",__LINE__,__FILE__);
-         
-         
-         // Requery the 3rd_presidency table
-         $sql = "SELECT * FROM 3rd_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');
-             $indiv = $this->db->f('indiv');
-             $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 3rd_district (district,name,supervisor,valid) "
-                                 . "VALUES ('" . $district . "','" . $name . "','"
-                                 . $indiv . "','" . $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 3rd_presidency where valid=1";
-      $this->db->query($sql,__LINE__,__FILE__);
-      $table_data = "";
-      $header_row = "<th>Individual</th><th>Email</th><th>District</th><th>President</th><th>Counselor</th><th>Secretary</th><th>Presidency</th>";
-      while ($this->db->next_record())
-       {
-         // Extract the data for each presidency record
-         $id = $this->db->f('presidency');
-         $indiv = $this->db->f('indiv');
-         $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.'">';
-         
-         // individual
-         if($eqpresidency == 0) { 
-           $table_data.= '<td align=center><select name="eqpres['.$id.'][indiv]">';
-           $table_data.= '<option value=0></option>';  
-           for ($j=0; $j < count($indiv_id); $j++) {
-             $tmp_id = $indiv_id[$j];
-             $name = $indiv_name[$j];
-             if($indiv_id[$j] == $indiv) { $indivname = $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="'.$indivname.'">';
-         } else {
-           $table_data.= '<td align=left><input type=text size="20" name="eqpresname" value="Presidency"></td>';
-           $table_data.= '<input type=hidden name="eqpres['.$id.'][name]" value="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>';
-
-         // 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 individual 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.'">';
-      // individual
-      $table_data.= '<td align=center><select name="eqpres['.$id.'][indiv]">';
-      $table_data.= '<option value=0></option>';  
-      for ($j=0; $j < count($indiv_id); $j++) {
-       $tmp_id = $indiv_id[$j];
-       $name = $indiv_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>';
-      // 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();   
-    }
-
-  function email_appt($appointment)
-    {
-      //print "Emailing notification of appointment: $appointment <br>";
-
-      $sql = "SELECT * FROM 3rd_appointment where appointment='$appointment'";
-      $this->db->query($sql,__LINE__,__FILE__);
-       
-      while ($this->db->next_record())
-       {
-         $appointment = $this->db->f('appointment');
-         $presidency = $this->db->f('presidency');
-         $location = $this->db->f('location');
-         $interviewer = "";
-         $email = "";
-         $indiv = $this->db->f('indiv');
-         $indiv_name = "";
-         $family = $this->db->f('family');
-         $family_name = "";
-         $appt_name = "";
-         $phone = "";
-         $uid = $this->db->f('uid');
-                   
-         // Extract the year, month, day, hours, minutes, seconds from the appointment time
-         $appt_date = $this->db->f('date');
-         $date_array = explode("-",$appt_date);
-         $year = $date_array[0]; $month = $date_array[1]; $day = $date_array[2];
-         $appt_time = $this->db->f('time');
-         $time_array = explode(":",$appt_time);
-         $hour = $time_array[0]; $minute = $time_array[1]; $seconds = $time_array[2];
-
-         // Format the appointment time into an iCal UTC equivalent
-         $dtstamp = gmdate("Ymd"."\T"."His"."\Z");
-         $dtstart = gmdate("Ymd"."\T"."His"."\Z", mktime($hour,$minute,$seconds,$month,$day,$year));
-         $dtstartstr = date("l, F d, o g:i A", mktime($hour,$minute,$seconds,$month,$day,$year));
-         
-         $sql = "SELECT * FROM 3rd_presidency where presidency='$presidency'";
-         $this->db2->query($sql,__LINE__,__FILE__);
-         if($this->db2->next_record()) {
-           $email = $this->db2->f('email');
-           $interviewer = $this->db2->f('name');
-         }
-
-         // Set the email address of the interviewer
-         $from = $email;
-
-         if($indiv > 0) { 
-           $sql = "SELECT * FROM 3rd_indiv where indiv='$indiv'";
-           $this->db2->query($sql,__LINE__,__FILE__);
-           if($this->db2->next_record()) {
-             $indiv_name = $this->db2->f('name');
-             $phone = $this->db2->f('phone');
-             $appt_name = $indiv_name . " Interview";
-             $duration = $this->default_ppi_appt_duration * 60;
-           }
-         }
-
-         if($family > 0) { 
-           $sql = "SELECT * FROM 3rd_family where family='$family'";
-           $this->db2->query($sql,__LINE__,__FILE__);
-           if($this->db2->next_record()) {
-             $family_name = $this->db2->f('name');
-             $phone = $this->db2->f('phone');
-             $indiv_id = $this->db2->f('indiv_id');
-             $appt_name = $family_name . " Family Visit";
-             $sql = "SELECT * FROM 3rd_indiv where indiv='$indiv_id'";
-             $this->db3->query($sql,__LINE__,__FILE__);
-             if($this->db3->next_record()) {
-               $phone = $this->db3->f('phone');
-             }
-             $duration = $this->default_visit_appt_duration * 60;
-           }
-         }
-
-         $dtend = gmdate("Ymd"."\T"."His"."\Z", mktime($hour,$minute,$seconds+$duration,$month,$day,$year));
-         $dtendstr = date("g:i A", mktime($hour,$minute,$seconds+$duration,$month,$day,$year));
-         $date = $dtstartstr . "-" . $dtendstr;
-         $description = "$appt_name : $phone";
-         
-         if(($uid == 0) && ($appt_name != "")) { 
-           // Create a new calendar item for this appointment, since this must be the first time we
-           // are sending it out.
-           print "Sent new appointment to " . $interviewer . " at " . $email . " for " . $appt_name . "<br>";
-           $uid = rand() . rand(); // Generate a random identifier for this appointment
-           $subject = "Created: $appt_name";
-           
-           $this->db->query("UPDATE 3rd_appointment set" .
-                            " uid=" . $uid . 
-                            " WHERE appointment=" . $appointment,__LINE__,__FILE__);
-
-           $action = "PUBLISH";
-           $this->send_ical_appt($action, $email, $from, $subject, $dtstamp, $dtstart,
-                                 $dtend, $date, $location, $appt_name, $description, $uid);
-           
-         } else if(($uid != 0) && ($appt_name == "")) {
-           // Remove the calendar item for this appointment since it has already been sent
-           // and there is no name we have changed it to.
-           print "Sent deleted appointment to " . $interviewer . " at " . $email . " for " . $appt_date . " " . $appt_time . "<br>";
-           $subject = "Canceled: $appt_date $appt_time";
-           
-           $this->db->query("UPDATE 3rd_appointment set" .
-                            " uid=0" . 
-                            " WHERE appointment=" . $appointment,__LINE__,__FILE__);
-           
-           $action = "CANCEL";
-           $this->send_ical_appt($action, $email, $from, $subject, $dtstamp, $dtstart,
-                                 $dtend, $date, $location, $subject, $subject, $uid);
-           
-         } else if($uid != 0) {
-           // Update the existing appointment since we have changed it
-           print "Sent updated appointment to " . $interviewer . " at " . $email . " for " . $appt_name . "<br>";
-
-           $subject = "Canceled: $appt_date $appt_time";
-           $action = "CANCEL";
-           $this->send_ical_appt($action, $email, $from, $subject, $dtstamp, $dtstart,
-                                 $dtend, $date, $location, $subject, $subject, $uid);
-           
-           $uid = rand() . rand(); // Generate a random identifier for this appointment
-           $this->db->query("UPDATE 3rd_appointment set" .
-                            " uid=" . $uid .
-                            " WHERE appointment=" . $appointment,__LINE__,__FILE__);
-           
-           $subject = "Updated: $appt_name";       
-           $action = "PUBLISH";
-           $this->send_ical_appt($action, $email, $from, $subject, $dtstamp, $dtstart,
-                                 $dtend, $date, $location, $appt_name, $description, $uid);
-         }
-         
-       }
-         
-      return true;
-    }
-
-  function send_ical_appt($action, $to, $from, $subject, $dtstamp, $dtstart, $dtend, $date, $location, $summary, $description, $uid)
-    {
-      // Initialize our local variables
-      $boundary = "=MIME_APPOINTMENT_BOUNDARY";
-      $message = "";
-      $headers = "";
-
-      // Form the headers for the email message
-      $headers.="X-Mailer: PHP/" . phpversion() . "\n";
-      $headers.="Mime-Version: 1.0\n";
-      $headers.="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
-      $headers.="Content-Disposition: inline\n";
-      $headers.="Reply-To: $from\n";
-      $headers.="From: $from\n";
-
-      // Print the plaintext version of the appointment
-      $message.="--$boundary\n";
-      $message.="Content-Type: text/plain; charset=us-ascii\n";
-      $message.="Content-Disposition: inline\n";
-      $message.="\n";
-      $message.="What: $description\n";
-      $message.="When: $date\n";
-      $message.="Where: $location\n";
-      $message.="\n";
-      
-      // Print the .ics attachment version of the appointment
-      $message.="--$boundary\n";
-      $message.="Content-Type: text/calendar; charset=us-ascii\n";
-      $message.="Content-Disposition: attachment; filename=\"appointment.ics\"\n";
-      $message.="\n";
-      $message.="BEGIN:VCALENDAR" . "\n";
-      $message.="VERSION:2.0" . "\n";
-      $message.="PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN" . "\n";
-      $message.="METHOD:$action" . "\n";
-      $message.="BEGIN:VEVENT" . "\n";
-      $message.="ORGANIZER:MAILTO:$from". "\n";
-      $message.="DTSTAMP:$dtstamp" . "\n";
-      $message.="DTSTART:$dtstart" . "\n";
-      $message.="DTEND:$dtend" . "\n";
-      $message.="SUMMARY:$summary" . "\n";
-      $message.="DESCRIPTION:$description" . "\n";
-      $message.="LOCATION:$location" . "\n";
-      $message.="UID:$uid" ."\n";
-      $message.="TRANSP:OPAQUE" . "\n";
-      $message.="SEQUENCE:0" . "\n";
-      $message.="CLASS:PUBLIC" . "\n";
-      $message.="END:VEVENT" . "\n";
-      $message.="END:VCALENDAR" . "\n";
-
-      // Complete the message
-      $message.="--$boundary\n";
-
-      // Send the message
-      mail($to, $subject, $message, $headers);
-      
-    }
-
-  function get_time_selection_form($hour, $minute, $pm, $presidency, $appointment)
-    {
-      $form_data = "";
-      $blank = 0;
-      
-      if($hour == 0) { $blank = 1; }
-
-      if($this->time_drop_down_lists == 1) {
-       // Create drop down lists to get the time
-       $form_data.= '<select name=sched['.$presidency.']['.$appointment.'][hour]>';
-       if($blank == 1) { $form_data.= '<option value=""></option>'; }
-       foreach(range(1,12) as $num) {
-         if($hour == $num) { $selected = 'selected="selected"'; } else { $selected = ''; }
-         $form_data.= '<option value='.$num.' '.$selected.'>'.$num.'</option>';
-       }
-       $form_data.= '</select>';
-       $form_data.= '&nbsp;:&nbsp;';
-       $form_data.= '<select name=sched['.$presidency.']['.$appointment.'][minute]>';
-       if($blank == 1) { $form_data.= '<option value=""></option>'; }
-       $num = 0;
-       while($num < 60) {
-         if($num < 10) { $num = "0" . "$num"; }
-         if($minute == $num) { $selected = 'selected="selected"'; } else { $selected = ''; }
-         if($blank == 1) { $selected = ""; }
-         $form_data.= '<option value='.$num.' '.$selected.'>'.$num.'</option>';
-         $num = $num + $this->time_drop_down_list_inc;
-       }
-       $form_data.= '</select>';
-      } else {
-       // Use free form text fields to get the time
-       if($blank == 1) { $hour = ""; $minute = ""; $ampm = ""; }
-       $form_data.= '<input type=text size=2 name=sched['.$presidency.']['.$appointment.'][hour] value='.$hour.'>';
-       $form_data.= ':';
-       $form_data.= '<input type=text size=2 name=sched['.$presidency.']['.$appointment.'][minute] value='.$minute.'>';
-       $form_data.= '&nbsp;';
-      }
-      // Always use a drop-down select form for am/pm
-      $form_data.= '<select name=sched['.$presidency.']['.$appointment.'][pm]>';
-      if($blank == 0) { 
-       if($pm == 0) { $form_data.= '<option value=0 selected>am</option>'; $form_data.= '<option value=1>pm</option>'; }
-       if($pm == 1) { $form_data.= '<option value=0>am</option>'; $form_data.= '<option value=1 selected>pm</option>'; }
-      } else {
-       $form_data.= '<option value=""></option>';
-       $form_data.= '<option value=0>am</option>';
-       $form_data.= '<option value=1>pm</option>';
-      }
-      $form_data.= '</select>';
-      
-      return $form_data;
-    }
-}
-
-?>
diff --git a/inc/class.tc.inc.php b/inc/class.tc.inc.php
new file mode 100644 (file)
index 0000000..c6a32d3
--- /dev/null
@@ -0,0 +1,4633 @@
+<?php
+  /**************************************************************************\
+  * Application: phpGroupWare - 3rd Counselor                                *
+  * Framework: http://www.phpgroupware.org                                   *
+  * Author: Alan J. Pippin (apippin@pippins.net)                             *
+  * -----------------------------------------------                          *
+  *  This program is free software; you can redistribute it and/or modify it *
+  *  under the terms of the GNU General Public License as published by the   *
+  *  Free Software Foundation; either version 2 of the License, or (at your  *
+  *  option) any later version.                                              *
+  \**************************************************************************/
+      /* $Id: class.tc.inc.php,v 1.1.1.1 2005/07/20 07:40:32 ajp Exp $ */
+
+class tc 
+{
+  var $db;
+  var $db2;
+  var $t;
+  var $nextmatchs;
+  var $grants;
+  var $jscal;
+  var $cal_options;  
+  var $default_ht_num_months;
+  var $default_ppi_num_months;
+  var $default_ppi_num_years;
+  var $default_int_num_quarters;
+  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
+    (
+     'ht_view'    => True,
+     'ht_update'  => True,
+     'act_list'          => True,
+     'act_view'   => True,
+     'act_update' => True,
+     'par_view'   => True,
+     'ppi_view'   => True,
+     'ppi_update' => True,
+     'ppi_sched'  => True,
+     'int_view'   => True,
+     'int_update' => True,
+     'int_sched'  => True,
+     'vis_sched'  => True,
+     'vis_view'   => True,
+     'vis_update' => True,
+     'att_view'   => True,
+     'att_update' => True,
+     'dir_view'   => True,
+     'org_view'   => True,
+     'schedule'   => True,
+     'admin'      => True,
+     'email'      => True,
+     'email_appt' => True,
+     'willing_view'   => True,
+     'willing_update' => True,
+     'send_ical_appt' => True,
+     'assign_view'    => True,
+     'assign_update'  => True,
+     'get_time_selection_form' => True,
+     );
+  function tc()
+    {
+      if(file_exists("setup/tc_config.local")) {
+       include("setup/tc_config.local");
+      } else {
+       include("setup/tc_config");
+      }
+      
+      $this->script_path = "$this->application_path"."/bin";
+      $this->max_presidency_members = 99;
+      $this->max_appointments = 32768;
+      
+      $this->db                = $GLOBALS['phpgw']->db;
+      $this->db2       = $this->db;
+      $this->db3       = $this->db;
+      $this->nextmatchs = CreateObject('phpgwapi.nextmatchs');
+      $this->t          = $GLOBALS['phpgw']->template;
+      $this->account    = $GLOBALS['phpgw_info']['user']['account_id'];
+      $this->grants     = $GLOBALS['phpgw']->acl->get_grants('tc');
+      $this->grants[$this->account] = PHPGW_ACL_READ + PHPGW_ACL_ADD + PHPGW_ACL_EDIT + PHPGW_ACL_DELETE;
+       
+      $this->jscal = CreateObject('tc.jscalendar');   // before phpgw_header() !!!
+      $this->cal_options = 'daFormat    : "%Y-%m-%d",
+                                ifFormat    : "%Y-%m-%d",
+                                mondayFirst : false,
+                                weekNumbers : false';
+       
+      $GLOBALS['phpgw_info']['flags']['app_header'] = 'The 3rd Counselor';
+      $GLOBALS['phpgw']->common->phpgw_header();
+
+      $this->current_day = `date '+%d'`;
+      $this->current_day = $this->current_day-0; // Make it numeric
+      $this->current_month = `date '+%m'`;
+      $this->current_month = $this->current_month-0; // Make it numeric
+      $this->current_year = `date '+%Y'`;
+      $this->current_year = $this->current_year-0; // Make it numeric
+
+      echo parse_navbar();
+      $this->display_app_header();     
+    }
+  
+  function save_sessiondata()
+    {
+      
+    }
+
+  function display_app_header()
+    {
+      $this->t->set_file(array('tc_header' => 'header.tpl'));
+      
+      if (isset($phpgw_info['user']['preferences']['tc']['tc_font']))
+       {
+         $font = $phpgw_info['user']['preferences']['tc']['tc_font'];
+       }
+      else
+       {
+         $font = 'Arial';
+       }
+      
+      $this->t->set_var('bg_color',$phpgw_info['theme']['th_bg']);
+      $this->t->set_var('font',$font);
+      $link_data['menuaction'] = 'tc.tc.ht_view';
+      $this->t->set_var('link_hometeaching',$GLOBALS['phpgw']->link('/tc/index.php',$link_data));
+      $this->t->set_var('lang_hometeaching','HomeTeaching');
+      $link_data['menuaction'] = 'tc.tc.act_list';
+      $this->t->set_var('link_activity',$GLOBALS['phpgw']->link('/tc/index.php',$link_data));
+      $this->t->set_var('lang_activity','Activities');
+      $link_data['menuaction'] = 'tc.tc.willing_view';
+      $this->t->set_var('link_willing',$GLOBALS['phpgw']->link('/tc/index.php',$link_data));
+      $this->t->set_var('lang_willing','Willingness');
+      $link_data['menuaction'] = 'tc.tc.assign_view';
+      $this->t->set_var('link_assignment',$GLOBALS['phpgw']->link('/tc/index.php',$link_data));
+      $this->t->set_var('lang_assignment','Assignments');
+      $link_data['menuaction'] = 'tc.tc.par_view';
+      $this->t->set_var('link_participation',$GLOBALS['phpgw']->link('/tc/index.php',$link_data));
+      $this->t->set_var('lang_participation','Participation');
+      $link_data['menuaction'] = 'tc.tc.ppi_view';
+      $this->t->set_var('link_ppi',$GLOBALS['phpgw']->link('/tc/index.php',$link_data));
+      $this->t->set_var('lang_ppi','PPIs');
+      $link_data['menuaction'] = 'tc.tc.int_view';
+      $this->t->set_var('link_int',$GLOBALS['phpgw']->link('/tc/index.php',$link_data));
+      $this->t->set_var('lang_int','Interviews');
+      $link_data['menuaction'] = 'tc.tc.vis_view';
+      $this->t->set_var('link_visit',$GLOBALS['phpgw']->link('/tc/index.php',$link_data));
+      $this->t->set_var('lang_visit','Visits');
+      $link_data['menuaction'] = 'tc.tc.att_view';     
+      $this->t->set_var('link_attendance',$GLOBALS['phpgw']->link('/tc/index.php',$link_data));
+      $this->t->set_var('lang_attendance','Attendance');
+      $link_data['menuaction'] = 'tc.tc.dir_view';     
+      $this->t->set_var('link_dir',$GLOBALS['phpgw']->link('/tc/index.php',$link_data));
+      $this->t->set_var('lang_dir','Directory');
+      $link_data['menuaction'] = 'tc.tc.org_view';     
+      $this->t->set_var('link_org',$GLOBALS['phpgw']->link('/tc/index.php',$link_data));
+      $this->t->set_var('lang_org','Callings');
+      $link_data['menuaction'] = 'tc.tc.admin';        
+      $this->t->set_var('link_admin',$GLOBALS['phpgw']->link('/tc/index.php',$link_data));
+      $this->t->set_var('lang_admin','Admin');
+      $link_data['menuaction'] = 'tc.tc.schedule';     
+      $this->t->set_var('link_schedule',$GLOBALS['phpgw']->link('/tc/index.php',$link_data));
+      $this->t->set_var('lang_schedule','Scheduling');
+      $link_data['menuaction'] = 'tc.tc.email';        
+      $this->t->set_var('link_email',$GLOBALS['phpgw']->link('/tc/index.php',$link_data));
+      $this->t->set_var('lang_email','Email');
+               
+      $this->t->pparse('out','tc_header');
+    }
+
+  function ht_view()
+    {
+      $this->t->set_file(array('ht_view_t' => 'ht_view.tpl'));
+      $this->t->set_block('ht_view_t','district_list','list');
+   
+      $this->t->set_var('linkurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.ht_view'));
+      $num_months = get_var('num_months',array('GET','POST'));
+      if($num_months == '') { $num_months = $this->default_ht_num_months; }
+      $this->t->set_var('num_months',$num_months);
+      $this->t->set_var('lang_filter','Filter');
+      if($num_months == 1) { $this->t->set_var('lang_num_months','Month of History'); }
+      else {  $this->t->set_var('lang_num_months','Months of History'); }
+      
+      $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.ht_view'));
+      $this->t->set_var('title','Hometeaching'); 
+      
+      $sql = "SELECT * FROM tc_district where valid=1 ORDER BY district ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      while ($this->db->next_record())
+       {
+         $districts[$i]['district'] = $this->db->f('district');
+         $districts[$i]['name'] = $this->db->f('name');
+         $districts[$i]['supervisor'] = $this->db->f('supervisor');
+         $i++;
+       }
+
+      $sql = "SELECT * FROM tc_indiv where valid=1 ORDER BY indiv ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      while ($this->db->next_record())
+       {
+         $indiv_id[$i] = $this->db->f('indiv');
+         $indiv_name[$i] = $this->db->f('name');
+         $indiv_phone[$indiv_id[$i]] = $this->db->f('phone');
+         $i++;
+       }
+      array_multisort($indiv_name, $indiv_id);
+
+      // Make an array mapping indiv_ids to indiv_names
+      for($i=0; $i < count($indiv_id); $i++) {
+          $id = $indiv_id[$i];
+          $indivs[$id] = $indiv_name[$i];
+      }      
+
+      $sql = "SELECT * FROM tc_aaronic where valid=1 ORDER BY aaronic ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      while ($this->db->next_record())
+       {
+         $aaronic_id = $this->db->f('aaronic');
+         $aaronic[$aaronic_id]['name'] = $this->db->f('name');
+         $aaronic[$aaronic_id]['phone'] = $this->db->f('phone');
+       }
+
+      $this->nextmatchs->template_alternate_row_color(&$this->t);
+      for($m=$num_months; $m >= 0; $m--) { $total_families[$m]=0; }
+      for ($i=0; $i < count($districts); $i++) {
+       $this->t->set_var('district_number',$districts[$i]['district']);
+       $this->t->set_var('district_name',$districts[$i]['name']);      
+       $supervisor = $districts[$i]['supervisor'];
+               
+       // Select all the unique companionship numbers for this district
+       $sql = "SELECT distinct companionship FROM tc_companionship where valid=1 and district=". $districts[$i]['district'];
+       $this->db->query($sql,__LINE__,__FILE__);
+       $j=0; $unique_companionships = '';
+       while ($this->db->next_record())
+         {
+           $unique_companionships[$j]['companionship'] = $this->db->f('companionship');
+           $j++;
+         }
+
+       $comp_width=450; $visit_width=25; $table_width=$comp_width + $num_months*$visit_width;
+       $table_data=""; $num_companionships = 0;
+       for($m=$num_months; $m >= 0; $m--) { $visits[$m]=0; $num_families[$m]=0; }
+       for ($j=0; $j < count($unique_companionships); $j++) {
+         $companion_table_entry = "";
+         // Select all the companions in each companionship
+         $sql = "SELECT * FROM tc_companionship where valid=1 and ".
+                "companionship=". $unique_companionships[$j]['companionship'];
+         $this->db->query($sql,__LINE__,__FILE__);
+
+         while ($this->db->next_record())
+           {
+             // Get this companions information
+             if($companion_table_entry != "") { $companion_table_entry .= "<td>&nbsp;/&nbsp;</td>"; }
+             $companionship = $this->db->f('companionship');
+             $indiv_id = $this->db->f('indiv');
+             $aaronic_id = $this->db->f('aaronic');
+             if($indiv_id) {
+               $name = $indivs[$indiv_id];
+               $phone = $indiv_phone[$indiv_id];
+             }
+             else if($aaronic_id) {
+               $name = $aaronic[$aaronic_id]['name'];
+               $phone = $aaronic[$aaronic_id]['phone'];                
+             }
+             $companion_table_entry .= "<td title=\"$phone\"><b>$name</b></td>";
+           }
+         $table_data.= "<tr bgcolor=#d3dce3><td colspan=20><table><tr>$companion_table_entry</tr></table><hr></td></tr>";
+         
+         // Get the names of the families assigned this home teaching companionship
+         $sql = "SELECT * from tc_family where valid=1 AND companionship=".$unique_companionships[$j]['companionship'];
+         $sql = $sql . " ORDER BY name ASC";
+         $this->db->query($sql,__LINE__,__FILE__);
+         $k=0;
+         while ($this->db->next_record())
+           {
+             $family_name = $this->db->f('name');
+             $family_id = $this->db->f('family');
+             $this->nextmatchs->template_alternate_row_color(&$this->t);
+             $table_data.="<tr bgcolor=". $this->t->get_var('tr_color') ."><td>$family_name Family</td>";
+             // Find out how many times Visits were performed by this companionship
+             // in the past $num_months for this Family
+             $header_row="<th width=$comp_width><font size=-2>Families</th>";
+             for($m=$num_months; $m >= 0; $m--) {
+               $month = $this->current_month - $m;
+               $year = $this->current_year;
+               if($month <= 0) { $remainder = $month; $month = 12 + $remainder; $year=$year-1; }
+               if($month < 10) { $month = "0"."$month"; }
+               $month_start = "$year"."-"."$month"."-"."01";
+               $month_end = "$year"."-"."$month"."-"."31";
+               $month = "$month"."/"."$year";
+               
+               //print "m: $m month: $month year: $year month_start: $month_start month_end: $month_end<br>";
+               // Add this to the query to filter on only visits made by this companionship:
+               // " AND companionship=" . $unique_companionships[$j]['companionship'].
+
+               // First check to see if the currently assigned companionship has visited them
+               $sql = "SELECT * FROM tc_visit WHERE date >= '$month_start' AND date <= '$month_end' ".
+                  " AND companionship=".$unique_companionships[$j]['companionship'].
+                  " AND family=". $family_id;
+               $query_id = $this->db2->query($sql,__LINE__,__FILE__);
+               if($this->db2->num_rows($query_id) == 0) {
+                 // We did not find any visits made by the currently assigned companionship,
+                 // look for visits made by any other companionship other than 0. (0 == EQ Presidency Visit)
+                 $sql = "SELECT * FROM tc_visit WHERE date >= '$month_start' AND date <= '$month_end' ".
+                    " AND companionship!=0".
+                    " AND family=". $family_id;
+                 $query_id = $this->db2->query($sql,__LINE__,__FILE__);
+               }
+               $this->db2->query($sql,__LINE__,__FILE__);
+               $link_data['menuaction'] = 'tc.tc.ht_update';
+               $link_data['date'] = $month_start;
+               $link_data['month_start'] = $month_start;
+               $link_data['month_end'] = $month_end;
+               $link_data['month'] = $month;
+               $link_data['district'] = $districts[$i]['district'];
+               $link_data['district_name'] = $districts[$i]['name'];
+               $link_data['action'] = 'view';
+               $link = $GLOBALS['phpgw']->link('/tc/index.php',$link_data);
+               $header_row .= "<th width=$visit_width><font size=-2><a href=$link>$month</a></th>";
+               if(!$total_visits[$m]) { $total_visits[$m] = 0; }
+               if($this->db2->next_record()) {
+                 if($this->db2->f('visited') == 'y') {
+                   $visits[$m]++; $total_visits[$m]++;
+                   $num_families[$m]++; $total_families[$m]++;
+                   $table_data .= '<td align=center><a href="'.$link.'"><img src="images/checkmark.gif"></a></td>';
+                 }
+                 else if($this->db2->f('visited') == 'n') {
+                   $num_families[$m]++; $total_families[$m]++;
+                   $table_data .= '<td align=center><a href="'.$link.'"><img src="images/x.gif"></a></td>';
+                 }
+                 else {
+                   //$visits[$m]++; $total_visits[$m]++;
+                   $table_data .= "<td>&nbsp;</td>";
+                 }
+               }
+               else {
+                 //$visits[$m]++; $total_visits[$m]++;
+                 $table_data .= "<td>&nbsp;</td>";
+               }
+             }
+             $table_data .= "</tr>"; 
+             $k++;
+           }
+         $table_data .= "<tr><td colspan=20></td></tr>";
+       }
+       $table_data .= "<tr><td colspan=20><hr></td></tr>";
+       $stat_data = "<tr><td><b><font size=-2>Families Hometaught:<br>Hometeaching Percentage:</font></b></td>";
+
+       for($m=$num_months; $m >=0; $m--) {
+         if($num_families[$m] > 0) { 
+           $percent = ceil(($visits[$m] / $num_families[$m])*100);
+         } else {
+           $percent = 0;
+         }
+         $stat_data .= "<td align=center><font size=-2><b>$visits[$m] / $num_families[$m]<br>$percent%</font></b></td>";
+       }
+       $stat_data .= "</tr>";
+
+       $this->t->set_var('table_width',$table_width);
+       $this->t->set_var('header_row',$header_row);
+       $this->t->set_var('table_data',$table_data);
+       $this->t->set_var('stat_data',$stat_data);
+       $this->t->fp('list','district_list',True);
+      }
+
+      $totals = "<tr><td><b><font size=-2>Total Families Hometaught:<br>Total Hometeaching Percentage:</font></b></td>";
+      for($m=$num_months; $m >=0; $m--) {
+       if($total_families[$m] > 0) { 
+         $percent = ceil(($total_visits[$m] / $total_families[$m])*100);
+       } else {
+         $percent = 0;
+       }
+       $totals .= "<td align=center><font size=-2><b>$total_visits[$m] / $total_families[$m]<br>$percent%</font></b></td>";
+      }
+      $totals .= "</tr>";
+      
+      $this->t->set_var('totals',$totals);
+      
+      $this->t->pfp('out','ht_view_t');
+      $this->save_sessiondata();
+    }
+      
+
+  function ht_update()
+    {
+      $this->t->set_file(array('ht_update_t' => 'ht_update.tpl'));
+      $this->t->set_block('ht_update_t','district_list','list');
+      $this->t->set_block('ht_update_t','save','savehandle');
+      
+      $district = get_var('district',array('GET','POST'));
+      $district_name = get_var('district_name',array('GET','POST'));
+      $date = get_var('date',array('GET','POST'));
+      $month = get_var('month',array('GET','POST'));
+      $month_start = get_var('month_start',array('GET','POST'));
+      $month_end = get_var('month_end',array('GET','POST'));
+      $action = get_var('action',array('GET','POST'));
+      
+      $this->t->set_var('done_action',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.ht_view'));
+      $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.ht_update&action=save'));
+      $this->t->set_var('lang_done','Cancel');
+      $this->t->set_var('district_name',$district_name);
+      $this->t->set_var('district_number',$district);
+      $this->t->set_var('title','Hometeaching Update ' . $month);
+      $this->t->set_var('date',$date);
+      
+      if($action == 'save')
+       {
+         // Get a list of all the companionships in this district
+         $sql = "SELECT distinct companionship FROM tc_companionship where valid=1 and district=". $district;
+         $this->db->query($sql,__LINE__,__FILE__);
+         $j=0; $unique_companionships = '';
+         while ($this->db->next_record())
+           {
+             $unique_companionships[$j]['companionship'] = $this->db->f('companionship');
+             $j++;
+           }
+         for ($j=0; $j < count($unique_companionships); $j++)
+           {
+             //$comp=$unique_companionships[$j]['companionship'];
+             //print "deleting from tc_visit where companionship=$comp and date=$date and district=$district<br>";
+             // Delete all the visits that have taken place for all families for this companionsthip for this month
+             $this->db->query("DELETE from tc_visit where companionship=" . $unique_companionships[$j]['companionship'] .
+                              " AND " . "date='" . $date . "'",__LINE__,__FILE__);
+           }
+
+         // Now, add the visits that are checked for this month
+         $new_data = get_var('family_visited',array('POST'));
+         foreach ($new_data as $family)
+          {
+            foreach ($family as $data)
+              {
+                //print "family_visited: $data <br>";
+                $data_array = explode("/",$data);
+                $family_id = $data_array[0];
+                $companionship = $data_array[1];
+                $date = $data_array[2];
+                $visited = $data_array[3];
+                if($visited == "") { $visited = $data_array[4]; }
+                //print "family_id: $family_id companionship: $companionship date: $date visited: $visited<br>";
+                $this->db->query("INSERT INTO tc_visit (family,companionship,date,notes,visited) "
+                                 . "VALUES (" . $family_id .",". $companionship .",'". $date ."','','". $visited ."')",__LINE__,__FILE__);
+              }
+          }
+         $this->ht_view();
+         return false;
+       }
+      
+      $sql = "SELECT * FROM tc_indiv where valid=1 ORDER BY indiv ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      while ($this->db->next_record())
+       {
+         $indiv_id[$i] = $this->db->f('indiv');
+         $indiv_name[$i] = $this->db->f('name');
+         $indiv_phone[$indiv_id[$i]] = $this->db->f('phone');
+         $i++;
+       }
+      array_multisort($indiv_name, $indiv_id);
+
+      // Make an array mapping indiv_ids to indiv_names
+      for($i=0; $i < count($indiv_id); $i++) {
+          $id = $indiv_id[$i];
+          $indivs[$id] = $indiv_name[$i];
+      }      
+
+      $sql = "SELECT * FROM tc_aaronic where valid=1 ORDER BY aaronic ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      while ($this->db->next_record())
+       {
+         $aaronic_id = $this->db->f('aaronic');
+         $aaronic[$aaronic_id]['name'] = $this->db->f('name');
+         $aaronic[$aaronic_id]['phone'] = $this->db->f('phone');
+       }
+      
+      // Select all the unique companionship numbers for this district
+      $sql = "SELECT distinct companionship FROM tc_companionship where valid=1 and district=". $district;
+      $this->db->query($sql,__LINE__,__FILE__);
+      $j=0; $unique_companionships = '';
+      while ($this->db->next_record())
+       {
+         $unique_companionships[$j]['companionship'] = $this->db->f('companionship');
+         $j++;
+       }
+      
+      $comp_width=300; $visit_width=25; $table_width=$comp_width + $visit_width;
+      $table_data=""; $num_companionships = 0; $num_families = 0; $visits=0;
+      for ($j=0; $j < count($unique_companionships); $j++) {
+       $companion_table_entry = "";
+       // Select all the companions in each companionship
+       $sql = "SELECT * FROM tc_companionship where valid=1 and ".
+              "companionship=". $unique_companionships[$j]['companionship'];
+       $this->db->query($sql,__LINE__,__FILE__);
+       
+       while ($this->db->next_record())
+         {
+           // Get this companions information
+           if($companion_table_entry != "") { $companion_table_entry .= "<td>&nbsp;/&nbsp;</td>"; }
+           $companionship = $this->db->f('companionship');
+           $indiv_id = $this->db->f('indiv');
+           $aaronic_id = $this->db->f('aaronic');
+           if($indiv_id) {
+             $name = $indivs[$indiv_id];
+             $phone = $indiv_phone[$indiv_id];
+           }
+           else if($aaronic_id) {
+             $name = $aaronic[$aaronic_id]['name'];
+             $phone = $aaronic[$aaronic_id]['phone'];
+           }
+           $companion_table_entry .= "<td title=\"$phone\"><b>$name</b></td>";
+         }
+       $table_data.= "<tr bgcolor=#d3dce3><td colspan=20><table><tr>$companion_table_entry</tr></table><hr></td></tr>";
+       
+       // Get the names of the families assigned this home teaching companionship
+       $sql = "SELECT * from tc_family where valid=1 AND companionship=".$unique_companionships[$j]['companionship'];
+       $sql = $sql . " ORDER BY name ASC";
+       $this->db->query($sql,__LINE__,__FILE__);
+       while ($this->db->next_record())
+         {
+           $family_name = $this->db->f('name');
+           $family_id = $this->db->f('family');
+           $this->nextmatchs->template_alternate_row_color(&$this->t);
+           $table_data.="<tr bgcolor=". $this->t->get_var('tr_color') ."><td>$family_name Family</td>";
+           
+           $header_row="<th width=$comp_width><font size=-2>Families</th>";
+
+           // First check to see if the currently assigned companionship has visited them
+           $sql = "SELECT * FROM tc_visit WHERE date >= '$month_start' AND date <= '$month_end' ".
+                  " AND companionship=".$unique_companionships[$j]['companionship'].
+                  " AND family=". $family_id;
+           $query_id = $this->db2->query($sql,__LINE__,__FILE__);
+           if($this->db2->num_rows($query_id) == 0) {
+             // We did not find any visits made by the currently assigned companionship,
+             // look for visits made by any other companionship other than 0. (0 == EQ Presidency Visit)
+             $sql = "SELECT * FROM tc_visit WHERE date >= '$month_start' AND date <= '$month_end' ".
+                  " AND companionship!=0".
+                  " AND family=". $family_id;
+             $query_id = $this->db2->query($sql,__LINE__,__FILE__);
+           }
+           
+           $value = $family_id . "/" . $unique_companionships[$j]['companionship'] . "/" . $date;
+           $header_row .= "<th width=$visit_width><font size=-2><a href=$link>$month</a></th>";
+           if(!$total_visits) { $total_visits = 0; }
+           if($this->db2->next_record()) {
+             if($this->db2->f('visited') == 'y') {
+               $visits++; $total_visits++; $num_families++;
+               $table_data .= '<td width=100 align=center>';
+               $table_data .= '<input type="radio" name="family_visited['.$family_id.'][]" value="'.$value.'/y" checked>Y';
+               $table_data .= '<input type="radio" name="family_visited['.$family_id.'][]" value="'.$value.'/n">N';
+               $table_data .= '<input type="radio" name="family_visited['.$family_id.'][]" value="'.$value.'/"> ';
+               $table_data .= '</td>';
+             } else if($this->db2->f('visited') == 'n') {
+               $num_families++;
+               $table_data .= '<td width=100 align=center>';
+               $table_data .= '<input type="radio" name="family_visited['.$family_id.'][]" value="'.$value.'/y">Y';
+               $table_data .= '<input type="radio" name="family_visited['.$family_id.'][]" value="'.$value.'/n" checked>N';
+               $table_data .= '<input type="radio" name="family_visited['.$family_id.'][]" value="'.$value.'/">';
+               $table_data .= '</td>';
+             } else {
+               $table_data .= '<td width=100 align=center>';
+               $table_data .= '<input type="radio" name="family_visited['.$family_id.'][]" value="'.$value.'/y">Y';
+               $table_data .= '<input type="radio" name="family_visited['.$family_id.'][]" value="'.$value.'/n">N';
+               $table_data .= '<input type="radio" name="family_visited['.$family_id.'][]" value="'.$value.'/" checked> ';
+               $table_data .= '</td>';
+             }
+           }
+           else {
+             $value .= "/";
+             $table_data .= '<td width=100 align=center>';
+             $table_data .= '<input type="radio" name="family_visited['.$family_id.'][]" value="'.$value.'/y">Y';
+             $table_data .= '<input type="radio" name="family_visited['.$family_id.'][]" value="'.$value.'/n">N';
+             $table_data .= '<input type="radio" name="family_visited['.$family_id.'][]" value="'.$value.'/" checked> ';
+             $table_data .= '</td>';         
+           }
+         }
+       $table_data .= "</tr>"; 
+       $table_data .= "<tr><td colspan=20></td></tr>";
+      }
+      $table_data .= "<tr><td colspan=20><hr></td></tr>";
+      $stat_data = "<tr><td><b><font size=-2>Families Hometaught:<br>Hometeaching Percentage:</font></b></td>";
+      
+      $percent = ceil(($visits / $num_families)*100);
+      $stat_data .= "<td align=center><font size=-2><b>$visits / $num_families<br>$percent%</font></b></td>";
+      $stat_data .= "</tr>";
+      
+      $this->t->set_var('table_width',$table_width);
+      $this->t->set_var('header_row',$header_row);
+      $this->t->set_var('table_data',$table_data);
+      $this->t->set_var('stat_data',$stat_data);
+      $this->t->fp('list','district_list',True);
+
+      $this->t->set_var('lang_reset','Clear Form');
+      $this->t->set_var('lang_save','Save Changes');
+      $this->t->set_var('savehandle','');
+      
+      $this->t->pfp('out','ht_update_t');
+      $this->t->pfp('addhandle','save');
+      
+      $this->save_sessiondata();
+    }
+
+  function act_list()
+    {
+      $this->t->set_file(array('act_list_t' => 'act_list.tpl'));
+      $this->t->set_block('act_list_t','act_list','list');
+      
+      $this->t->set_var('lang_name','Assignment');
+      $this->t->set_var('lang_date','Date');
+      $this->t->set_var('lang_notes','Description');
+      
+      $sql = "SELECT * FROM tc_activity ORDER BY date DESC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $total_records = $this->db->num_rows();
+
+      $i = 0;
+      while ($this->db->next_record())
+       {
+         $activity_list[$i]['activity']  = $this->db->f('activity');
+         $activity_list[$i]['assignment'] = $this->db->f('assignment');
+         $activity_list[$i]['date']  = $this->db->f('date');
+         $activity_list[$i]['notes']  = $this->db->f('notes');
+
+         $sql = "SELECT * FROM tc_assignment WHERE assignment='" . $activity_list[$i]['assignment'] . "'";
+         $this->db2->query($sql,__LINE__,__FILE__);
+         if($this->db2->next_record())
+           {
+             $activity_list[$i]['name'] = $this->db2->f('name');
+             $activity_list[$i]['code'] = $this->db2->f('code');
+           }
+         $i++;
+       }
+            
+      for ($i=0; $i < count($activity_list); $i++)
+       {         
+         $this->nextmatchs->template_alternate_row_color(&$this->t);
+         $this->t->set_var('name',$activity_list[$i]['name']);
+         $this->t->set_var('date',$activity_list[$i]['date']);
+         $activity_notes = $activity_list[$i]['notes'];
+         if(strlen($activity_notes) > 40) { $activity_notes = substr($activity_notes,0,40) . "..."; }
+         $this->t->set_var('notes',$activity_notes);
+         
+         $link_data['menuaction'] = 'tc.tc.act_view';
+         $link_data['activity'] = $activity_list[$i]['activity'];
+         $link_data['action'] = 'view';
+         $this->t->set_var('view',$GLOBALS['phpgw']->link('/tc/index.php',$link_data));
+         $this->t->set_var('lang_view','View');
+
+         $link_data['menuaction'] = 'tc.tc.act_update';
+         $link_data['activity'] = $activity_list[$i]['activity'];
+         $link_data['action'] = 'edit';
+         $this->t->set_var('edit',$GLOBALS['phpgw']->link('/tc/index.php',$link_data));
+         $this->t->set_var('lang_edit','Edit');
+
+         $this->t->fp('list','act_list',True);
+       }
+
+      $link_data['menuaction'] = 'tc.tc.act_update';
+      $link_data['activity'] = '0';
+      $link_data['action'] = 'add';
+      $this->t->set_var('add','<form method="POST" action="' . $GLOBALS['phpgw']->link('/tc/index.php',$link_data)
+                       . '"><input type="submit" name="Add" value="' . 'Add Activity' .'"></font></form>');
+
+      $this->t->pfp('out','act_list_t');
+      $this->save_sessiondata();
+    }
+
+  function act_view()
+    {
+      $this->t->set_file(array('act_view_t' => 'act_view.tpl'));
+      $this->t->set_block('act_view_t','part_list','list');
+      
+      $sql = "SELECT * FROM tc_activity WHERE activity=" . intval(get_var('activity',array('GET','POST')));
+      $this->db->query($sql,__LINE__,__FILE__);
+      $this->db->next_record();
+      $this->t->set_var('assignment', $this->db->f('assignment'));
+      $this->t->set_var('date', $this->db->f('date'));
+      $this->t->set_var('notes', $this->db->f('notes'));
+      
+      $sql = "SELECT * FROM tc_assignment WHERE assignment='" . $this->db->f('assignment') . "'";
+      $this->db2->query($sql,__LINE__,__FILE__);
+      if($this->db2->next_record())
+       {
+         $this->t->set_var('name', $this->db2->f('name'));
+         $this->t->set_var('code', $this->db2->f('code'));
+       }
+      $this->t->set_var('lang_name','Assignment');
+      $this->t->set_var('lang_date','Date');
+      $this->t->set_var('lang_notes','Description');
+      $this->t->set_var('lang_done','Done');
+      $this->t->set_var('lang_action','View');
+
+      $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
+      $this->t->set_var('tr_color',$tr_color);
+            
+      $this->t->set_var('done_action',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.act_list'));
+
+      $link_data['menuaction'] = 'tc.tc.act_update';
+      $link_data['activity'] = get_var('activity',array('GET','POST'));
+      $link_data['action'] = 'edit';
+      $this->t->set_var('edit',$GLOBALS['phpgw']->link('/tc/index.php',$link_data));
+      $this->t->set_var('lang_edit','Edit');
+      $this->t->set_var('cal_date',$this->db->f('date'));
+      
+      // Now find out which indivs participated in this activity
+      $sql = "SELECT * FROM tc_participation WHERE activity=" . intval(get_var('activity',array('GET','POST')));
+      $this->db->query($sql,__LINE__,__FILE__);
+      $total_records = $this->db->num_rows();
+
+      $i = 0;
+      while ($this->db->next_record())
+       {
+         $part_list[$i]['indiv']  = $this->db->f('indiv');
+         $i++;
+       }
+      
+      for ($i=0; $i < count($part_list); $i++)
+       {
+         $sql = "SELECT * FROM tc_indiv WHERE indiv=" . $part_list[$i]['indiv'];
+         $this->db->query($sql,__LINE__,__FILE__);
+         $this->db->next_record();
+         $names[$i] = $this->db->f('name');
+       } sort($names);
+      
+      for ($i=0; $i < count($names); $i++)
+       {
+          //$this->nextmatchs->template_alternate_row_color(&$this->t);
+         $this->t->set_var('indiv_name',$names[$i]);
+         if(($i+1) % 3 == 0) { $this->t->set_var('table_sep',"</td></tr><tr>"); }
+         else { $this->t->set_var('table_sep',"</td>"); }
+         if(($i) % 3 == 0) { $this->nextmatchs->template_alternate_row_color(&$this->t); }
+         $this->t->fp('list','part_list',True);
+       }
+      
+      $this->t->pfp('out','act_view_t');
+      $this->save_sessiondata();
+    }
+
+  function act_update()
+    {
+      $this->t->set_file(array('form' => 'act_update.tpl'));
+      $this->t->set_block('form','indiv_list','list');
+      $this->t->set_block('form','add','addhandle');
+      $this->t->set_block('form','edit','edithandle');
+      $this->t->set_var('lang_done','Done');
+
+      $action = get_var('action',array('GET','POST'));
+      $this->t->set_var('done_action',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.act_list'));
+      $activity['activity'] = intval(get_var('activity',array('GET','POST')));
+      
+      if($action == 'save')
+       {
+         $activity['assignment'] = get_var('assignment',array('POST'));
+         $activity['date'] = get_var('date',array('POST'));
+         $activity['notes']= get_var('notes',array('POST'));
+         $this->db->query("UPDATE tc_activity set " .
+                          "   assignment='" . $activity['assignment'] .
+                          "', date='" . $activity['date'] . "'" .
+                          ", notes='" . $activity['notes'] . "'" .
+                          " WHERE activity=" . $activity['activity'],__LINE__,__FILE__);
+
+         // Delete all the individuals who have particiapted in this activity
+         $this->db->query("DELETE from tc_participation where activity=".$activity['activity'],__LINE__,__FILE__);
+         
+         // Re-add the individuals who are checked as having participated in this activity
+         $indivs = get_var('indiv_name',array('POST'));
+         if(is_array($indivs)) { // Only do the foreach loop if we have a valid array of indivs to work with
+           foreach ($indivs as $indiv)
+             {
+               $this->db->query("INSERT INTO tc_participation (indiv,activity) "
+                                . "VALUES (" . $indiv . ",". $activity['activity'] . ")",__LINE__,__FILE__);
+             }
+         }
+         
+         $this->act_list();
+         return false;
+       }
+
+      if($action == 'insert')
+       {
+         $activity['assignment'] = get_var('assignment',array('POST'));
+         $activity['date'] = get_var('date',array('POST'));
+         $activity['notes']= get_var('notes',array('POST'));
+         $this->db->query("INSERT INTO tc_activity (assignment,date,notes) "
+                          . "VALUES ('" . $activity['assignment'] . "','"
+                          . $activity['date'] . "','" . $activity['notes'] . "')",__LINE__,__FILE__);
+
+         $sql = "SELECT * FROM tc_activity WHERE assignment='".$activity['assignment']."' "
+            . " AND date='".$activity['date']."' AND notes='".$activity['notes']."'";
+         $this->db->query($sql,__LINE__,__FILE__);
+         if($this->db->next_record()) {
+           //print "activity: " . $this->db->f('activity') . "<br>";
+           $activity['activity'] = $this->db->f('activity');
+         }
+         
+         $indivs = get_var('indiv_name',array('POST'));
+         foreach ($indivs as $indiv)
+           {
+             $this->db->query("INSERT INTO tc_participation (indiv,activity) "
+                              . "VALUES (" . $indiv . ",". $activity['activity'] . ")",__LINE__,__FILE__);
+           }
+         
+         $this->act_list();
+         return false;
+       }
+      
+      if($action == 'add')
+       {
+         $activity['activity'] = 0;
+         $this->t->set_var('cal_date',$this->jscal->input('date','','','','','','',$this->cal_options));
+         $this->t->set_var('assignment','');
+         $this->t->set_var('date','');
+         $this->t->set_var('notes','');
+         $this->t->set_var('lang_done','Cancel');
+         $this->t->set_var('lang_action','Adding New Activity');
+         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.act_update&activity='
+                                                               . $activity['activity'] . '&action=' . 'insert'));
+       }
+
+      if($action == 'edit')
+       {
+         $sql = "SELECT * FROM tc_activity WHERE activity=" . $activity['activity'];
+         $this->db->query($sql,__LINE__,__FILE__);
+         $this->db->next_record();
+         $this->t->set_var('cal_date',$this->jscal->input('date',$this->db->f('date'),'','','','','',$this->cal_options));
+         $this->t->set_var('assignment', $this->db->f('assignment'));
+         $assignment = $this->db->f('assignment');
+         $this->t->set_var('date', $this->db->f('date'));
+         $this->t->set_var('notes', $this->db->f('notes'));
+         $this->t->set_var('lang_done','Cancel');
+         $this->t->set_var('lang_action','Editing Activity');
+         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.act_update&activity='
+                                                               . $activity['activity'] . '&action=' . 'save'));
+
+       }
+
+      // Create the assignments drop-down list
+      $sql = "SELECT * FROM tc_assignment ORDER BY name ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i = 0;
+      while ($this->db->next_record())
+       {
+         $assignments[$i]['assignment']  = $this->db->f('assignment');
+         $assignments[$i]['name'] = $this->db->f('name');
+         $assignments[$i]['code'] = $this->db->f('code');
+         $i++;
+       }
+      
+      $assignment_data.= '<select name=assignment>';
+      $assignment_data.= '<option value=0></option>';  
+      for ($j=0; $j < count($assignments); $j++) {
+       $id = $assignments[$j]['assignment'];
+       $name = $assignments[$j]['name'];
+       if($assignments[$j]['assignment'] == $assignment) { $selected[$id] = 'selected="selected"'; } else { $selected[$id] = ''; }
+       $assignment_data.= '<option value='.$id.' '.$selected[$id].'>'.$name.'</option>';
+      }
+      $assignment_data.='</select>';
+      $this->t->set_var('assignment_data',$assignment_data);
+      
+      // Create individual selection boxes
+      $sql = "SELECT * FROM tc_indiv";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      while ($this->db->next_record())
+       {
+         if($this->db->f('valid') == 1 || $action != 'add') {
+           $indiv_name[$i] = $this->db->f('name');
+           $indiv_id[$i] = $this->db->f('indiv');
+           $indiv_valid[$i] = $this->db->f('valid');
+           $i++;
+         }
+       }
+      array_multisort($indiv_name, $indiv_id, $indiv_valid);
+
+      $j=0;
+      for ($i=0; $i < count($indiv_id); $i++)
+       {
+         //$this->nextmatchs->template_alternate_row_color(&$this->t);
+         $sql = "SELECT * FROM tc_participation where activity=". $activity['activity'] . " AND indiv=" . $indiv_id[$i];
+         $this->db->query($sql,__LINE__,__FILE__);
+         if($this->db->next_record()) { $this->t->set_var('checked','checked'); $checked=1; }
+         else { $this->t->set_var('checked',''); $checked=0; }
+         if($checked || $indiv_valid[$i] == 1) {
+           $this->t->set_var('indiv_name',$indiv_name[$i]);
+           $this->t->set_var('indiv',$indiv_id[$i]);
+           if(($j+1) % 3 == 0) { $this->t->set_var('table_sep',"</td></tr><tr>"); }
+           else { $this->t->set_var('table_sep',"</td>"); }
+           if(($j) % 3 == 0) { $this->nextmatchs->template_alternate_row_color(&$this->t); }
+           $this->t->fp('list','indiv_list',True);
+           $j++;
+         }
+       }
+      
+      $this->t->set_var('lang_reset','Clear Form');
+      $this->t->set_var('lang_add','Add Activity');
+      $this->t->set_var('lang_save','Save Changes');
+      $this->t->set_var('edithandle','');
+      $this->t->set_var('addhandle','');
+      
+      $this->t->pfp('out','form');
+      if($action == 'edit') { $this->t->pfp('addhandle','edit'); }
+      if($action == 'add') { $this->t->pfp('addhandle','add'); }
+      
+      $this->save_sessiondata();
+    }
+
+    function assign_view()
+    {
+      $this->t->set_file(array('assign_view_t' => 'assign_view.tpl'));
+      $this->t->set_block('assign_view_t','assign_view','list');
+      
+      $this->t->set_var('lang_name','Assignment Name');
+      $this->t->set_var('lang_code','Code');
+      
+      $sql = "SELECT * FROM tc_assignment ORDER BY name ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $total_records = $this->db->num_rows();
+
+      $i = 0;
+      while ($this->db->next_record())
+       {
+         $assignment_list[$i]['assignment']  = $this->db->f('assignment');
+         $assignment_list[$i]['name'] = $this->db->f('name');
+         $assignment_list[$i]['code'] = $this->db->f('code');
+         $i++;
+       }
+            
+      for ($i=0; $i < count($assignment_list); $i++)
+       {         
+         $this->nextmatchs->template_alternate_row_color(&$this->t);
+         $this->t->set_var('name',$assignment_list[$i]['name']);
+         $this->t->set_var('code',$assignment_list[$i]['code']);
+         
+         $link_data['menuaction'] = 'tc.tc.assign_update';
+         $link_data['assignment'] = $assignment_list[$i]['assignment'];
+         $link_data['action'] = 'edit';
+         $this->t->set_var('edit',$GLOBALS['phpgw']->link('/tc/index.php',$link_data));
+         $this->t->set_var('lang_edit','Edit');
+
+         $link_data['menuaction'] = 'tc.tc.assign_update';
+         $link_data['assignment'] = '0';
+         $link_data['action'] = 'add';
+         $this->t->set_var('add','<form method="POST" action="' . $GLOBALS['phpgw']->link('/tc/index.php',$link_data)
+                           . '"><input type="submit" name="Add" value="' . 'Add Assignment' .'"></font></form>');
+
+         $this->t->fp('list','assign_view',True);
+       }
+
+      $this->t->pfp('out','assign_view_t');
+      $this->save_sessiondata();
+    }
+
+    function assign_update()
+    {
+      $this->t->set_file(array('form' => 'assign_update.tpl'));
+      $this->t->set_block('form','add','addhandle');
+      $this->t->set_block('form','edit','edithandle');
+      $this->t->set_var('lang_done','Done');
+
+      $action = get_var('action',array('GET','POST'));
+      $this->t->set_var('done_action',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.assign_view'));
+      $assignment['assignment'] = intval(get_var('assignment',array('GET','POST')));
+
+      if($action == 'save')
+       {
+         $assignment['name'] = get_var('name',array('POST'));
+         $assignment['code'] = get_var('code',array('POST'));
+         $this->db->query("UPDATE tc_assignment set " .
+                          "  name='" . $assignment['name'] . "'" .
+                          ", code='" . $assignment['code'] . "'" .
+                          " WHERE assignment=" . $assignment['assignment'],__LINE__,__FILE__);
+         
+         $this->assign_view();
+         return false;
+       }
+
+      if($action == 'insert')
+       {
+         $assignment['name'] = get_var('name',array('POST'));
+         $assignment['code'] = get_var('code',array('POST'));
+         $this->db->query("INSERT INTO tc_assignment (name,code) "
+                          . "VALUES ('" . $assignment['name'] . "','"
+                          . $assignment['code'] . "')",__LINE__,__FILE__);
+         $this->assign_view();
+         return false;
+       }
+      
+      if($action == 'add')
+       {
+         $assignment['assignment'] = 0;
+         $this->t->set_var('name','');
+         $this->t->set_var('code','');
+         $this->t->set_var('lang_done','Cancel');
+         $this->t->set_var('lang_action','Adding New Assignment');
+         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.assign_update&assignment='
+                                                               . $assignment['assignment'] . '&action=' . 'insert'));
+       }
+
+      if($action == 'edit')
+       {
+         $sql = "SELECT * FROM tc_assignment WHERE assignment=" . $assignment['assignment'];
+         $this->db->query($sql,__LINE__,__FILE__);
+         $this->db->next_record();
+         $this->t->set_var('name', $this->db->f('name'));
+         $this->t->set_var('code', $this->db->f('code'));
+         $this->t->set_var('lang_done','Cancel');
+         $this->t->set_var('lang_action','Editing Assignment');
+         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.assign_update&assignment='
+                                                               . $assignment['assignment'] . '&action=' . 'save'));
+
+       }
+      
+      $this->t->set_var('lang_reset','Clear Form');
+      $this->t->set_var('lang_add','Add Assignment');
+      $this->t->set_var('lang_save','Save Changes');
+      $this->t->set_var('edithandle','');
+      $this->t->set_var('addhandle','');
+      
+      $this->t->pfp('out','form');
+      if($action == 'edit') { $this->t->pfp('addhandle','edit'); }
+      if($action == 'add') { $this->t->pfp('addhandle','add'); }
+      
+      $this->save_sessiondata();
+    }
+
+  function par_view()
+    {
+      $this->t->set_file(array('par_view_t' => 'par_view.tpl'));
+      $this->t->set_block('par_view_t','header_list','list1');
+      $this->t->set_block('par_view_t','indiv_list','list2');
+
+      $sql = "SELECT * FROM tc_indiv where valid=1";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      while ($this->db->next_record())
+       {
+         $indiv_name[$i] = $this->db->f('name');
+         $indiv_id[$i] = $this->db->f('indiv');
+         $i++;
+       }
+      array_multisort($indiv_name, $indiv_id);
+
+      $sql = "SELECT * FROM tc_activity ORDER BY date DESC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $total_records = $this->db->num_rows();
+
+      $i = 0;
+      while ($this->db->next_record())
+       {
+         $activity_list[$i]['assignment'] = $this->db->f('assignment');
+         $activity_list[$i]['date'] = $this->db->f('date');
+         $activity_list[$i]['activity']  = $this->db->f('activity');
+         $i++;
+       }
+
+      $sql = "SELECT * FROM tc_assignment ORDER BY name ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      while($this->db->next_record())
+       {
+         $assignment_list[$i]['assignment'] = $this->db->f('assignment');
+         $assignment_list[$i]['name'] = $this->db->f('name');
+         $assignment_list[$i]['code'] = $this->db->f('code');
+         $i++;
+       }
+      
+      $indiv_width=300; $part_width=25; $assignment_width=50;
+      $total_width=$indiv_width+$part_width;
+      for ($i=0; $i < count($assignment_list); $i++) {
+       $this->t->set_var('assignment_name',$assignment_list[$i]['name']);
+       $this->t->set_var('assignment_code',$assignment_list[$i]['code']);
+       $this->t->fp('list1','header_list',True);
+       $total_width += $assignment_width;
+      }
+
+      for ($i=0; $i < count($indiv_id); $i++) {
+       $participated=0; $part_table = ''; 
+       $this->nextmatchs->template_alternate_row_color(&$this->t);
+       $this->t->set_var('indiv_name',$indiv_name[$i]);
+       for ($j=0; $j < count($assignment_list); $j++) {
+         $date = "0000-00-00"; $checkmark=0; $num_matches=0;
+         for ($k=0; $k < count($activity_list); $k++) {
+           if($assignment_list[$j]['assignment'] == $activity_list[$k]['assignment']) { 
+             $sql = "SELECT * FROM tc_participation where "
+                . " activity=" . $activity_list[$k]['activity']
+                . " AND indiv=" . $indiv_id[$i];
+             $this->db->query($sql,__LINE__,__FILE__);
+             while($this->db->next_record()) {
+               if($activity_list[$k]['date'] > $date) { 
+                 $date = $activity_list[$k]['date'];
+               }
+               $checkmark=1;
+               $num_matches++;
+               $participated++;
+             }
+           }
+         }
+         if($checkmark) {
+           $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="images/checkmark.gif">'.$participated.'</td>'; }
+       else { $part_table .= '<td>&nbsp;</td>'; }
+       $this->t->set_var('part_table',$part_table);
+       $this->t->fp('list2','indiv_list',True);
+      }
+      $this->t->set_var('total_width',$total_width);
+      $this->t->set_var('indiv_width',$indiv_width);
+      $this->t->set_var('part_width',$part_width);
+      $this->t->set_var('act_width',$act_width);
+      $this->t->pfp('out','par_view_t');
+      $this->save_sessiondata(); 
+    }
+
+    function willing_view()
+    {
+      $this->t->set_file(array('willing_view_t' => 'willing_view.tpl'));
+      $this->t->set_block('willing_view_t','header_list','list1');
+      $this->t->set_block('willing_view_t','indiv_list','list2');
+
+      $this->t->set_var('lang_filter','Filter');
+      $this->t->set_var('lang_filter_unwilling','Filter out unwilling individuals:');
+
+      $filter_unwilling = get_var('filter_unwilling',array('POST'));
+      $this->t->set_var('filter_unwilling',$filter_unwilling);
+      
+      if($filter_unwilling == 'y' || $filter_unwilling == '') { 
+       $filter_input = "<input type=\"radio\" name=\"filter_unwilling\" value=\"y\" checked>Y";
+       $filter_input.= "<input type=\"radio\" name=\"filter_unwilling\" value=\"n\">N";
+       $filter_input.= "&nbsp;&nbsp;";
+      } else {
+       $filter_input = "<input type=\"radio\" name=\"filter_unwilling\" value=\"y\">Y";
+       $filter_input.= "<input type=\"radio\" name=\"filter_unwilling\" value=\"n\" checked>N";
+       $filter_input.= "&nbsp;&nbsp;";
+      }
+      $this->t->set_var('filter_input',$filter_input);
+      
+      $sql = "SELECT * FROM tc_indiv where valid=1";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      while ($this->db->next_record())
+       {
+         $indiv_name[$i] = $this->db->f('name');
+         $indiv_id[$i] = $this->db->f('indiv');
+         $indiv_phone[$indiv_id[$i]] = $this->db->f('phone');
+         $i++;
+       }
+      array_multisort($indiv_name, $indiv_id);
+
+      $sql = "SELECT * FROM tc_assignment ORDER BY name ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      while($this->db->next_record())
+       {
+         $assignment_list[$i]['assignment'] = $this->db->f('assignment');
+         $assignment_list[$i]['name'] = $this->db->f('name');
+         $assignment_list[$i]['code'] = $this->db->f('code');
+         $i++;
+       }
+
+      $sql = "SELECT * FROM tc_activity ORDER BY date DESC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $total_records = $this->db->num_rows();
+
+      $i = 0;
+      while ($this->db->next_record())
+       {
+         $activity_list[$i]['assignment'] = $this->db->f('assignment');
+         $activity_list[$i]['date'] = $this->db->f('date');
+         $activity_list[$i]['activity']  = $this->db->f('activity');
+         $i++;
+       }
+      
+      $indiv_width=275; $willing_width=40; $assignment_width=50;
+      $total_width=$indiv_width+$willing_width;
+      
+      for ($i=0; $i < count($assignment_list); $i++) {
+       $this->t->set_var('assignment_name',$assignment_list[$i]['name']);
+       $this->t->set_var('assignment_code',$assignment_list[$i]['code']);
+       $this->t->fp('list1','header_list',True);
+       $total_width += $assignment_width;
+       $total_willing[$i] = 0;
+      }
+
+      for ($i=0; $i < count($indiv_id); $i++) {
+       $willing_table = ''; $indiv_willing=0;
+       $this->t->set_var('indiv_name',$indiv_name[$i]);
+       $this->t->set_var('indiv_phone',$indiv_phone[$indiv_id[$i]]);
+       $this->t->set_var('editurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.willing_update&indiv_id='
+                                                           . $indiv_id[$i] . '&action=' . 'edit'));
+       for ($j=0; $j < count($assignment_list); $j++) {
+         $found_willingness=0; 
+         $sql = "SELECT * FROM tc_willingness where "
+            . " assignment=" . $assignment_list[$j]['assignment']
+            . " AND indiv=" . $indiv_id[$i];
+         $this->db->query($sql,__LINE__,__FILE__);
+         while($this->db->next_record()) {
+           $found_willingness=1;
+           $date_part="";
+           $sql = "SELECT * FROM tc_activity where "
+              . " assignment=". $assignment_list[$j]['assignment']
+              . " ORDER by date DESC";
+           $this->db2->query($sql,__LINE__,__FILE__);
+           if($this->db2->next_record()) {
+             $activity = $this->db2->f('activity');
+             $date = $this->db2->f('date');
+             $sql = "SELECT * FROM tc_participation where "
+                . " activity=" . $activity
+                . " AND indiv=". $indiv_id[$i];
+             $this->db3->query($sql,__LINE__,__FILE__);
+             if($this->db3->next_record()) {
+               $date_part = $date;
+             } 
+           }
+             
+           if($this->db->f('willing') == 'y') {
+             $total_willing[$j]++;
+             $indiv_willing=1;
+             $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="images/x.gif"></td>';
+           }
+           else {
+             $indiv_willing=1;
+             $willing_table .= "<td>&nbsp;</td>";
+           }
+         }
+         if(!$found_willingness) {
+           $indiv_willing=1;
+           $willing_table .= "<td>&nbsp;</td>";
+         }
+       }
+       if(($indiv_willing == 1) || ($filter_unwilling == 'n')) { 
+         $this->t->set_var('willing_table',$willing_table);
+         $this->t->fp('list2','indiv_list',True);
+         $this->nextmatchs->template_alternate_row_color(&$this->t);
+       } 
+      }
+
+      $stat_table = '<td><b>Total Willing to Serve</b></td>';
+      for ($j=0; $j < count($assignment_list); $j++) {
+       $stat_table .= "<td align=center><b>".$total_willing[$j]."</b></td>";
+      }
+      $this->t->set_var('stat_table',$stat_table);
+      
+      $this->t->set_var('total_width',$total_width);
+      $this->t->set_var('indiv_width',$indiv_width);
+      $this->t->set_var('willing_width',$willing_width);
+      $this->t->pfp('out','willing_view_t');
+      $this->save_sessiondata(); 
+    }
+    
+  function willing_update()
+    {
+      //print "<font color=red>Willingness Update Under Constrcution</font>";
+      //$this->willing_view();
+      //return false;
+      
+      $this->t->set_file(array('willing_update_t' => 'willing_update.tpl'));
+      $this->t->set_block('willing_update_t','assignment_list','list');
+      $this->t->set_block('willing_update_t','save','savehandle');
+      
+      $indiv_id = get_var('indiv_id',array('GET','POST'));
+      $this->t->set_var('indiv_id',$indiv_id);
+      $action = get_var('action',array('GET','POST'));
+      
+      $this->t->set_var('done_action',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.willing_view'));
+      $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.willing_update&action=save'));
+      $this->t->set_var('lang_done','Cancel');
+      $this->t->set_var('title','Willingness Update ');
+      
+      if($action == 'save')
+       {
+         // Delete all the previous willingness entries for this individual
+         $this->db->query("DELETE from tc_willingness where indiv=" . $indiv_id ,__LINE__,__FILE__);
+             
+         // Now, add the assignment willingness that is checked for this individual
+         $new_data = get_var('willingness',array('POST'));
+         foreach ($new_data as $data)
+           {
+             $data_array = explode("/",$data);
+             $assignment = $data_array[0];
+             $willing = $data_array[1];
+             //print "indiv_id: $indiv_id assignment: $assignment willing: $willing<br>";
+             $this->db->query("INSERT INTO tc_willingness (indiv,assignment,willing) "
+                              . "VALUES (" . $indiv_id .",". $assignment .",'". $willing . "')",__LINE__,__FILE__);
+           }      
+         $this->willing_view();
+         return false;
+       }
+      
+      $assignment_width=300; $willing_width=25; $table_width=$assignment_width + $willing_width;
+      $table_data=""; 
+
+      // Find out the individual's name
+      $sql = "SELECT * FROM tc_indiv WHERE indiv=".$indiv_id." AND valid=1";
+      $this->db->query($sql,__LINE__,__FILE__);
+      if($this->db->next_record()) {
+       $indiv_name = $this->db->f('name');
+       $this->t->set_var('indiv_name',$indiv_name);
+      }
+      
+      // Select all the assignments
+      $sql = "SELECT * FROM tc_assignment ORDER by name ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      
+      while ($this->db->next_record())
+       {
+         $assignment = $this->db->f('assignment');
+         $assignment_name = $this->db->f('name');
+         $assignment_code = $this->db->f('code');
+
+         $this->nextmatchs->template_alternate_row_color(&$this->t);
+         $table_data.="<tr bgcolor=". $this->t->get_var('tr_color') ."><td>$assignment_name</td>";
+         
+         $header_row="<th width=$comp_width><font size=-2>Assignments</th><th>Willingness</th>";
+         $sql = "SELECT * FROM tc_willingness WHERE indiv=".$indiv_id." AND assignment=".$assignment;
+         $this->db2->query($sql,__LINE__,__FILE__);
+         $value = $assignment;
+            
+         if($this->db2->next_record()) {
+             if($this->db2->f('willing') == 'y') {
+               $table_data .= '<td width=100 align=center>';
+               $table_data .= '<input type="radio" name="willingness['.$assignment.']" value="'.$value.'/y" checked>Y';
+               $table_data .= '<input type="radio" name="willingness['.$assignment.']" value="'.$value.'/n">N';
+               $table_data .= '<input type="radio" name="willingness['.$assignment.']" value="'.$value.'/"> ';
+               $table_data .= '</td>';
+             } else if($this->db2->f('willing') == 'n') {
+               $table_data .= '<td width=100 align=center>';
+               $table_data .= '<input type="radio" name="willingness['.$assignment.']" value="'.$value.'/y">Y';
+               $table_data .= '<input type="radio" name="willingness['.$assignment.']" value="'.$value.'/n" checked>N';
+               $table_data .= '<input type="radio" name="willingness['.$assignment.']" value="'.$value.'/">';
+               $table_data .= '</td>';
+             } else {
+               $table_data .= '<td width=100 align=center>';
+               $table_data .= '<input type="radio" name="willingness['.$assignment.']" value="'.$value.'/y">Y';
+               $table_data .= '<input type="radio" name="willingness['.$assignment.']" value="'.$value.'/n">N';
+               $table_data .= '<input type="radio" name="willingness['.$assignment.']" value="'.$value.'/" checked> ';
+               $table_data .= '</td>';
+             }
+           }
+         else {
+           $table_data .= '<td width=100 align=center>';
+           $table_data .= '<input type="radio" name="willingness['.$assignment.']" value="'.$value.'/y">Y';
+           $table_data .= '<input type="radio" name="willingness['.$assignment.']" value="'.$value.'/n">N';
+           $table_data .= '<input type="radio" name="willingness['.$assignment.']" value="'.$value.'/" checked> ';
+           $table_data .= '</td>';
+         }
+         
+         $table_data .= "\n";
+         $table_data .= "</tr>"; 
+         $table_data .= "<tr><td colspan=20></td></tr>";
+       }
+      
+      $table_data .= "<tr><td colspan=20><hr></td></tr>";
+      
+      $this->t->set_var('table_width',$table_width);
+      $this->t->set_var('header_row',$header_row);
+      $this->t->set_var('table_data',$table_data);
+      $this->t->fp('list','assignment_list',True);
+
+      $this->t->set_var('lang_reset','Clear Form');
+      $this->t->set_var('lang_save','Save Changes');
+      $this->t->set_var('savehandle','');
+      
+      $this->t->pfp('out','willing_update_t');
+      $this->t->pfp('addhandle','save');
+      
+      $this->save_sessiondata();
+    }
+    
+    
+    function ppi_sched()
+      {
+      $this->t->set_file(array('ppi_sched_t' => 'ppi_sched.tpl'));
+      $this->t->set_block('ppi_sched_t','indiv_list','indivlist');
+      $this->t->set_block('ppi_sched_t','appt_list','apptlist');
+      $action = get_var('action',array('GET','POST'));
+
+      $this->t->set_var('lang_save','Save Appt / Pri / Notes');
+      $this->t->set_var('lang_reset','Clear Changes');
+      
+      $this->t->set_var('ppi_link',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.ppi_view'));
+      $this->t->set_var('ppi_link_title','Yearly PPIs');
+      
+      $this->t->set_var('schedule_ppi_link',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.ppi_sched'));
+      $this->t->set_var('schedule_ppi_link_title','Schedule Yearly PPIs');
+
+      $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.ppi_sched&action=save'));
+      $this->t->set_var('title','Yearly PPI Scheduler');
+
+      $indiv_width=500; $phone_width=25; $pri_width=10; $notes_width=128; $ppi_date_width=20;
+      $table_width=$indiv_width + $phone_width + $pri_width + $notes_width + $ppi_date_width;
+      $header_row = "<th width=$indiv_width><font size=-2>individual Name</th>";
+      $header_row.= "<th width=$phone_width><font size=-2>Phone</th>";
+      $header_row.= "<th width=$pri_width><font size=-2>Priority</th>";
+      $header_row.= "<th width=$ppi_date_width><font size=-2>Last PPI</th>";
+      $header_row.= "<th width=$notes_width><font size=-2>Scheduling Notes</th>";
+      $table_data=""; $completed_data=""; $totals_data="";
+
+      $year = date('Y');
+
+      // Get the EQ President
+      $sql = "SELECT * FROM tc_presidency where president=1 and valid=1";
+      $this->db->query($sql,__LINE__,__FILE__);
+      if($this->db->next_record()) {
+       $president_name = $this->db->f('name');
+       $president_name_array = explode(",",$president_name);
+       $president_last_name = $president_name_array[0];
+       $president_id = $this->db->f('indiv');
+       $presidency_id = $this->db->f('presidency');
+       $interviewer = $this->db->f('indiv');
+       $district_number = '*';
+       $district_name = $president_name;
+       $sql = "SELECT * FROM tc_indiv where indiv='$president_id'";
+       $this->db2->query($sql,__LINE__,__FILE__);
+       if($this->db2->next_record()) {
+         $indiv_id = $this->db2->f('indiv_id');
+       }
+       $sql = "SELECT * FROM tc_parent where indiv_id='$indiv_id'";
+       $this->db2->query($sql,__LINE__,__FILE__);
+       if($this->db2->next_record()) {
+         $president_address = $this->db2->f('address');
+       }
+      } else {
+       print "<hr><font color=red><h3>-E- Unable to locate President in tc_presidency table</h3></font></hr>";
+       return;
+      }
+
+      if($action == 'save')
+       {
+         // Save any changes made to the appointment table
+         $new_data = get_var('appt_notes',array('POST'));
+         if($new_data != "") { 
+           foreach ($new_data as $entry)
+             {
+               $indiv = $entry['indiv'];
+               $appointment = $entry['appointment'];
+               $location = $entry['location'];
+               if($location == "") { $location = "$president_last_name"." home ($president_address)"; }
+               if($indiv == 0) { $location = ""; }
+               
+               //Only perform a database update if we have made a change to this appointment
+               $sql = "SELECT * FROM tc_appointment where appointment='$appointment' and indiv='$indiv' and location='$location'";
+               $this->db->query($sql,__LINE__,__FILE__);
+               if(!$this->db->next_record()) {
+                 // Perform database save actions here
+                 $this->db->query("UPDATE tc_appointment set " .
+                                  " indiv='" . $indiv . "'" .
+                                  ",location='" . $location . "'" .
+                                  " WHERE appointment=" . $appointment,__LINE__,__FILE__);
+                 // Email the appointment
+                 $this->email_appt($appointment);
+               }
+               
+             }
+         }
+         
+         // Save any changes made to the ppi notes table
+         $new_data = get_var('ppi_notes',array('POST'));
+         foreach ($new_data as $entry)
+          {
+            $ppi_notes = $entry['notes'];
+            $indiv_id = $entry['indiv_id'];
+            $ppi_pri = $entry['pri'];
+            
+            // Perform database save actions here
+            $this->db->query("UPDATE tc_indiv set " .
+                             " ppi_notes='" . $ppi_notes . "'" .
+                             ",ppi_pri='" . $ppi_pri . "'" .
+                             " WHERE indiv=" . $indiv_id,__LINE__,__FILE__);
+            
+          }
+
+         $take_me_to_url = $GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.ppi_sched');
+         //Header('Location: ' . $take_me_to_url);
+       }
+      
+      // create the individual id -> individual name mapping
+      $sql = "SELECT * FROM tc_indiv where valid=1 ORDER BY name ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      $indiv_id = NULL;
+      $indiv_name = NULL;
+      while ($this->db->next_record())
+       {
+         $indiv_name[$i] = $this->db->f('name');
+         $indiv_id[$i] = $this->db->f('indiv');
+         $i++;
+       }
+      array_multisort($indiv_name, $indiv_id);
+
+      // APPOINTMENT TABLE
+      $date_width=250; $time_width=100; $indiv_width=200; $location_width=100;
+      $appt_table_width=$date_width + $time_width + $indiv_width + $location_width;
+      $appt_header_row = "<th width=$date_width><font size=-2>Date</th>";
+      $appt_header_row.= "<th width=$time_width><font size=-2>Time</th>";      
+      $appt_header_row.= "<th width=$indiv_width><font size=-2>indiv</th>";
+      $appt_header_row.= "<th width=$location_width><font size=-2>Location</th>";
+      $appt_table_data = ""; 
+
+      $total_indivs=0; $indivs_with_yearly_ppi=0;
+      
+      // Display a scheduling table for the EQ President
+      $table_data=""; $appt_table_data="";
+      $table_title = "District ".$district_number.": ".$district_name.": All indivs with Yearly PPI Not Completed";
+      $appt_table_title = "District ".$district_number.": ".$district_name.": Yearly PPI Appointment Slots";
+      $this->t->set_var('table_title',$table_title);
+      $this->t->set_var('appt_table_title',$appt_table_title);
+      
+      // query the database for all the appointments
+      $sql = "SELECT * FROM tc_appointment where presidency=".$presidency_id." and date>=CURDATE() ORDER BY date ASC, time ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+       
+      while ($this->db->next_record())
+       {
+         $appointment = $this->db->f('appointment');
+         $indiv = $this->db->f('indiv');
+         $location = $this->db->f('location');
+         if(($location == "") && ($indiv > 0)) { $location = "$president_last_name"." home ($president_address)"; }
+         
+         $date = $this->db->f('date');
+         $date_array = explode("-",$date);
+         $year = $date_array[0]; $month = $date_array[1]; $day = $date_array[2];
+         $day_string = date("l d-M-Y", mktime(0,0,0,$month,$day,$year));
+         
+         $time = $this->db->f('time');
+         $time_array = explode(":",$time);
+         $time_string = date("g:i a", mktime($time_array[0], $time_array[1], $time_array[2]));
+         
+         $appt_table_data.= "<tr bgcolor=". $this->t->get_var('tr_color') .">";
+         $appt_table_data.= "<td align=center>$day_string</td>";
+         $appt_table_data.= "<td align=center>$time_string</td>";
+
+         $appt_table_data.= '<td align=center><select name=appt_notes['.$appointment.'][indiv]>';
+         $appt_table_data.= '<option value=0></option>';
+         for ($i=0; $i < count($indiv_id); $i++) {
+           $id = $indiv_id[$i];
+           $name = $indiv_name[$i];
+           if($indiv_id[$i] == $indiv) { $selected[$id] = 'selected="selected"'; } else { $selected[$id] = ''; }
+           $appt_table_data.= '<option value='.$id.' '.$selected[$id].'>'.$name.'</option>';
+         }
+         $appt_table_data.='</select></td>';
+         
+         $appt_table_data.= '<td align=center><input type=text size="35" maxlength="120" ';
+         $appt_table_data.= 'name="appt_notes['.$appointment.'][location]" value="'.$location.'">';
+         
+         $appt_table_data.= '<input type=hidden name="appt_notes['.$appointment.'][appointment]" value="'.$appointment.'">';
+         
+         $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
+         $this->t->set_var('tr_color',$tr_color);
+       }
+
+      $this->t->set_var('appt_table_data',$appt_table_data);
+      $this->t->set_var('appt_header_row',$appt_header_row);
+      $this->t->set_var('appt_table_width',$appt_table_width);
+
+      // PPI SCHEDULING TABLE
+      $sql = "SELECT * FROM tc_indiv where valid=1 ORDER BY ppi_pri ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      
+      $i=0; 
+      $indiv_id = NULL;
+      while ($this->db->next_record())
+       {
+         $indiv_id[$i] = $this->db->f('indiv');
+         $indiv_name[$i] = $this->db->f('name');
+         $indiv_phone[$indiv_id[$i]] = $this->db->f('phone');
+         $indiv_ppi_pri[$indiv_id[$i]] = $this->db->f('ppi_pri');
+         $indiv_ppi_notes[$indiv_id[$i]] = $this->db->f('ppi_notes');
+         $i++;
+         $total_indivs++;
+       }
+
+      $max = count($indiv_id);
+      
+      for($i=0; $i < $max; $i++) {
+          $id = $indiv_id[$i];
+          $name = $indiv_name[$i];
+         $phone = $indiv_phone[$id];
+         $ppi_pri = $indiv_ppi_pri[$id];
+         $ppi_notes = $indiv_ppi_notes[$id];
+
+         // If this individual has had a yearly PPI this year, don't show him on the schedule list
+         $year_start = $year - 1 . "-12-31"; $year_end = $year + 1 . "-01-01";
+         $sql = "SELECT * FROM tc_interview WHERE date > '$year_start' AND date < '$year_end' ".
+            "AND indiv=" . $id . " AND interview_type='ppi'";
+         $this->db2->query($sql,__LINE__,__FILE__);
+         
+         if(!$this->db2->next_record()) {
+           $sql = "SELECT * FROM tc_interview WHERE indiv=" . $id . " AND interview_type='ppi' ORDER BY date DESC";
+           $this->db->query($sql,__LINE__,__FILE__);
+           if($this->db->next_record()) { $date = $this->db->f('date'); } else { $date = ""; }
+           $link_data['menuaction'] = 'tc.tc.ppi_update';
+           $link_data['indiv'] = $id;
+           $link_data['name'] = $name;
+           $link_data['interview'] = '';
+           $link_data['interview_type'] = 1;
+           $link_data['action'] = 'add';
+           $link_data['interviewer'] = $interviewer;
+           $link = $GLOBALS['phpgw']->link('/tc/index.php',$link_data);
+           $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
+           $this->t->set_var('tr_color',$tr_color);
+           $table_data.= "<tr bgcolor=". $this->t->get_var('tr_color') ."><td title=\"$phone\"><a href=$link>$name</a></td>";
+           $table_data.= "<td align=center>$phone</td>";
+           //$table_data.= "<td align=center>$ppi_pri</td>";
+           $table_data.= "<td align=center>";
+           $table_data.= '<select name=ppi_notes['.$i.'][pri]>';
+           foreach(range(0,6) as $num) {
+             if($num == 0) { $num = 1; } else {$num = $num*5; }
+             if($ppi_pri == $num) { $selected[$num] = 'selected="selected"'; } else { $selected[$num] = ''; }
+             $table_data.= '<option value='.$num.' '.$selected[$num].'>'.$num.'</option>';
+           }
+           $table_data.= '</select></td>';
+           $table_data.= "<td align=center>$date</td>";
+           $table_data.= '<td><input type=text size="50" maxlength="128" name="ppi_notes['.$i.'][notes]" value="'.$ppi_notes.'">';
+           $table_data.= '<input type=hidden name="ppi_notes['.$i.'][indiv_id]" value="'.$id.'">';
+           $table_data.= '<input type=hidden name="ppi_notes['.$i.'][indiv_name]" value="'.$name.'">';
+           $table_data.= '</td>';
+           $table_data.= '</tr>';
+         } else {
+           $link_data['menuaction'] = 'tc.tc.ppi_update';
+           $link_data['interviewer'] = $this->db2->f('interviewer');
+           $link_data['indiv'] = $this->db2->f('indiv');
+           $link_data['name'] = $name;
+           $link_data['interview'] = $this->db2->f('interview');
+           $link_data['interview_type'] = $this->db2->f('interview_type');
+           $link_data['action'] = 'view';
+           $link = $GLOBALS['phpgw']->link('/tc/index.php',$link_data);    
+           $indivs_with_yearly_ppi++;
+           $date = $this->db2->f('date');
+           $ppi_notes = $this->db2->f('notes');
+           if(strlen($ppi_notes) > 40) { $ppi_notes = substr($ppi_notes,0,40) . "..."; }
+           $tr_color2 = $this->nextmatchs->alternate_row_color($tr_color2);
+           $this->t->set_var('tr_color2',$tr_color2);
+           $completed_data.= "<tr bgcolor=". $this->t->get_var('tr_color2') ."><td title=\"$phone\"><a href=$link>$name</a></td>";
+           $completed_data.= "<td align=center>$phone</td>";
+           $completed_data.= "<td align=center><a href=".$link.">$date</a></td>";
+           $completed_data.= "<td align=left>$ppi_notes</td>";
+           $completed_data.= '</tr>';
+         }
+      } // End for individuals Loop
+
+      $name_width=175; $phone_width=100; $date_width=100; $notes_width=300;
+      $completed_table_width=$name_width + $phone_width + $date_width + $notes_width;
+      $completed_header_row = "<th width=$name_width><font size=-2>Individual Name</th>";
+      $completed_header_row.= "<th width=$phone_width><font size=-2>Phone</th>";      
+      $completed_header_row.= "<th width=$date_width><font size=-2>Date</th>";
+      $completed_header_row.= "<th width=$notes_width><font size=-2>PPI Notes</th>";
+            
+      $this->t->set_var('table_width',$table_width);
+      $this->t->set_var('header_row',$header_row);
+      $this->t->set_var('table_data',$table_data);
+      $this->t->set_var('completed_header_row',$completed_header_row);
+      $this->t->set_var('completed_table_width',$completed_table_width);
+      $this->t->set_var('completed',$completed_data);
+      $this->t->fp('indivlist','indiv_list',True); 
+      
+      $indivs_width=300; $totals_width=100;
+      $totals_table_width=$indivs_width + $totals_width;
+      $totals_header_row = "<th width=$indivs_width><font size=-2>Individuals</th>";
+      $totals_header_row.= "<th width=$totals_width><font size=-2>$year</th>";
+      $totals_data.= "<tr bgcolor=". $this->t->get_var('tr_color') .">";
+      $totals_data.= "<td align=left><font size=-2><b>Total Individuals with yearly PPIs completed:</b></font></td>";
+      $totals_data.= "<td align=center><font size=-2><b>$indivs_with_yearly_ppi / $total_indivs</b></font></td>";
+      $percent = ceil(($indivs_with_yearly_ppi / $total_indivs)*100);
+      $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
+      $this->t->set_var('tr_color',$tr_color);
+      $totals_data.= "<tr bgcolor=". $this->t->get_var('tr_color') .">";
+      $totals_data.= "<td align=left><font size=-2><b>Percentage:</b></font></td>";
+      $totals_data.= "<td align=center><font size=-2><b>$percent%</b></font></td>";
+      $totals_data.= "</tr>";
+
+      $this->t->set_var('totals',$totals_data);
+      $this->t->set_var('totals_header_row',$totals_header_row);
+      $this->t->set_var('totals_table_width',$totals_table_width);
+      
+      $this->t->pfp('out','ppi_sched_t');
+      $this->save_sessiondata(); 
+      
+    }
+  
+  function int_sched()
+    {
+      $this->t->set_file(array('int_sched_t' => 'int_sched.tpl'));
+      $this->t->set_block('int_sched_t','indiv_list','indivlist');
+      $this->t->set_block('int_sched_t','appt_list','apptlist');
+      $action = get_var('action',array('GET','POST'));
+
+      $this->t->set_var('lang_save','Save Appt / Pri / Notes');
+      $this->t->set_var('lang_reset','Clear Changes');
+      
+      $this->t->set_var('int_link',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.int_view'));
+      $this->t->set_var('int_link_title','Hometeaching Interviews');
+      
+      $this->t->set_var('schedule_int_link',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.int_sched'));
+      $this->t->set_var('schedule_int_link_title','Schedule Hometeaching Interviews');
+
+      $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.int_sched&action=save'));
+      $this->t->set_var('title','Hometeaching Interviews Scheduler');
+
+      $indiv_width=500; $phone_width=25; $pri_width=10; $notes_width=128; $int_date_width=20;
+      $table_width=$indiv_width + $phone_width + $pri_width + $notes_width + $int_date_width;
+      $header_row = "<th width=$indiv_width><font size=-2>individual Name</th>";
+      $header_row.= "<th width=$phone_width><font size=-2>Phone</th>";
+      $header_row.= "<th width=$pri_width><font size=-2>Priority</th>";
+      $header_row.= "<th width=$int_date_width><font size=-2>Last Interview</th>";
+      $header_row.= "<th width=$notes_width><font size=-2>Scheduling Notes</th>";
+      $table_data=""; $completed_data=""; $totals_data="";
+
+      $year = date('Y');
+      $month = date('m');
+      $nextyear = $year + 1;
+      if($month >= 1 && $month <= 3) { $quarter_start=$year."-01-01"; $quarter_end=$year."-04-01"; }
+      if($month >= 4 && $month <= 6) { $quarter_start=$year."-04-01"; $quarter_end=$year."-07-01"; }
+      if($month >= 7 && $month <= 9) { $quarter_start=$year."-07-01"; $quarter_end=$year."-10-01"; }
+      if($month >= 10 && $month <= 12) { $quarter_start=$year."-10-01"; $quarter_end=$nextyear."-01-01"; }
+      //print "year: $year month: $month quarter_start: $quarter_start quarter_end: $quarter_end<br>";
+
+      // create the individual id -> individual name mapping
+      $sql = "SELECT * FROM tc_indiv where valid=1 ORDER BY name ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      $indiv_id_data = NULL;
+      $indiv_name_data = NULL;
+      while ($this->db->next_record())
+       {
+         $indiv_name_data[$i] = $this->db->f('name');
+         $indiv_id_data[$i] = $this->db->f('indiv');
+         $individ2name[$indiv_id_data[$i]] = $indiv_name_data[$i];
+         $i++;
+       }
+      array_multisort($indiv_name_data, $indiv_id_data);
+
+      if($action == 'save')
+       {
+         // Save any changes made to the appointment table
+         $new_data = get_var('appt_notes',array('POST'));
+         if($new_data != "") { 
+           foreach ($new_data as $entry)
+             {
+               $indiv = $entry['indiv'];
+               $appointment = $entry['appointment'];
+               $location = $entry['location'];
+               if($location == "") {
+                 $supervisor = $entry['supervisor'];
+                 $supervisor_array = explode(",", $individ2name[$supervisor]);
+                 $supervisor_last_name = $supervisor_array[0];
+                 $sql = "SELECT * FROM tc_indiv where indiv='$supervisor'";
+                 $this->db2->query($sql,__LINE__,__FILE__);
+                 if($this->db2->next_record()) {
+                   $indiv_id = $this->db2->f('indiv_id');
+                 }
+                 $sql = "SELECT * FROM tc_parent where indiv_id='$indiv_id'";
+                 $this->db2->query($sql,__LINE__,__FILE__);
+                 if($this->db2->next_record()) {
+                   $supervisor_address = $this->db2->f('address');
+                 }
+                 $location = "$supervisor_last_name"." home ($supervisor_address)";
+               }
+               if($indiv == 0) { $location = ""; }
+               
+               //print "indiv: $indiv appointment: $appointment <br>";
+               //Only perform a database update if we have made a change to this appointment
+               $sql = "SELECT * FROM tc_appointment where appointment='$appointment' and indiv='$indiv' and location='$location'";
+               $this->db->query($sql,__LINE__,__FILE__);
+               if(!$this->db->next_record()) {
+                 // Perform database save actions here
+                 $this->db->query("UPDATE tc_appointment set " .
+                                  " indiv='" . $indiv . "'" .
+                                  ",location='" . $location . "'" .
+                                  " WHERE appointment=" . $appointment,__LINE__,__FILE__);
+                 
+                 // Email the appointment
+                 $this->email_appt($appointment);
+               }
+             }
+         }
+         
+         // Save any changes made to the int notes table
+         $new_data = get_var('int_notes',array('POST'));
+         foreach ($new_data as $entry)
+          {
+            $int_notes = $entry['notes'];
+            $indiv_id = $entry['indiv_id'];
+            $indiv_name = $entry['indiv_name'];
+            $int_pri = $entry['pri'];
+            $aaronic = $entry['aaronic'];
+            //print "int_notes: $int_notes indiv_name: $indiv_name aaronic: $aaronic <Br>";
+            if($aaronic == 0) { 
+              // Perform database save actions here
+              $this->db->query("UPDATE tc_indiv set " .
+                               " int_notes='" . $int_notes . "'" .
+                               ",int_pri='" . $int_pri . "'" .
+                               " WHERE indiv=" . $indiv_id,__LINE__,__FILE__);
+            } 
+            
+          }
+
+         $take_me_to_url = $GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.int_sched');
+         //Header('Location: ' . $take_me_to_url);
+       }
+
+      // Get the Districts
+      $sql = "SELECT * FROM tc_district where valid=1 ORDER BY district ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      while ($this->db->next_record())
+       {
+         $district = $this->db->f('district');
+         $districts[$i]['district'] = $this->db->f('district');
+         $districts[$i]['name'] = $this->db->f('name');
+         $districts[$i]['supervisor'] = $this->db->f('supervisor');
+         $sql = "SELECT * FROM tc_presidency where district=$district and valid=1";
+         $this->db2->query($sql,__LINE__,__FILE__);
+         if($this->db2->next_record()) {
+           $districts[$i]['presidency'] = $this->db2->f('presidency');
+         }
+         $i++;
+       }
+      
+      // APPOINTMENT TABLE
+      $district = 1;
+      $date_width=250; $time_width=100; $indiv_width=200; $location_width=100;
+      $appt_table_width=$date_width + $time_width + $indiv_width + $location_width;
+      $appt_header_row = "<th width=$date_width><font size=-2>Date</th>";
+      $appt_header_row.= "<th width=$time_width><font size=-2>Time</th>";      
+      $appt_header_row.= "<th width=$indiv_width><font size=-2>Individual</th>";
+      $appt_header_row.= "<th width=$location_width><font size=-2>Location</th>";
+      $appt_table_data = ""; 
+
+      $total_comps=0; $comps_with_quarterly_int=0;
+      
+      // Display a scheduling table for each district
+      for ($d=0; $d < count($districts); $d++) {
+      $table_data=""; $appt_table_data="";
+      $this->t->set_var('district_number',$districts[$d]['district']);
+      $this->t->set_var('district_name',$districts[$d]['name']);       
+      $supervisor = $districts[$d]['supervisor'];
+      $supervisor_array = explode(",", $supervisor);
+      $supervisor_last_name = $supervisor_array[0];
+      $sql = "SELECT * FROM tc_indiv where indiv='$supervisor'";
+      $this->db2->query($sql,__LINE__,__FILE__);
+      if($this->db2->next_record()) {
+       $indiv_id = $this->db2->f('indiv_id');
+      }
+      $sql = "SELECT * FROM tc_parent where indiv_id='$indiv_id'";
+      $this->db2->query($sql,__LINE__,__FILE__);
+      if($this->db2->next_record()) {
+       $supervisor_address = $this->db2->f('address');
+      }
+      $location = "$supervisor_last_name"." home ($supervisor_address)";
+      $table_title = "District ".$districts[$d]['district'].": ".$districts[$d]['name'].": All Individuals with Interviews Not Completed";
+      $appt_table_title = "District ".$districts[$d]['district'].": ".$districts[$d]['name'].": Interview Appointment Slots";
+      $this->t->set_var('table_title',$table_title);
+      $this->t->set_var('appt_table_title',$appt_table_title);
+      
+      // query the database for all the appointments
+      $sql = "SELECT * FROM tc_appointment where presidency=".$districts[$d]['presidency']." and date>=CURDATE() ORDER BY date ASC, time ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+       
+      while ($this->db->next_record())
+       {
+         $appointment = $this->db->f('appointment');
+         $indiv = $this->db->f('indiv');
+         $location = $this->db->f('location');
+         if(($location == "") && ($indiv > 0)) { $location = "$supervisor_last_name"." home ($supervisor_address)"; }
+         
+         $date = $this->db->f('date');
+         $date_array = explode("-",$date);
+         $year = $date_array[0]; $month = $date_array[1]; $day = $date_array[2];
+         $day_string = date("l d-M-Y", mktime(0,0,0,$month,$day,$year));
+         
+         $time = $this->db->f('time');
+         $time_array = explode(":",$time);
+         $time_string = date("g:i a", mktime($time_array[0], $time_array[1], $time_array[2]));
+         
+         $appt_table_data.= "<tr bgcolor=". $this->t->get_var('tr_color') .">";
+         $appt_table_data.= "<td align=center>$day_string</td>";
+         $appt_table_data.= "<td align=center>$time_string</td>";
+
+         $appt_table_data.= '<td align=center><select name=appt_notes['.$appointment.'][indiv]>';
+         $appt_table_data.= '<option value=0></option>';
+         for ($i=0; $i < count($indiv_id_data); $i++) {
+           $id = $indiv_id_data[$i];
+           $name = $indiv_name_data[$i];
+           if($indiv_id_data[$i] == $indiv) { $selected[$id] = 'selected="selected"'; } else { $selected[$id] = ''; }
+           $appt_table_data.= '<option value='.$id.' '.$selected[$id].'>'.$name.'</option>';
+         }
+         $appt_table_data.='</select></td>';
+
+         $appt_table_data.= '<td align=center><input type=text size="35" maxlength="120" ';
+         $appt_table_data.= 'name="appt_notes['.$appointment.'][location]" value="'.$location.'">';
+         
+         $appt_table_data.= '<input type=hidden name="appt_notes['.$appointment.'][appointment]" value="'.$appointment.'">';
+         $appt_table_data.= '<input type=hidden name="appt_notes['.$appointment.'][supervisor]" value="'.$supervisor.'">';
+         
+         $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
+         $this->t->set_var('tr_color',$tr_color);
+       }
+
+      $this->t->set_var('appt_table_data',$appt_table_data);
+      $this->t->set_var('appt_header_row',$appt_header_row);
+      $this->t->set_var('appt_table_width',$appt_table_width);
+
+      // INTERVIEW SCHEDULING TABLE
+      
+      // Select all the unique companionship numbers for this district
+      $sql = "SELECT distinct companionship FROM tc_companionship where valid=1 and district=". $districts[$d]['district'];
+      $this->db->query($sql,__LINE__,__FILE__);
+      $j=0; $unique_companionships = '';
+      while ($this->db->next_record())
+       {
+         $unique_companionships[$j]['companionship'] = $this->db->f('companionship');
+         $j++;
+       }
+
+      $i=0;
+      for ($j=0; $j < count($unique_companionships); $j++) {
+       // Select all the companions from each companionship
+       $sql = "SELECT * FROM tc_companionship where valid=1 and ".
+          "companionship=". $unique_companionships[$j]['companionship'];
+       $this->db->query($sql,__LINE__,__FILE__);
+       $k=0; $int_completed=0;
+       $comp = $unique_companionships[$j]['companionship'];
+       $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
+       $this->t->set_var('tr_color',$tr_color);
+       $total_comps++;
+       while ($this->db->next_record())
+           {         
+             // Get this companions information
+             $indiv_id = $this->db->f('indiv');
+             $aaronic_id = $this->db->f('aaronic');
+            
+             $sql = "SELECT * FROM tc_indiv where indiv=$indiv_id";
+             $this->db2->query($sql,__LINE__,__FILE__);        
+             if($this->db2->next_record())
+               {
+                 $indiv_id = $this->db2->f('indiv');
+                 $indiv_name = $this->db2->f('name');
+                 $indiv_phone[$indiv_id] = $this->db2->f('phone');
+                 $indiv_int_pri[$indiv_id] = $this->db2->f('int_pri');
+                 $indiv_int_notes[$indiv_id] = $this->db2->f('int_notes');
+                 $indiv_aaronic = 0;
+               }
+             else {
+               $sql = "SELECT * FROM tc_aaronic where aaronic=$aaronic_id";
+               $this->db2->query($sql,__LINE__,__FILE__);
+               if($this->db2->next_record())
+                 {
+                   $indiv_id = $this->db2->f('aaronic');
+                   $indiv_name = $this->db2->f('name');
+                   $indiv_phone[$indiv_id] = $this->db2->f('phone');
+                   $indiv_aaronic = 1;
+                 }
+             }
+
+             $id = $indiv_id;
+             $name = $indiv_name;
+             $phone = $indiv_phone[$id];
+             $int_pri = $indiv_int_pri[$id];
+             $int_notes = $indiv_int_notes[$id];
+             $aaronic = $indiv_aaronic;
+             
+             // If the companionship has already had its quarterly interview,
+             // Skip the other companion in the companionship.
+             if($int_completed == 1) {
+               $completed_data.= "<tr bgcolor=". $this->t->get_var('tr_color2') ."><td title=\"$phone\"><a href=$link>$name</a></td>";
+               $completed_data.= "<td align=center>$phone</td>";
+               $completed_data.= "<td align=center><a href=".$link.">$date</a></td>";
+               $completed_data.= "<td align=left>$int_notes</td>";
+               $completed_data.= '</tr>';
+               $tr_color2 = $this->nextmatchs->alternate_row_color($tr_color2);
+               $this->t->set_var('tr_color2',$tr_color2);
+               $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
+               $this->t->set_var('tr_color',$tr_color);
+               continue;
+             }
+             
+             // If this companionship has had a hometeaching interview this quarter, don't show them on the schedule list
+             $sql = "SELECT * FROM tc_interview WHERE date >= '$quarter_start' AND date < '$quarter_end' ".
+                "AND indiv=" . $id;
+             $this->db2->query($sql,__LINE__,__FILE__);
+             
+             if(!$this->db2->next_record()) {
+               $sql = "SELECT * FROM tc_interview WHERE indiv=" . $id . " ORDER BY date DESC";
+               $this->db3->query($sql,__LINE__,__FILE__);
+               if($this->db3->next_record()) { $date = $this->db3->f('date'); } else { $date = ""; }
+               $link_data['menuaction'] = 'tc.tc.int_update';
+               $link_data['indiv'] = $id;
+               $link_data['aaronic'] = 0;
+               $link_data['name'] = $name;
+               $link_data['interview'] = '';
+               $link_data['action'] = 'add';
+               $link_data['interviewer'] = $districts[$d]['supervisor'];
+               $link = $GLOBALS['phpgw']->link('/tc/index.php',$link_data);
+               $table_data.= "<tr bgcolor=". $this->t->get_var('tr_color') ."><td title=\"$phone\"><a href=$link>$name</a></td>";
+               $table_data.= "<td align=center>$phone</td>";
+               $table_data.= "<td align=center>";
+               if($aaronic == 0) { 
+                 $table_data.= '<select name=int_notes['.$i.'][pri]>';
+                 foreach(range(0,6) as $num) {
+                   if($num == 0) { $num = 1; } else {$num = $num*5; }
+                   if($int_pri == $num) { $selected[$num] = 'selected="selected"'; } else { $selected[$num] = ''; }
+                   $table_data.= '<option value='.$num.' '.$selected[$num].'>'.$num.'</option>';
+                 }
+                 $table_data.= '</select></td>';
+               }
+               $table_data.= "<td align=center>$date</td>";
+               if($aaronic == 0) { 
+                 $table_data.= '<td><input type=text size="50" maxlength="128" name="int_notes['.$i.'][notes]" value="'.$int_notes.'">';
+               }
+               $table_data.= '<input type=hidden name="int_notes['.$i.'][indiv_id]" value="'.$id.'">';
+               $table_data.= '<input type=hidden name="int_notes['.$i.'][indiv_name]" value="'.$name.'">';
+               $table_data.= '<input type=hidden name="int_notes['.$i.'][aaronic]" value="'.$aaronic.'">';
+               $table_data.= '</td>';
+               $table_data.= '</tr>'."\n";
+               $i++;
+             } else {
+               $link_data['menuaction'] = 'tc.tc.int_update';
+               $link_data['interviewer'] = $this->db2->f('interviewer');
+               $link_data['indiv'] = $this->db2->f('indiv');
+               $link_data['aaronic'] = $this->db2->f('aaronic');
+               $link_data['name'] = $name;
+               $link_data['interview'] = $this->db2->f('interview');
+               $link_data['action'] = 'view';
+               $link = $GLOBALS['phpgw']->link('/tc/index.php',$link_data);    
+               $comps_with_quarterly_int++;
+               $int_completed=1;
+               $date = $this->db2->f('date');
+               $int_notes = $this->db2->f('notes');
+               if(strlen($int_notes) > 40) { $int_notes = substr($int_notes,0,40) . "..."; }
+               $completed_data.= "<tr bgcolor=". $this->t->get_var('tr_color2') ."><td title=\"$phone\"><a href=$link>$name</a></td>";
+               $completed_data.= "<td align=center>$phone</td>";
+               $completed_data.= "<td align=center><a href=".$link.">$date</a></td>";
+               $completed_data.= "<td align=left>$int_notes</td>";
+               $completed_data.= '</tr>';
+             }
+           }
+      }
+       
+      $name_width=175; $phone_width=100; $date_width=100; $notes_width=300;
+      $completed_table_width=$name_width + $phone_width + $date_width + $notes_width;
+      $completed_header_row = "<th width=$name_width><font size=-2>Individual Name</th>";
+      $completed_header_row.= "<th width=$phone_width><font size=-2>Phone</th>";      
+      $completed_header_row.= "<th width=$date_width><font size=-2>Date</th>";
+      $completed_header_row.= "<th width=$notes_width><font size=-2>Interview Notes</th>";
+            
+      $this->t->set_var('table_width',$table_width);
+      $this->t->set_var('header_row',$header_row);
+      $this->t->set_var('table_data',$table_data);
+      $this->t->set_var('completed_header_row',$completed_header_row);
+      $this->t->set_var('completed_table_width',$completed_table_width);
+      $this->t->set_var('completed',$completed_data);
+      $this->t->fp('indivlist','indiv_list',True);
+
+      } // End for each district loop
+
+      
+      $indivs_width=300; $totals_width=100;
+      $totals_table_width=$indivs_width + $totals_width;
+      $totals_header_row = "<th width=$indivs_width><font size=-2>Individuals</th>";
+      $totals_header_row.= "<th width=$totals_width><font size=-2>$year</th>";
+      $totals_data.= "<tr bgcolor=". $this->t->get_var('tr_color') .">";
+      $totals_data.= "<td align=left><font size=-2><b>Total Companionships with interviews completed:</b></font></td>";
+      $totals_data.= "<td align=center><font size=-2><b>$comps_with_quarterly_int / $total_comps</b></font></td>";
+      $percent = ceil(($comps_with_quarterly_int / $total_comps)*100);
+      $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
+      $this->t->set_var('tr_color',$tr_color);
+      $totals_data.= "<tr bgcolor=". $this->t->get_var('tr_color') .">";
+      $totals_data.= "<td align=left><font size=-2><b>Percentage:</b></font></td>";
+      $totals_data.= "<td align=center><font size=-2><b>$percent%</b></font></td>";
+      $totals_data.= "</tr>";
+
+      $this->t->set_var('totals',$totals_data);
+      $this->t->set_var('totals_header_row',$totals_header_row);
+      $this->t->set_var('totals_table_width',$totals_table_width);
+      
+      $this->t->pfp('out','int_sched_t');
+      $this->save_sessiondata(); 
+      
+    }
+  
+  function vis_sched()
+    {
+      $this->t->set_file(array('vis_sched_t' => 'vis_sched.tpl'));
+      $this->t->set_block('vis_sched_t','family_list','familylist');
+      $this->t->set_block('vis_sched_t','appt_list','apptlist');
+      $action = get_var('action',array('GET','POST'));
+
+      $this->t->set_var('lang_save','Save Appt / Pri / Notes');
+      $this->t->set_var('lang_reset','Clear Changes');
+      
+      $this->t->set_var('vis_link',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.vis_view'));
+      $this->t->set_var('vis_link_title','View Yearly Visits');
+      
+      $this->t->set_var('schedule_vis_link',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.vis_sched'));
+      $this->t->set_var('schedule_vis_link_title','Schedule Yearly Visits');
+
+      $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.vis_sched&action=save'));
+      $this->t->set_var('title','Presidency Yearly Visit Scheduler');
+
+      $family_width=500; $phone_width=40; $pri_width=10; $notes_width=128; $visit_date_width=20;
+      $table_width=$family_width + $phone_width + $pri_width + $notes_width + $visit_date_width;
+      $header_row = "<th width=$family_width><font size=-2>Family Name</th>";
+      $header_row.= "<th width=$phone_width><font size=-2>Phone</th>";
+      $header_row.= "<th width=$pri_width><font size=-2>Priority</th>";
+      $header_row.= "<th width=$visit_date_width><font size=-2>Last Visit</th>";
+      $header_row.= "<th width=$notes_width><font size=-2>Scheduling Notes</th>";
+      $table_data=""; $completed_data=""; $totals_data="";
+
+      $year = date('Y');
+
+      // create the family id -> family name mapping
+      $sql = "SELECT * FROM tc_family where valid=1 and indiv_id != 0 ORDER BY name ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      $family_id = NULL;
+      while ($this->db->next_record())
+       {
+         $family_id[$i] = $this->db->f('family');
+         $family_name[$i] = $this->db->f('name');
+         $familyid2name[$family_id[$i]] = $family_name[$i];
+         $sql = "SELECT * FROM tc_parent where family='$family_id[$i]'";
+         $this->db2->query($sql,__LINE__,__FILE__);
+         if($this->db2->next_record()) {
+           $familyid2address[$family_id[$i]] = $this->db2->f('address');
+         }
+         $i++;
+       }
+      array_multisort($family_name, $family_id);
+
+      if($action == 'save')
+       {
+         // Save any changes made to the appointment table
+         $new_data = get_var('appt_notes',array('POST'));
+         if($new_data != "") { 
+           foreach ($new_data as $entry)
+             {
+               $family = $entry['family'];
+               $appointment = $entry['appointment'];
+               $location = $entry['location'];
+               if($location == "") {
+                 $family_name_array = explode(",", $familyid2name[$family]);
+                 $family_last_name = $family_name_array[0];
+                 $family_address = $familyid2address[$family];
+                 $location = "$family_last_name"." home ($family_address)";
+               }
+               if($family == 0) { $location = ""; }
+               
+               //Only perform a database update if we have made a change to this appointment
+               $sql = "SELECT * FROM tc_appointment where appointment='$appointment' and family='$family' and location='$location'";
+               $this->db->query($sql,__LINE__,__FILE__);
+               if(!$this->db->next_record()) {
+                 // Perform database save actions here
+                 $this->db->query("UPDATE tc_appointment set " .
+                                  " family='" . $family . "'" .
+                                  ",location='" . $location . "'" .
+                                  " WHERE appointment=" . $appointment,__LINE__,__FILE__);
+                 
+                 // Email the appointment
+                 $this->email_appt($appointment);
+               }
+             }
+         }
+         
+         // Save any changes made to the visit notes table
+         $new_data = get_var('vis_notes',array('POST'));
+         foreach ($new_data as $entry)
+          {
+            $visit_notes = $entry['notes'];
+            $family = $entry['family_id'];
+            $visit_pri = $entry['pri'];
+            
+            // Perform database save actions here
+            $this->db->query("UPDATE tc_family set " .
+                             " visit_notes='" . $visit_notes . "'" .
+                             ",visit_pri='" . $visit_pri . "'" .
+                             " WHERE family=" . $family,__LINE__,__FILE__);
+            
+          }
+
+         $take_me_to_url = $GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.vis_sched');
+         //Header('Location: ' . $take_me_to_url);
+       }
+
+      // APPOINTMENT TABLE
+      $date_width=250; $time_width=100; $family_width=250; $location_width=100;
+      $appt_table_width=$date_width + $time_width + $family_width + $location_width;
+      $appt_header_row = "<th width=$date_width><font size=-2>Date</th>";
+      $appt_header_row.= "<th width=$time_width><font size=-2>Time</th>";      
+      $appt_header_row.= "<th width=$family_width><font size=-2>Family</th>";
+      $appt_header_row.= "<th width=$location_width><font size=-2>Location</th>";
+      $appt_table_data = ""; 
+
+      // Find out what the EQ Presidency ID is
+      $sql = "SELECT * FROM tc_presidency where eqpres=1 and valid=1";
+      $this->db->query($sql,__LINE__,__FILE__);
+      if($this->db->next_record()) {
+       $presidency_name = $this->db->f('name');
+       $presidency_id = $this->db->f('presidency');
+      } else {
+       print "<hr><font color=red><h3>-E- Unable to locate Presidency in tc_presidency table</h3></font></hr>";
+       return;
+      }
+            
+      // query the database for all the appointments
+      $sql = "SELECT * FROM tc_appointment where presidency=$presidency_id and date>=CURDATE() ORDER BY date ASC, time ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+
+      while ($this->db->next_record())
+       {
+         $appointment = $this->db->f('appointment');
+         $family = $this->db->f('family');
+         $location = $this->db->f('location');
+         $family_name_array = explode(",", $familyid2name[$family]);
+         $family_last_name = $family_name_array[0];
+         $family_address = $familyid2address[$family];
+         if(($location == "") && ($family > 0)) { $location = "$family_last_name"." home ($family_address)"; }
+                       
+         $date = $this->db->f('date');
+         $date_array = explode("-",$date);
+         $year = $date_array[0]; $month = $date_array[1]; $day = $date_array[2];
+         $day_string = date("l d-M-Y", mktime(0,0,0,$month,$day,$year));
+         
+         $time = $this->db->f('time');
+         $time_array = explode(":",$time);
+         $time_string = date("g:i a", mktime($time_array[0], $time_array[1], $time_array[2]));
+         
+         $appt_table_data.= "<tr bgcolor=". $this->t->get_var('tr_color') .">";
+         $appt_table_data.= "<td align=center>$day_string</td>";
+         $appt_table_data.= "<td align=center>$time_string</td>";
+
+         $appt_table_data.= '<td align=center><select name=appt_notes['.$appointment.'][family]>';
+         $appt_table_data.= '<option value=0></option>';
+         for ($i=0; $i < count($family_id); $i++) {
+           $id = $family_id[$i];
+           $name = $family_name[$i];
+           if($family_id[$i] == $family) { $selected[$id] = 'selected="selected"'; } else { $selected[$id] = ''; }
+           $appt_table_data.= '<option value='.$id.' '.$selected[$id].'>'.$name.' Family</option>';
+         }
+         $appt_table_data.='</select></td>';
+
+         $appt_table_data.= '<td align=center><input type=text size="35" maxlength="120" ';
+         $appt_table_data.= 'name="appt_notes['.$appointment.'][location]" value="'.$location.'">';
+
+         $appt_table_data.= '<input type=hidden name="appt_notes['.$appointment.'][appointment]" value="'.$appointment.'">';
+         
+         $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
+         $this->t->set_var('tr_color',$tr_color);
+       }
+
+      $this->t->set_var('appt_table_data',$appt_table_data);
+      $this->t->set_var('appt_header_row',$appt_header_row);
+      $this->t->set_var('appt_table_width',$appt_table_width);
+
+      
+      // VISIT SCHEDULING TABLE
+      $sql = "SELECT * FROM tc_family where valid=1 and indiv_id != 0 ORDER BY visit_pri ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+
+      $total_families=0; $families_with_yearly_visit=0;
+      
+      $i=0; 
+      $family_id = NULL;
+      $family_name = NULL;
+      $family_phone = NULL;
+      $family_visit_pri = NULL;
+      $family_visit_notes = NULL;
+      while ($this->db->next_record())
+       {
+         $family_id[$i] = $this->db->f('family');
+         $family_name[$i] = $this->db->f('name');
+         $family_phone[$family_id[$i]] = $family_id[$i] . " ERROR";
+         $family_visit_pri[$family_id[$i]] = $this->db->f('visit_pri');
+         $family_visit_notes[$family_id[$i]] = $this->db->f('visit_notes');
+         $i++;
+         $total_families++;
+       }
+
+      $sql = "SELECT * FROM tc_parent where valid=1";
+      $this->db->query($sql,__LINE__,__FILE__);
+      while ($this->db->next_record())
+       {
+         $family = $this->db->f('family');
+         $phone = $this->db->f('phone');
+         $family_phone[$family] = $phone;
+       }
+      
+      $max = count($family_id);
+      
+      for($i=0; $i < $max; $i++) {
+          $id = $family_id[$i];
+          $name = $family_name[$i];
+         $phone = $family_phone[$id];
+         $vis_pri = $family_visit_pri[$id];
+         $vis_notes = $family_visit_notes[$id];
+
+         // If this family has had a yearly visit this year, don't show them on the schedule list
+         $year_start = $year - 1 . "-12-31"; $year_end = $year + 1 . "-01-01";
+         $sql = "SELECT * FROM tc_visit WHERE date > '$year_start' AND date < '$year_end' ".
+            "AND family=" . $id . " AND companionship=0";
+         $this->db2->query($sql,__LINE__,__FILE__);
+         
+         if(!$this->db2->next_record()) {
+           $sql = "SELECT * FROM tc_visit WHERE family=" . $id . " AND companionship=0 ORDER BY date DESC";
+           $this->db->query($sql,__LINE__,__FILE__);
+           if($this->db->next_record()) { $date = $this->db->f('date'); } else { $date = ""; }
+           $link_data['menuaction'] = 'tc.tc.vis_update';
+           $link_data['visit'] = '';
+           $link_data['family'] = $id;
+           $link_data['name'] = $name;
+           $link_data['action'] = 'add';
+           $link = $GLOBALS['phpgw']->link('/tc/index.php',$link_data);
+           $table_data.= "<tr bgcolor=". $this->t->get_var('tr_color') ."><td title=\"$phone\"><a href=$link>$name Family</a></td>";
+           $table_data.= "<td align=center>$phone</td>";
+           $table_data.= "<td align=center>";
+           $table_data.= '<select name=vis_notes['.$i.'][pri]>';
+           foreach(range(0,6) as $num) {
+             if($num == 0) { $num = 1; } else {$num = $num*5; }
+             if($vis_pri == $num) { $selected[$num] = 'selected="selected"'; } else { $selected[$num] = ''; }
+             $table_data.= '<option value='.$num.' '.$selected[$num].'>'.$num.'</option>';
+           }
+           $table_data.= '</select></td>';
+           $table_data.= "<td align=center>$date</td>";
+           $table_data.= '<td><input type=text size="50" maxlength="128" name="vis_notes['.$i.'][notes]" value="'.$vis_notes.'">';
+           $table_data.= '<input type=hidden name="vis_notes['.$i.'][family_id]" value="'.$id.'">';
+           $table_data.= '<input type=hidden name="vis_notes['.$i.'][family_name]" value="'.$name.'">';
+           $table_data.= '</td>';
+           $table_data.= '</tr>';
+           $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
+           $this->t->set_var('tr_color',$tr_color);
+         } else {
+           $link_data['menuaction'] = 'tc.tc.vis_update';
+           $link_data['visit'] = $this->db2->f('visit');
+           $link_data['family'] = $this->db2->f('family');
+           $link_data['name'] = $name;
+           $link_data['date'] = $this->db2->f('date');
+           $link_data['action'] = 'view';
+           $link = $GLOBALS['phpgw']->link('/tc/index.php',$link_data);    
+           $families_with_yearly_visit++;
+           $date = $this->db2->f('date');
+           $vis_notes = $this->db2->f('notes');
+           if(strlen($vis_notes) > 40) { $vis_notes = stripslashes(substr($vis_notes,0,40) . "..."); }
+           $completed_data.= "<tr bgcolor=". $this->t->get_var('tr_color2') ."><td title=\"$phone\"><a href=$link>$name Family</a></td>";
+           $completed_data.= "<td align=center>$phone</td>";
+           $completed_data.= "<td align=center><a href=".$link.">$date</a></td>";
+           $completed_data.= "<td align=left>$vis_notes</td>";
+           $completed_data.= '</tr>';
+           $tr_color2 = $this->nextmatchs->alternate_row_color($tr_color2);
+           $this->t->set_var('tr_color2',$tr_color2);
+         }
+      }
+
+      $name_width=190; $phone_width=100; $date_width=100; $notes_width=300;
+      $completed_table_width=$name_width + $phone_width + $date_width + $notes_width;
+      $completed_header_row = "<th width=$name_width><font size=-2>Family Name</th>";
+      $completed_header_row.= "<th width=$phone_width><font size=-2>Phone</th>";      
+      $completed_header_row.= "<th width=$date_width><font size=-2>Date</th>";
+      $completed_header_row.= "<th width=$notes_width><font size=-2>Visit Notes</th>";
+      
+      $family_width=300; $totals_width=100;
+      $totals_table_width=$family_width + $totals_width;
+      $totals_header_row = "<th width=$family_width><font size=-2>Families</th>";
+      $totals_header_row.= "<th width=$totals_width><font size=-2>$year</th>";
+      $totals_data.= "<tr bgcolor=". $this->t->get_var('tr_color') .">";
+      $totals_data.= "<td align=left><font size=-2><b>Total Families with yearly Visits completed:</b></font></td>";
+      $totals_data.= "<td align=center><font size=-2><b>$families_with_yearly_visit / $total_families</b></font></td>";
+      $percent = ceil(($families_with_yearly_visit / $total_families)*100);
+      $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
+      $this->t->set_var('tr_color',$tr_color);
+      $totals_data.= "<tr bgcolor=". $this->t->get_var('tr_color') .">";
+      $totals_data.= "<td align=left><font size=-2><b>Percentage:</b></font></td>";
+      $totals_data.= "<td align=center><font size=-2><b>$percent%</b></font></td>";
+      $totals_data.= "</tr>";
+      
+      $this->t->set_var('table_width',$table_width);
+      $this->t->set_var('header_row',$header_row);
+      $this->t->set_var('table_data',$table_data);
+      $this->t->set_var('totals_header_row',$totals_header_row);
+      $this->t->set_var('totals_table_width',$totals_table_width);
+      $this->t->set_var('completed_header_row',$completed_header_row);
+      $this->t->set_var('completed_table_width',$completed_table_width);
+      $this->t->set_var('completed',$completed_data);
+      $this->t->set_var('totals',$totals_data);
+      $this->t->fp('familylist','family_list',True);
+      $this->t->fp('apptlist','appt_list',True);
+      
+      $this->t->pfp('out','vis_sched_t');
+      $this->save_sessiondata(); 
+      
+    }
+  
+  function ppi_view()
+    {
+      $this->t->set_file(array('ppi_view_t' => 'ppi_view.tpl'));
+      $this->t->set_block('ppi_view_t','district_list','list');
+
+      $this->t->set_var('linkurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.ppi_view'));
+      $num_months = get_var('num_months',array('GET','POST'));
+      if($num_months == '') { $num_months = $this->default_ppi_num_months; }
+      $this->t->set_var('num_months',$num_months);
+      if($num_months == 1) { $this->t->set_var('lang_num_months','Month of History'); }
+      else {  $this->t->set_var('lang_num_months','Months of History'); }
+      $this->t->set_var('lang_filter','Filter');
+      $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.ppi_view'));
+            
+      $this->t->set_var('ppi_link',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.ppi_view'));
+      $this->t->set_var('ppi_link_title','Yearly PPIs'); 
+
+      $this->t->set_var('schedule_ppi_link',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.ppi_sched'));
+      $this->t->set_var('schedule_ppi_link_title','Schedule Yearly PPIs');
+      
+      $this->t->set_var('title','Yearly PPIs');
+      $num_months = get_var('num_months',array('GET','POST'));
+      if($num_months == '') { $num_months = $this->default_ppi_num_years; }
+      $this->t->set_var('num_months',$num_months);
+      if($num_months == 1) { $this->t->set_var('lang_num_months','Year of History'); }
+      else { $this->t->set_var('lang_num_months','Years of History'); }        
+
+      $sql = "SELECT * FROM tc_presidency where president=1 and valid=1";
+      $this->db->query($sql,__LINE__,__FILE__);
+      if($this->db->next_record()) {
+       $president_name = $this->db->f('name');
+       $interviewer = $this->db->f('indiv');
+       $interview_type = 'ppi';
+      } else {
+       print "<hr><font color=red><h3>-E- Unable to locate President in tc_presidency table</h3></font></hr>";
+       return;
+      }
+      $this->t->set_var('district_number','*');
+      $this->t->set_var('district_name',$president_name);
+
+      $sql = "SELECT * FROM tc_indiv where valid=1 ORDER BY indiv ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      while ($this->db->next_record())
+       {
+         $indiv_id[$i] = $this->db->f('indiv');
+         $indiv_name[$i] = $this->db->f('name');
+         $indiv_phone[$indiv_id[$i]] = $this->db->f('phone');
+         $indiv_ppi_pri[$indiv_id[$i]] = $this->db->f('ppi_pri');
+         $indiv_ppi_notes[$indiv_id[$i]] = $this->db->f('ppi_notes');
+         $i++;
+       }
+      $total_indivs=$i;
+      array_multisort($indiv_name, $indiv_id);
+      //var_dump($indiv_name); print "<br><br>"; var_dump($indiv_id);
+      
+      $header_row="<th width=$comp_width><font size=-2>Individual Name</th>";
+       
+      $indiv_width=400; $ppi_width=75; $table_width=$indiv_width + $num_months*$ppi_width;
+      $table_data="";
+      for($m=$num_months; $m >= 0; $m--) {
+       $year = date('Y') - $m;
+       $header_row .= "<th width=150><font size=-2>$year</th>"; 
+       $ppis[$m] = 0;
+      }
+      
+      for ($j=0; $j < count($indiv_id); $j++) {
+       $id = $indiv_id[$j];
+       $name = $indiv_name[$j];
+       $phone = $indiv_phone[$id];
+       
+       $link_data['menuaction'] = 'tc.tc.ppi_update';
+       $link_data['interviewer'] = $interviewer;
+       $link_data['indiv'] = $id;
+       $link_data['name'] = $name;
+       $link_data['interview'] = '';
+       $link_data['interview_type'] = $interview_type;
+       $link_data['action'] = 'add';
+       $link = $GLOBALS['phpgw']->link('/tc/index.php',$link_data);
+       $this->nextmatchs->template_alternate_row_color(&$this->t);
+       $table_data.= "<tr bgcolor=". $this->t->get_var('tr_color') ."><td title=\"$phone\"><a href=$link>$name</a></td>";
+
+       // Find out how many times PPIs were performed in the past $num_months for this individual
+       for($m=$num_months; $m >= 0; $m--) {
+         $year = date('Y') - $m;
+         $year_start = $year - 1 . "-12-31"; $year_end = $year + 1 . "-01-01";
+         $sql = "SELECT * FROM tc_interview WHERE date > '$year_start' AND date < '$year_end' ".
+            "AND indiv=" . $id . " AND interview_type='ppi'";
+         $this->db2->query($sql,__LINE__,__FILE__);
+                 
+         if(!$total_ppis[$m]) { $total_ppis[$m] = 0; }
+         if($this->db2->next_record()) {
+           $ppis[$m]++; $total_ppis[$m]++; $ppi_recorded[$companionship][$m]=1;
+           $link_data['menuaction'] = 'tc.tc.ppi_update';
+           $link_data['companionship'] = $companionship;
+           $link_data['interviewer'] = $this->db2->f('interviewer');
+           $link_data['indiv'] = $id;
+           $link_data['name'] = $name;
+           $link_data['interview'] = $this->db2->f('interview');
+           $link_data['interview_type'] = $interview_type;
+           $link_data['action'] = 'view';
+           $date = $this->db2->f('date');
+           $date_array = explode("-",$date);
+           $month = $date_array[1];
+           $day   = $date_array[2];
+           $link = $GLOBALS['phpgw']->link('/tc/index.php',$link_data);
+           $table_data .= '<td align=center><a href='.$link.'><img src="images/checkmark.gif">&nbsp;'.$month.'-'.$day.'</a></td>';
+         }
+         else { $table_data .= "<td>&nbsp;</td>"; }
+       }
+       $table_data .= "</tr>\n"; 
+      }
+      $table_data .= "<tr><td colspan=20><hr></td></tr>";
+      
+      $stat_data = "<tr><td><b><font size=-2>$total_indivs Individuals<br>PPI Totals:</font></b></td>";
+      for($m=$num_months; $m >=0; $m--) {
+       $percent = ceil(($ppis[$m] / $total_indivs)*100);
+       $stat_data .= "<td align=center><font size=-2><b>$ppis[$m]<br>$percent%</font></b></td>";
+      }
+      $stat_data .= "</tr>";
+      
+      $this->t->set_var('table_width',$table_width);
+      $this->t->set_var('header_row',$header_row);
+      $this->t->set_var('table_data',$table_data);
+      $this->t->set_var('stat_data',$stat_data);
+      $this->t->pfp('out','ppi_view_t');
+      $this->save_sessiondata(); 
+    }
+
+  function ppi_update()
+    {
+      $this->t->set_file(array('form' => 'ppi_update.tpl'));
+      $this->t->set_block('form','interviewer_list','int_list');
+      $this->t->set_block('form','add','addhandle');
+      $this->t->set_block('form','edit','edithandle');
+      
+      $this->t->set_var('done_action',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.ppi_view'));
+      $this->t->set_var('readonly','');
+      $this->t->set_var('disabled','');
+      
+      $action = get_var('action',array('GET','POST'));
+      $companionship = get_var('companionship',array('GET','POST'));
+      $interviewer = get_var('interviewer',array('GET','POST'));      
+      $name = get_var('name',array('GET','POST'));
+      $interview = get_var('interview',array('GET','POST'));
+      $indiv = get_var('indiv',array('GET','POST'));
+      $aaronic = get_var('aaronic',array('GET','POST'));
+      $date = get_var('date',array('GET','POST'));
+      $notes = get_var('notes',array('GET','POST'));
+      $interview_type = get_var('interview_type',array('GET','POST'));
+     
+      $sql = "SELECT * FROM tc_presidency where valid=1 and (president=1 or counselor=1 or secretary=1)";
+      $this->db2->query($sql,__LINE__,__FILE__);
+      while ($this->db2->next_record())
+      {
+        $indiv = $this->db2->f('indiv');
+       $interviewer_name = $this->db2->f('name');
+        if($indiv == $interviewer) { 
+          $this->t->set_var('interviewer',$interviewer . ' selected');
+        } else {
+         $this->t->set_var('interviewer',$interviewer);
+       }
+        $this->t->set_var('interviewer_name',$interviewer_name);
+        $this->t->set_var('interview_type_checked','');
+        $this->t->fp('int_list','interviewer_list',True);
+      }
+    
+      if($action == 'save')
+       {
+         $notes = get_var('notes',array('POST'));
+         $this->db->query("UPDATE tc_interview set " .
+                    "   interview='" . $interview . "'" .
+                   ", interviewer='" . $interviewer . "'" .
+                         ", indiv='" . $indiv . "'" .
+                       ", aaronic='" . $aaronic . "'" .
+                          ", date='" . $date . "'" .
+                         ", notes='" . $notes . "'" .
+                ", interview_type='" . $interview_type . "'" .
+                          " WHERE interview=" . $interview,__LINE__,__FILE__);
+         $this->ppi_view();
+         return false;
+       }
+
+      if($action == 'insert')
+       {
+         $notes = get_var('notes',array('POST'));
+         $this->db->query("INSERT INTO tc_interview (interviewer,indiv,aaronic,date,notes,interview_type) "
+                          . "VALUES ('" . $interviewer . "','" . $indiv . "','" . $aaronic . "','"
+                          . $date . "','" . $notes . "','" . $interview_type  ."')",__LINE__,__FILE__);
+         $this->ppi_view();
+         return false;
+       }
+      
+      if($action == 'add')
+       {
+         $this->t->set_var('cal_date',$this->jscal->input('date','','','','','','',$this->cal_options));
+         $this->t->set_var('interview', '');
+         $this->t->set_var('interviewer', $interviewer);
+         $this->t->set_var('name',$name);
+         $this->t->set_var('indiv',$indiv);
+         $this->t->set_var('date','');
+         $this->t->set_var('notes','');
+         $this->t->set_var('interview_type',$interview_type);
+         $this->t->set_var('interview_type_checked','checked');
+         $this->t->set_var('lang_done','Cancel');
+         $this->t->set_var('lang_action','Adding New PPI');
+         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.ppi_update&interview='
+                                                               . $interview . '&action=' . 'insert'));
+       }
+
+      if($action == 'edit' || $action == 'view')
+       {
+         $sql = "SELECT * FROM tc_interview WHERE interview=".$interview;
+         $this->db->query($sql,__LINE__,__FILE__);
+         $this->db->next_record();
+         $this->t->set_var('interview',$interview);
+         $this->t->set_var('name',$name);
+         $this->t->set_var('interviewer', $this->db->f('interviewer'));
+         $this->t->set_var('indiv',$this->db->f('indiv'));
+         $this->t->set_var('date',$this->db->f('date'));
+         $this->t->set_var('notes',$this->db->f('notes'));
+         $this->t->set_var('interview_type',$this->db->f('interview_type'));
+         if($this->db->f('interview_type') == 1) { $this->t->set_var('interview_type_checked','checked'); }
+       }
+      
+      if($action == 'edit')
+       {
+         $this->t->set_var('cal_date',$this->jscal->input('date',$date,'','','','','',$this->cal_options));
+         $this->t->set_var('lang_done','Cancel');
+         $this->t->set_var('lang_action','Editing PPI');
+         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.ppi_update&interview='
+                                                               . $interview . '&action=' . 'save'));
+       }
+
+      if($action == 'view')
+       {
+         $date = $this->db->f('date');
+         $this->t->set_var('cal_date','<input type=text size="10" maxlength="10" name="date" value="'.$date.'" readonly>');
+         $this->t->set_var('readonly','READONLY');
+         $this->t->set_var('disabled','DISABLED');
+         $this->t->set_var('lang_done','Done');
+         $this->t->set_var('lang_action','Viewing PPI');
+         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.ppi_update&interview='
+                                                               . $interview . '&action=' . 'edit'));
+       }
+      
+      $this->t->set_var('lang_reset','Clear Form');
+      $this->t->set_var('lang_add','Add PPI');
+      $this->t->set_var('lang_save','Save Changes');
+      $this->t->set_var('edithandle','');
+      $this->t->set_var('addhandle','');
+
+      $this->t->pfp('out','form');
+      
+      if($action == 'view') { $this->t->set_var('lang_save','Edit PPI'); }
+      if($action == 'edit' || $action == 'view') { $this->t->pfp('addhandle','edit'); }
+      if($action == 'add') { $this->t->pfp('addhandle','add'); }
+     
+      $this->save_sessiondata(); 
+    }
+
+    function int_view()
+    {
+      $this->t->set_file(array('int_view_t' => 'int_view.tpl'));
+      $this->t->set_block('int_view_t','district_list','list');
+
+      $this->t->set_var('linkurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.int_view'));
+      $num_quarters = get_var('num_quarters',array('GET','POST'));
+      if($num_quarters == '') { $num_quarters = $this->default_int_num_quarters; }
+      $this->t->set_var('num_quarters',$num_quarters);
+      if($num_quarters == 1) { $this->t->set_var('lang_num_quarters','Quarter of History'); }
+      else {  $this->t->set_var('lang_num_quarters','Quarters of History'); }
+      $this->t->set_var('lang_filter','Filter');
+      
+      $this->t->set_var('int_link',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.int_view'));
+      $this->t->set_var('int_link_title','Hometeaching Interviews'); 
+      
+      $this->t->set_var('schedule_int_link',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.int_sched'));
+      $this->t->set_var('schedule_int_link_title','Schedule Hometeaching Interviews');
+      
+      $this->t->set_var('title','Hometeaching Interviews'); 
+
+      $num_months = $num_quarters * 3 - 1;
+      $current_month = $this->current_month;
+      if($current_month >= 1 && $current_month <= 3) { $current_month=3; }
+      else if($current_month >= 4 && $current_month <= 6) { $current_month=6; }
+      else if($current_month >= 7 && $current_month <= 9) { $current_month=9; }
+      else if($current_month >= 10 && $current_month <= 12) { $current_month=12; }
+
+      $sql = "SELECT * FROM tc_district where valid=1 ORDER BY district ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      while ($this->db->next_record())
+       {
+         $districts[$i]['district'] = $this->db->f('district');
+         $districts[$i]['name'] = $this->db->f('name');
+         $districts[$i]['supervisor'] = $this->db->f('supervisor');
+         $i++;
+       }
+
+      $sql = "SELECT * FROM tc_indiv where valid=1 ORDER BY indiv ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      while ($this->db->next_record())
+       {
+         $indiv_id[$i] = $this->db->f('indiv');
+         $indiv_name[$i] = $this->db->f('name');
+         $indiv_phone[$indiv_id[$i]] = $this->db->f('phone');
+         $i++;
+       }
+      array_multisort($indiv_name, $indiv_id);
+      for($i=0; $i < count($indiv_id); $i++) {
+          $id = $indiv_id[$i];
+          $indivs[$id] = $indiv_name[$i];
+      }      
+
+      $sql = "SELECT * FROM tc_aaronic where valid=1 ORDER BY aaronic ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      while ($this->db->next_record())
+       {
+         $aaronic_id = $this->db->f('aaronic');
+         $aaronic[$aaronic_id]['name'] = $this->db->f('name');
+         $aaronic[$aaronic_id]['phone'] = $this->db->f('phone');
+       }
+      
+      $total_companionships = 0;
+      $this->nextmatchs->template_alternate_row_color(&$this->t);
+      for ($i=0; $i < count($districts); $i++) {
+       $this->t->set_var('district_number',$districts[$i]['district']);
+       $this->t->set_var('district_name',$districts[$i]['name']);      
+       $supervisor = $districts[$i]['supervisor'];
+               
+       // Select all the unique companionship numbers for this district
+       $sql = "SELECT distinct companionship FROM tc_companionship where valid=1 and district=". $districts[$i]['district'];
+       $this->db->query($sql,__LINE__,__FILE__);
+       $j=0; $unique_companionships = '';
+       while ($this->db->next_record())
+         {
+           $unique_companionships[$j]['companionship'] = $this->db->f('companionship');
+           $j++;
+         }
+       
+       $comp_width=250; $int_width=75; $table_width=$comp_width + $num_months*$int_width;
+       $table_data=""; $num_companionships = $j; $num_indivs = 0;
+       for($m=$num_months; $m >= 0; $m--) { $ints[$m] = 0; }
+       for ($j=0; $j < count($unique_companionships); $j++) {
+         // Select all the companions in each companionship
+         $sql = "SELECT * FROM tc_companionship where valid=1 and ".
+            "companionship=". $unique_companionships[$j]['companionship'];
+         $this->db->query($sql,__LINE__,__FILE__);
+         $k=0;
+         $comp = $unique_companionships[$j]['companionship'];
+         for($m=$num_months; $m >= 0; $m--) { $int_recorded[$comp][$m] = 0; }
+         while ($this->db->next_record())
+           {
+             // Get this companions information
+             $num_indivs++;
+             $companionship = $this->db->f('companionship');
+             $indiv_id = $this->db->f('indiv');
+             $aaronic_id = $this->db->f('aaronic');
+             if($indiv_id) {
+               $name = $indivs[$indiv_id];
+               $phone = $indiv_phone[$indiv_id];
+             }
+             else if($aaronic_id) {
+               $name = $aaronic[$aaronic_id]['name'];
+               $phone = $aaronic[$aaronic_id]['phone'];
+             }
+             $link_data['menuaction'] = 'tc.tc.int_update';
+             $link_data['companionship'] = $companionship;
+             $link_data['interviewer'] = $supervisor;
+             $link_data['indiv'] = $indiv_id;
+             $link_data['aaronic'] = $aaronic_id;
+             $link_data['name'] = $name;
+             $link_data['interview'] = '';
+             $link_data['action'] = 'add';
+             $link = $GLOBALS['phpgw']->link('/tc/index.php',$link_data);
+             $table_data.= "<tr bgcolor=". $this->t->get_var('tr_color') ."><td title=\"$phone\"><a href=$link>$name</a></td>";
+
+             // Find out how many times Interviews were performed in the past $num_months for this individual
+             $header_row="<th width=$comp_width><font size=-2>Companionship</th>";
+             for($m=$num_months; $m >= 0; $m--) {
+               $month = $current_month - $m;
+               $year = $this->current_year;
+               if($month <= 0) { $remainder = $month; $month = 12 + $remainder; $year=$year-1; }
+               if($month < 10) { $month = "0"."$month"; }
+               $month_start = "$year"."-"."$month"."-"."01";
+               $month_end = "$year"."-"."$month"."-"."31";
+               $month = "$month"."/"."$year";
+               $sql = "SELECT * FROM tc_interview WHERE date >= '$month_start' AND date <= '$month_end' ".
+                  "AND indiv=" . $indiv_id . " AND aaronic=" . $aaronic_id;
+               $this->db2->query($sql,__LINE__,__FILE__);
+               $header_row .= "<th width=$int_width><font size=-2>$month</th>";
+             
+               if(!$total_ints[$m]) { $total_ints[$m] = 0; }
+               if($this->db2->next_record()) {
+                 if(!$int_recorded[$companionship][$m]) {
+                   $ints[$m]++; $total_ints[$m]++; $int_recorded[$companionship][$m]=1;
+                 }
+                 $link_data['menuaction'] = 'tc.tc.int_update';
+                 $link_data['companionship'] = $companionship;
+                 $link_data['interviewer'] = $this->db2->f('interviewer');
+                 $link_data['indiv'] = $indiv_id;
+                 $link_data['aaronic'] = $aaronic_id;
+                 $link_data['name'] = $name;
+                 $link_data['interview'] = $this->db2->f('interview');
+                 $link_data['action'] = 'view';
+                 $date = $this->db2->f('date');
+                 $date_array = explode("-",$date);
+                 $month = $date_array[1];
+                 $day   = $date_array[2];
+                 $link = $GLOBALS['phpgw']->link('/tc/index.php',$link_data);
+                 $table_data .= '<td align=center><a href='.$link.'><img src="images/checkmark.gif">&nbsp;'.$month.'-'.$day.'</a></td>';
+               }
+               else { $table_data .= "<td>&nbsp;</td>"; }
+             }
+             $table_data .= "</tr>"; 
+             $k++;
+           }
+         $table_data .= "<tr><td colspan=20><hr></td></tr>";
+       }
+       $total_companionships += $num_companionships;
+       $stat_data = "<tr><td><b><font size=-2>$num_companionships Companionships<br>Interview Totals:</font></b></td>";
+
+       // Print the hometeaching interview stats
+       for($m=$num_months; $m >=0; $m--) {
+         $month = $current_month - $m;
+         if($month < 0) { $month = 12 + $month; } // Handle going backwards over a year boundary
+         $month_begins = $month % $this->monthly_hometeaching_interview_stats;
+         //print "$month % $this->monthly_hometeaching_interview_stats = $month_begins <br>";
+         if($this->monthly_hometeaching_interview_stats == 1) { $month_begins = 1; }
+         if(($month_begins) == 1) { $total = $ints[$m]; }
+         else { $total += $ints[$m]; }
+         $percent = ceil(($total / $num_companionships)*100);
+         $stat_data .= "<td align=center><font size=-2><b>$total<br>$percent%</font></b></td>";
+       }
+       $stat_data .= "</tr>";
+       
+       $this->t->set_var('table_width',$table_width);
+       $this->t->set_var('header_row',$header_row);
+       $this->t->set_var('table_data',$table_data);
+       $this->t->set_var('stat_data',$stat_data);
+       $this->t->fp('list','district_list',True);
+      }
+
+      // Display the totals
+      $total = 0;
+      $totals = "<tr><td><b><font size=-2>$total_companionships Total Comps<br>Interview Totals:</font></b></td>";
+      for($m=$num_months; $m >=0; $m--) {
+       $month = $current_month - $m;
+       if($month < 0) { $month = 12 + $month; } // Handle going backwards over a year boundary
+       $month_begins = $month % $this->monthly_hometeaching_interview_stats;
+       if($this->monthly_hometeaching_interview_stats == 1) { $month_begins = 1; }
+       if(($month_begins) == 1) { $total = $total_ints[$m]; }
+       else { $total += $total_ints[$m]; }
+       $percent = ceil(($total / $total_companionships)*100);
+       $totals .= "<td align=center><font size=-2><b>$total<br>$percent%</font></b></td>";
+      }
+      $totals .= "</tr>";
+          
+      $this->t->set_var('totals',$totals);
+      $this->t->pfp('out','int_view_t');
+      $this->save_sessiondata(); 
+    }
+
+  function int_update()
+    {
+      $this->t->set_file(array('form' => 'int_update.tpl'));
+      $this->t->set_block('form','interviewer_list','int_list');
+      $this->t->set_block('form','add','addhandle');
+      $this->t->set_block('form','edit','edithandle');
+      
+      $this->t->set_var('done_action',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.int_view'));
+      $this->t->set_var('readonly','');
+      $this->t->set_var('disabled','');
+      $this->t->set_var('interview_type_checked','');
+      
+      $action = get_var('action',array('GET','POST'));
+      $companionship = get_var('companionship',array('GET','POST'));
+      $interviewer = get_var('interviewer',array('GET','POST'));      
+      $name = get_var('name',array('GET','POST'));
+      $interview = get_var('interview',array('GET','POST'));
+      $indiv = get_var('indiv',array('GET','POST'));
+      $aaronic = get_var('aaronic',array('GET','POST'));
+      $date = get_var('date',array('GET','POST'));
+      $notes = get_var('notes',array('GET','POST'));
+      $interview_type = get_var('interview_type',array('GET','POST'));
+
+      $sql = "SELECT * FROM tc_presidency where valid=1 and (president=1 or counselor=1 or secretary=1 or district!=0)";
+      $this->db2->query($sql,__LINE__,__FILE__);
+      while ($this->db2->next_record())
+      {
+        $indiv = $this->db2->f('indiv');
+        $interviewer_name = $this->db2->f('name');
+        if($indiv == $interviewer) {
+          $this->t->set_var('interviewer',$interviewer . ' selected');
+        } else {
+          $this->t->set_var('interviewer',$interviewer);
+        }
+        $this->t->set_var('interviewer_name',$interviewer_name);
+        $this->t->fp('int_list','interviewer_list',True);
+      }
+      
+      if($action == 'save')
+       {
+         $notes = get_var('notes',array('POST'));
+         $this->db->query("UPDATE tc_interview set " .
+                    "   interview='" . $interview . "'" .
+                   ", interviewer='" . $interviewer . "'" .
+                         ", indiv='" . $indiv . "'" .
+                       ", aaronic='" . $aaronic . "'" .
+                          ", date='" . $date . "'" .
+                         ", notes='" . $notes . "'" .
+                ", interview_type='" . $interview_type . "'" .
+                          " WHERE interview=" . $interview,__LINE__,__FILE__);
+         $this->int_view();
+         return false;
+       }
+
+      if($action == 'insert')
+       {
+         $notes = get_var('notes',array('POST'));
+         $this->db->query("INSERT INTO tc_interview (interviewer,indiv,aaronic,date,notes,interview_type) "
+                          . "VALUES ('" . $interviewer . "','" . $indiv . "','" . $aaronic . "','"
+                          . $date . "','" . $notes ."','" . $interview_type . "')",__LINE__,__FILE__);
+         $this->int_view();
+         return false;
+       }
+      
+      if($action == 'add')
+       {
+         $this->t->set_var('cal_date',$this->jscal->input('date','','','','','','',$this->cal_options));
+         $this->t->set_var('interview', '');
+         $this->t->set_var('interviewer', $interviewer);
+         $this->t->set_var('name',$name);
+         $this->t->set_var('indiv',$indiv);
+         $this->t->set_var('aaronic',$aaronic);
+         $this->t->set_var('date','');
+         $this->t->set_var('notes','');
+         $this->t->set_var('lang_done','Cancel');
+         $this->t->set_var('lang_action','Adding New Interview');
+         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.int_update&interview='
+                                                               . $interview . '&action=' . 'insert'));
+       }
+
+      if($action == 'edit' || $action == 'view')
+       {
+         $sql = "SELECT * FROM tc_interview WHERE interview=".$interview;
+         $this->db->query($sql,__LINE__,__FILE__);
+         $this->db->next_record();
+         $this->t->set_var('interview',$interview);
+         $this->t->set_var('name',$name);
+         $this->t->set_var('interviewer', $this->db->f('interviewer'));
+         $this->t->set_var('indiv',$this->db->f('indiv'));
+         $this->t->set_var('aaronic',$this->db->f('aaronic'));
+         $this->t->set_var('date',$this->db->f('date'));
+         $this->t->set_var('notes',$this->db->f('notes'));
+         if($this->db->f('interview_type') == 1) { $this->t->set_var('interview_type_checked','checked'); }
+       }
+      
+      if($action == 'edit')
+       {
+         $this->t->set_var('cal_date',$this->jscal->input('date',$date,'','','','','',$this->cal_options));
+         $this->t->set_var('lang_done','Cancel');
+         $this->t->set_var('lang_action','Editing Interview');
+         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.int_update&interview='
+                                                               . $interview . '&action=' . 'save'));
+       }
+
+      if($action == 'view')
+       {
+         $date = $this->db->f('date');
+         $this->t->set_var('cal_date','<input type=text size="10" maxlength="10" name="date" value="'.$date.'" readonly>');
+         $this->t->set_var('readonly','READONLY');
+         $this->t->set_var('disabled','DISABLED');
+         $this->t->set_var('lang_done','Done');
+         $this->t->set_var('lang_action','Viewing Interview');
+         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.int_update&interview='
+                                                               . $interview . '&action=' . 'edit'));
+       }
+      
+      $this->t->set_var('lang_reset','Clear Form');
+      $this->t->set_var('lang_add','Add Interview');
+      $this->t->set_var('lang_save','Save Changes');
+      $this->t->set_var('edithandle','');
+      $this->t->set_var('addhandle','');
+
+      $this->t->pfp('out','form');
+      
+      if($action == 'view') { $this->t->set_var('lang_save','Edit Interview'); }
+      if($action == 'edit' || $action == 'view') { $this->t->pfp('addhandle','edit'); }
+      if($action == 'add') { $this->t->pfp('addhandle','add'); }
+     
+      $this->save_sessiondata(); 
+    }
+
+  function vis_view()
+    {
+      $this->t->set_file(array('vis_view_t' => 'vis_view.tpl'));
+      $this->t->set_block('vis_view_t','visit_list','list1');
+      $this->t->set_block('vis_view_t','family_list','list2');
+
+      $this->t->set_var('lang_name','Family Name');
+      $this->t->set_var('lang_date','Date');
+
+      $this->t->set_var('vis_link',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.vis_view'));
+      $this->t->set_var('vis_link_title','View Yearly Visits');
+      
+      $this->t->set_var('schedule_vis_link',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.vis_sched'));
+      $this->t->set_var('schedule_vis_link_title','Schedule Yearly Visits');
+
+      $this->t->set_var('linkurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.vis_view'));
+      $num_years = get_var('num_years',array('GET','POST'));
+      if($num_years == '') { $num_years = $this->default_vis_num_years; }
+      $this->t->set_var('num_years',$num_years);
+      if($num_years == 1) { $this->t->set_var('lang_num_years','Year of History'); }
+      else {  $this->t->set_var('lang_num_years','Years of History'); }
+      $this->t->set_var('lang_filter','Filter');
+      
+      $year = date('Y') - $num_years + 1;
+      $year_start = $year - 1 . "-12-31"; $year_end = $year + 1 . "-01-01";
+      
+      $sql = "SELECT * FROM tc_visit WHERE companionship=0 and date > '$year_start' ORDER BY date DESC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $total_records = $this->db->num_rows();
+
+      $i = 0;
+      while ($this->db->next_record())
+       {
+         $visit_list[$i]['visit'] = $this->db->f('visit');
+         $visit_list[$i]['family'] = $this->db->f('family');
+         $visit_list[$i]['date']  = $this->db->f('date');
+         $i++;
+       }
+            
+      for ($i=0; $i < count($visit_list); $i++)
+       {         
+         $this->nextmatchs->template_alternate_row_color(&$this->t);
+
+         $sql = "SELECT * FROM tc_family WHERE family=".$visit_list[$i]['family'];
+         $this->db->query($sql,__LINE__,__FILE__);
+         $this->db->next_record();
+                 
+         $this->t->set_var('family',$visit_list[$i]['family']);
+         $this->t->set_var('family_name',$this->db->f('name'));
+         $this->t->set_var('date',$visit_list[$i]['date']);
+         
+         $link_data['menuaction'] = 'tc.tc.vis_update';
+         $link_data['visit'] = $visit_list[$i]['visit'];
+         $link_data['name'] = $this->db->f('name');
+         $link_data['date'] = $visit_list[$i]['date'];
+         $link_data['action'] = 'view';
+         $this->t->set_var('view',$GLOBALS['phpgw']->link('/tc/index.php',$link_data));
+         $this->t->set_var('lang_view','View');
+
+         $link_data['menuaction'] = 'tc.tc.vis_update';
+         $link_data['visit'] = $visit_list[$i]['visit'];
+         $link_data['name'] = $this->db->f('name');
+         $link_data['date'] = $visit_list[$i]['date'];
+         $link_data['action'] = 'edit';
+         $this->t->set_var('edit',$GLOBALS['phpgw']->link('/tc/index.php',$link_data));
+         $this->t->set_var('lang_edit','Edit');
+
+         $this->t->fp('list1','visit_list',True);
+       }
+
+      // List the families that are available to record a visit against
+      $sql = "SELECT * FROM tc_family WHERE valid=1";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $total_records = $this->db->num_rows();
+
+      $i = 0;
+      while ($this->db->next_record())
+       {
+         $family_names[$i] = $this->db->f('name');
+         $family_ids[$i] = $this->db->f('family');
+         $i++;
+       } array_multisort($family_names, $family_ids);
+      
+      for ($i=0; $i < count($family_names); $i++)
+       {
+         $link_data['menuaction'] = 'tc.tc.vis_update';
+         $link_data['visit'] = '';
+         $link_data['family'] = $family_ids[$i];
+         $link_data['action'] = 'add';
+         $link_data['name'] = $family_names[$i];
+         $this->t->set_var('add',$GLOBALS['phpgw']->link('/tc/index.php',$link_data));
+
+         $this->t->set_var('name',$family_names[$i]);
+         if(($i+1) % 3 == 0) { $this->t->set_var('table_sep',"</td></tr><tr>"); }
+         else { $this->t->set_var('table_sep',"</td>"); }
+         if(($i) % 3 == 0) { $this->nextmatchs->template_alternate_row_color(&$this->t); }
+
+         $this->t->fp('list2','family_list',True);
+       }   
+
+      $this->t->pfp('out','vis_view_t');
+      $this->save_sessiondata(); 
+    }
+
+  function vis_update()
+    {
+      $this->t->set_file(array('form' => 'vis_update.tpl'));
+      $this->t->set_block('form','add','addhandle');
+      $this->t->set_block('form','edit','edithandle');
+      
+      $this->t->set_var('done_action',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.vis_view'));
+      $this->t->set_var('readonly','');
+      $this->t->set_var('disabled','');
+      
+      $action = get_var('action',array('GET','POST'));
+      $visit = get_var('visit',array('GET','POST'));
+      $family = get_var('family',array('GET','POST'));
+      $name = get_var('name',array('GET','POST'));
+      $date = get_var('date',array('GET','POST'));
+      $notes = get_var('notes',array('GET','POST'));
+      $companionship = 0;
+      
+      if($action == 'save')
+       {
+         $notes = get_var('notes',array('POST'));
+         $this->db->query("UPDATE tc_visit set " .
+                          "  date='" . $date . "'" .
+                         ", notes='" . $notes . "'" .
+                          " WHERE visit=" . $visit,__LINE__,__FILE__);
+         $this->vis_view();
+         return false;
+       }
+
+      if($action == 'insert')
+       {
+         $notes = get_var('notes',array('POST'));
+         $this->db->query("INSERT INTO tc_visit (family,companionship,date,notes) "
+                          . "VALUES ('" . $family . "','" . $companionship . "','"
+                          . $date . "','" . $notes . "')",__LINE__,__FILE__);
+         $this->vis_view();
+         return false;
+       }
+      
+      if($action == 'add')
+       {
+         $this->t->set_var('cal_date',$this->jscal->input('date','','','','','','',$this->cal_options));
+         $this->t->set_var('family', $family);
+         $this->t->set_var('visit', '');
+         $this->t->set_var('name', $name);
+         $this->t->set_var('date','');
+         $this->t->set_var('notes','');
+         $this->t->set_var('lang_done','Cancel');
+         $this->t->set_var('lang_action','Adding New Visit');
+         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.vis_update&family='
+                                                               . $family . '&action=' . 'insert'));
+       }
+
+      if($action == 'edit' || $action == 'view')
+       {
+         $sql = "SELECT * FROM tc_visit WHERE visit=".$visit;
+         $this->db->query($sql,__LINE__,__FILE__);
+         $this->db->next_record();
+         $this->t->set_var('visit',$visit);
+         $this->t->set_var('name',$name);
+         $this->t->set_var('family', $family);
+         $this->t->set_var('date',$this->db->f('date'));
+         $this->t->set_var('notes',$this->db->f('notes'));
+       }
+      
+      if($action == 'edit')
+       {
+         $this->t->set_var('cal_date',$this->jscal->input('date',$date,'','','','','',$this->cal_options));
+         $this->t->set_var('lang_done','Cancel');
+         $this->t->set_var('lang_action','Editing Visit');
+         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.vis_update&visit='
+                                                               . $visit . '&action=' . 'save'));
+       }
+
+      if($action == 'view')
+       {
+         $date = $this->db->f('date');
+         $this->t->set_var('cal_date','<input type=text size="10" maxlength="10" name="date" value="'.$date.'" readonly>');
+         $this->t->set_var('readonly','READONLY');
+         $this->t->set_var('disabled','DISABLED');
+         $this->t->set_var('lang_done','Done');
+         $this->t->set_var('lang_action','Viewing Visit');
+         $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.vis_update&visit='
+                                                               . $visit . '&action=' . 'edit'));
+       }
+      
+      $this->t->set_var('lang_reset','Clear Form');
+      $this->t->set_var('lang_add','Add Visit');
+      $this->t->set_var('lang_save','Save Changes');
+      $this->t->set_var('edithandle','');
+      $this->t->set_var('addhandle','');
+
+      $this->t->pfp('out','form');
+      
+      if($action == 'view') { $this->t->set_var('lang_save','Edit Visit'); }
+      if($action == 'edit' || $action == 'view') { $this->t->pfp('addhandle','edit'); }
+      if($action == 'add') { $this->t->pfp('addhandle','add'); }
+
+      $this->save_sessiondata(); 
+    }
+
+  function att_view()
+    {
+      $monthnum['Jan']=1; $monthnum['Feb']=2; $monthnum['Mar']=3; $monthnum['Apr']=4;
+      $monthnum['May']=5; $monthnum['Jun']=6; $monthnum['Jul']=7; $monthnum['Aug']=8;
+      $monthnum['Sep']=9; $monthnum['Oct']=10; $monthnum['Nov']=11; $monthnum['Dec']=12;
+
+      $this->t->set_file(array('att_view_t' => 'att_view.tpl'));
+      $this->t->set_block('att_view_t','act_list','list');
+
+      $this->t->set_block('att_view_t','month_list','list1');
+      $this->t->set_block('att_view_t','header_list','list2');
+      $this->t->set_block('att_view_t','indiv_list','list3');
+      
+      $this->t->set_var('linkurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.att_view'));
+      $num_quarters = get_var('num_quarters',array('GET','POST'));
+      if($num_quarters == '') { $num_quarters = $this->default_att_num_quarters; }
+      $this->t->set_var('num_quarters',$num_quarters);
+      $this->t->set_var('lang_filter','Filter');
+      if($num_quarters == 1) { $this->t->set_var('lang_num_quarters','Quarter of History'); }
+      else { $this->t->set_var('lang_num_quarters','Quarters of History'); }
+
+      $num_months = $num_quarters * 3;
+      $current_month = $this->current_month;
+      if($current_month >= 1 && $current_month <= 3) { $current_month=3; }
+      else if($current_month >= 4 && $current_month <= 6) { $current_month=6; }
+      else if($current_month >= 7 && $current_month <= 9) { $current_month=9; }
+      else if($current_month >= 10 && $current_month <= 12) { $current_month=12; }
+
+      $sql = "SELECT * FROM tc_indiv where valid=1";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      while ($this->db->next_record())
+       {
+         $indiv_name[$i] = $this->db->f('name');
+         $indiv_id[$i] = $this->db->f('indiv');
+         $i++;
+       }
+      array_multisort($indiv_name, $indiv_id);
+      
+      // Create a list of sunday dates for a window of 3 months back and current month
+      $i=0; 
+      $last_time = 0; 
+      $found_sunday = 0;
+      $sunday_list[0]['date'] = date("Y-m-d", mktime(0, 0, 0, ($current_month-$num_months)+1, 1, date("y")));
+      $last_date = explode("-",$sunday_list[0]['date']);
+      $last_time = mktime(0, 0, 0, $last_date[1], $last_date[2], $last_date[0]);
+      $time_limit = mktime(0, 0, 0, $current_month, 31, date("y"));
+      while($last_time < $time_limit)
+      {
+        $day = date("w",$last_time);
+        if(date("w",$last_time) == 0) {
+         $sunday_list[$i]['date'] = date("Y-m-d", $last_time);
+         $last_date = explode("-",$sunday_list[$i]['date']);
+         $last_time = mktime(0, 0, 0, $last_date[1], $last_date[2], $last_date[0]);
+         $sunday_list[$i]['day'] = $last_date[2];
+         $sunday_list[$i]['month'] = date("M",$last_time);
+         $sunday_list[$i]['year'] = $last_date[0];
+         $found_sunday = 1;
+         $last_date = $sunday_list[$i]['date'];
+       }
+       $last_time += 90000;
+       if($found_sunday) { $i++; $found_sunday=0; }
+      }
+
+      $total_indivs = count($indiv_id);
+      $old_month=$sunday_list[0]['month']; $span=0;
+      for ($i=0; $i < count($sunday_list); $i++) {
+        $date = $sunday_list[$i]['date'];
+        $this->t->set_var('date',$sunday_list[$i]['date']);
+       $this->t->set_var('day',$sunday_list[$i]['day']);
+       if(($old_month != $sunday_list[$i]['month']) || $i == count($sunday_list)-1) {
+         if($i == count($sunday_list)-1) { $span++; }
+         $cur_month = $sunday_list[$i]['month'];
+         $old_month = $sunday_list[$i]['month'];         
+         $link_data['menuaction'] = 'tc.tc.att_update';
+         $link_data['month'] = $sunday_list[$i-1]['month'];
+         $link_data['year'] = $sunday_list[$i-1]['year'];
+         $link_data['action'] = 'update_month';
+         $cur_month = $sunday_list[$i-1]['month'];
+         $cur_year = $sunday_list[$i-1]['year'];
+         $header_row .= "<th><font size=-3>$cur_month&nbsp;$cur_year</font></th>";
+         $this->t->set_var('update_month',$GLOBALS['phpgw']->link('/tc/index.php',$link_data));
+         $this->t->set_var('month',$sunday_list[$i-1]['month']);
+         $this->t->set_var('year',$sunday_list[$i-1]['year']);
+         $this->t->set_var('span',$span); $span=0;
+         $this->t->fp('list1','month_list',True);
+       } $span++;
+      }
+      $this->t->set_var('total_indivs',$total_indivs);
+      $this->t->set_var('header_row',$header_row);
+      
+      $indiv_width=200; $att_width=25; $total_width=$indiv_width; 
+      for ($i=0; $i < count($sunday_list); $i++) {
+       $link_data['menuaction'] = 'tc.tc.att_update';
+       $link_data['month'] = $sunday_list[$i]['month'];
+       $link_data['year'] = $sunday_list[$i]['year'];
+       $link_data['day'] = $sunday_list[$i]['day'];
+       $link_data['date'] = $sunday_list[$i]['date'];
+       $link_data['action'] = 'update_day';
+       $this->t->set_var('update_day',$GLOBALS['phpgw']->link('/tc/index.php',$link_data));
+        $this->t->set_var('date',$sunday_list[$i]['date']);
+       $this->t->set_var('day',$sunday_list[$i]['day']);
+        $this->t->set_var('month',$sunday_list[$i]['month']);
+       $this->t->set_var('year',$sunday_list[$i]['year']);
+       $this->t->fp('list2','header_list',True);
+       $total_width += $att_width;
+       $attendance[$monthnum[$sunday_list[$i]['month']]]=0;
+      }
+
+      for ($i=0; $i < count($indiv_id); $i++) {
+        $att_table = "";
+       $this->nextmatchs->template_alternate_row_color(&$this->t);
+       $this->t->set_var('indiv_name',$indiv_name[$i]);
+       #print "checking for indiv: " . $indiv_id[$i] . "<br>";
+       for ($j=0; $j < count($sunday_list); $j++) {
+         #print "checking for date: " .  $sunday_list[$j]['date'] . "<br>";
+         #print "SELECT * FROM tc_attendance WHERE date='"
+         #  . $sunday_list[$j]['date'] . "' AND indiv=" . $indiv_id[$i] . "<br>";
+         $sql = "SELECT * FROM tc_attendance WHERE date='"
+            . $sunday_list[$j]['date'] . "' AND indiv=" . $indiv_id[$i];
+         $this->db->query($sql,__LINE__,__FILE__);
+         if($this->db->next_record()) {
+           $cur_month = $sunday_list[$j]['month'];
+           if($attended[$i][$cur_month] != 1) { 
+             $attended[$i][$cur_month]=1;
+             $attendance[$monthnum[$cur_month]]++;
+           } 
+           $att_table .= '<td align=center><img src="images/checkmark.gif"></td>';
+         } else {
+           $att_table .= '<td>&nbsp;</td>';
+         }
+       }
+       $this->t->set_var('att_table',$att_table);
+       $this->t->fp('list3','indiv_list',True);
+      }
+      $this->t->set_var('total_width',$total_width);
+      $this->t->set_var('indiv_width',$indiv_width);
+      $this->t->set_var('att_width',$att_width);
+
+      # Now calculate attendance for these months
+      $attendance_str = "";
+      $nonattendance_str = "";
+      $aveattendance_str = "";
+      $avenonattendance_str = "";
+      $num_months=0;
+      $ave_total_attended=0;
+      ksort($attendance);
+      foreach($attendance as $att => $value) {
+       $total_attended = $attendance[$att];
+       $ave_total_attended += $attendance[$att]; $num_months++;
+       $percent = ceil(($total_attended / $total_indivs)*100);
+       $attendance_str.="<td align=center><font size=-2><b>$total_attended ($percent%)</b></font></td>";
+       $total_nonattended = $total_indivs - $total_attended;
+       $percent = ceil(($total_nonattended / $total_indivs)*100);
+       $nonattendance_str.="<td align=center><font size=-2><b>$total_nonattended ($percent%)</b></font></td>";
+       
+       $total_attended = ceil(($ave_total_attended / $num_months));
+       $percent = ceil(($total_attended / $total_indivs)*100);
+       $aveattendance_str .= "<td align=center><font size=-2><b>$total_attended ($percent%)</b></font></td>";
+       $total_attended = $total_indivs - ceil(($ave_total_attended / $num_months));
+       $percent = ceil(($total_attended / $total_indivs)*100);
+       $avenonattendance_str .= "<td align=center><font size=-2><b>$total_attended ($percent%)</b></font></td>";
+      }
+      
+      $this->t->set_var('attendance',$attendance_str);
+      $this->t->set_var('aveattendance',$aveattendance_str);
+      $this->t->set_var('nonattendance',$nonattendance_str);
+      $this->t->set_var('avenonattendance',$avenonattendance_str);
+      
+      $this->t->pfp('out','att_view_t');
+      $this->save_sessiondata(); 
+    }
+
+  function att_update()
+    {
+      $monthnum['Jan']=1; $monthnum['Feb']=2; $monthnum['Mar']=3; $monthnum['Apr']=4;
+      $monthnum['May']=5; $monthnum['Jun']=6; $monthnum['Jul']=7; $monthnum['Aug']=8;
+      $monthnum['Sep']=9; $monthnum['Oct']=10; $monthnum['Nov']=11; $monthnum['Dec']=12;
+
+      $this->t->set_file(array('form' => 'att_update.tpl'));
+      $this->t->set_block('form','edit','edithandle');
+      
+      $this->t->set_block('form','month_list','list1');
+      $this->t->set_block('form','header_list','list2');
+      $this->t->set_block('form','indiv_list','list3');
+
+      $this->t->set_var('done_action',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.att_view'));
+
+      $action = get_var('action',array('GET','POST'));
+      $month = get_var('month',array('GET','POST'));
+      $year = get_var('year',array('GET','POST'));
+      $day = get_var('day',array('GET','POST'));
+      $date = get_var('date',array('GET','POST'));
+
+      if($action == 'save_month' || $action == 'save_day')
+       {
+          $new_data = get_var('indivs_attended',array('POST'));
+          $month = $monthnum[$month]; if($month < 10) { $month = "0" . $month; }
+
+          if($action == 'save_month') {        
+             $this->db->query("DELETE from tc_attendance where date LIKE '".$year."-".$month."-%'",__LINE__,__FILE__);
+          }
+
+          if($action == 'save_day') {        
+             $this->db->query("DELETE from tc_attendance where date LIKE '".$year."-".$month."-".$day."'",__LINE__,__FILE__);
+          }   
+
+          foreach ($new_data as $data)
+          {
+             $data_array = explode("-",$data);
+             $indiv = $data_array[0];
+             $date  = "$data_array[1]-$data_array[2]-$data_array[3]";        
+             $this->db->query("INSERT INTO tc_attendance (indiv,date) "
+                              . "VALUES (" . $indiv . ",'". $date . "')",__LINE__,__FILE__);
+          }
+       
+        $this->att_view();
+        return false;    
+       }
+
+      $sql = "SELECT * FROM tc_indiv where valid=1";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      while ($this->db->next_record())
+       {
+         $indiv_name[$i] = $this->db->f('name');
+         $indiv_id[$i] = $this->db->f('indiv');
+         $indiv_attending[$indiv_id[$i]] = $this->db->f('attending');
+         $i++;
+       }
+      array_multisort($indiv_name, $indiv_id);
+      
+      if($action == 'update_month')
+      {
+        $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.att_update&action=save_month'));
+        $i=0; 
+       $last_time = 0; 
+       $found_sunday = 0;
+       $sunday_list[0]['date'] = date("Y-m-d", mktime(0, 0, 0, $monthnum[$month], 1, $year));
+       $last_date = explode("-",$sunday_list[0]['date']);
+       $last_time = mktime(0, 0, 0, $last_date[1], $last_date[2], $last_date[0]);
+       $time_limit = mktime(0, 0, 0, $monthnum[$month], 31, $year);
+       while($last_time <= $time_limit)
+       {
+          $day = date("w",$last_time);
+          if(date("w",$last_time) == 0) { 
+           $sunday_list[$i]['date'] = date("Y-m-d", $last_time); 
+           $last_date = explode("-",$sunday_list[$i]['date']);
+           $last_time = mktime(0, 0, 0, $last_date[1], $last_date[2], $last_date[0]);
+           $sunday_list[$i]['day'] = $last_date[2];
+           $sunday_list[$i]['month'] = date("M",$last_time);
+           $sunday_list[$i]['year'] = $last_date[0];
+           $found_sunday = 1; 
+         }
+         $last_time += 90000;
+         if($found_sunday) { $i++; $found_sunday=0; }
+        }
+
+       $this->t->set_var('span', $i);
+       $this->t->set_var('month',$sunday_list[$i-1]['month']);
+       $this->t->set_var('year',$sunday_list[$i-1]['year']);
+       $this->t->fp('list1','month_list',True);
+       $indiv_width=200; $att_width=25; $total_width=$indiv_width;
+       for ($i=0; $i < count($sunday_list); $i++) {
+         $link_data['menuaction'] = 'tc.tc.att_update';
+         $link_data['month'] = $sunday_list[$i]['month'];
+         $link_data['year'] = $sunday_list[$i]['year'];
+         $link_data['day'] = $sunday_list[$i]['day'];
+         $link_data['date'] = $sunday_list[$i]['date'];
+         $link_data['action'] = 'update_day';
+         $this->t->set_var('update_day',$GLOBALS['phpgw']->link('/tc/index.php',$link_data));
+         $this->t->set_var('date',$sunday_list[$i]['date']);
+         $this->t->set_var('day',$sunday_list[$i]['day']);
+         $this->t->set_var('month',$sunday_list[$i]['month']);
+         $this->t->set_var('year',$sunday_list[$i]['year']);
+         $this->t->fp('list2','header_list',True);
+         $total_width += $att_width;
+       }     
+      }
+
+      if($action == 'update_day')
+      {
+        $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.att_update&action=save_day'));
+        $sunday_list[0]['date'] = date("Y-m-d", mktime(0, 0, 0, $monthnum[$month], $day, $year));
+        $this->t->set_var('month',$month);
+       $this->t->set_var('year',$year);
+       $this->t->fp('list1','month_list',True);
+       $this->t->set_var('date',$date);
+       $this->t->set_var('day',$day);
+       $this->t->set_var('month',$month);
+       $this->t->set_var('year',$year);
+       $this->t->fp('list2','header_list',True);
+      }           
+            
+      for ($i=0; $i < count($indiv_id); $i++) {
+        $att_table = "";
+       $this->nextmatchs->template_alternate_row_color(&$this->t);
+       $this->t->set_var('indiv_name',$indiv_name[$i]);
+       for ($j=0; $j < count($sunday_list); $j++) {
+         $sql = "SELECT * FROM tc_attendance WHERE date='"
+            . $sunday_list[$j]['date'] . "' AND indiv=" . $indiv_id[$i];
+         $this->db->query($sql,__LINE__,__FILE__);
+         $value = $indiv_id[$i] . "-" . $sunday_list[$j]['date'];
+         if($this->db->next_record()) {
+           $att_table .= '<td align=center><input type="checkbox" name="indivs_attended[]" value="'.$value.'" checked></td>';
+         } else if($indiv_attending[$indiv_id[$i]] == 1) {
+           $att_table .= '<td align=center><input type="checkbox" name="indivs_attended[]" value="'.$value.'" checked></td>';
+         } else {
+           $att_table .= '<td align=center><input type="checkbox" name="indivs_attended[]" value="'.$value.'"></td>';
+         }
+       }
+       $this->t->set_var('att_table',$att_table);
+       $this->t->fp('list3','indiv_list',True);
+      } 
+           
+      $this->t->set_var('lang_done', 'Cancel');
+      $this->t->set_var('lang_reset','Clear Form');
+      $this->t->set_var('lang_save','Save Changes');
+
+      $this->t->pfp('out','form');
+      $this->t->pfp('addhandle','edit');
+
+      $this->save_sessiondata();       
+    }
+
+  function dir_view()
+    {
+      $this->t->set_file(array('dir_view_t' => 'dir_view.tpl'));
+      $this->t->set_block('dir_view_t','dir_list','list');
+      
+      $sql = "SELECT * FROM tc_parent where valid=1 ORDER BY name ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      while ($this->db->next_record())
+       {
+         $parent[$i]['id'] = $this->db->f('parent');
+         $parent[$i]['name'] = $this->db->f('name');
+         $parent[$i]['phone'] = $this->db->f('phone');
+         $parent[$i]['address'] = $this->db->f('address');
+         $i++;
+       }   
+      
+      for ($i=0; $i < count($parent); $i++) 
+      {
+        $name = $parent[$i]['name'];
+       $phone = $parent[$i]['phone'];
+       $address = $parent[$i]['address'];
+       $this->t->set_var('name', $name);
+       $this->t->set_var('address', $address);
+       $this->t->set_var('phone', $phone);
+        $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
+        $this->t->set_var('tr_color',$tr_color);
+       $this->t->fp('list','dir_list',True);
+       //print "$phone $name $address<br>";
+      }
+      $this->t->pfp('out','dir_view_t');
+      $this->save_sessiondata();   
+    }
+  
+  function org_view()
+    {
+      $this->t->set_file(array('org_view_t' => 'org_view.tpl'));
+      $this->t->set_block('org_view_t','calling_list','list1');
+      $this->t->set_block('org_view_t','org_list','list2');
+
+      # Display a list ordered alphabetically
+      $sql = "SELECT * FROM tc_calling ORDER BY name ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      while ($this->db->next_record())
+       {
+         $calling[$i]['id'] = $this->db->f('indiv_id');
+         $calling[$i]['name'] = $this->db->f('name');
+         $calling[$i]['position'] = $this->db->f('position');
+         $calling[$i]['sustained'] = $this->db->f('sustained');
+         $calling[$i]['organization'] = $this->db->f('organization');
+         $i++;
+       }   
+      for ($i=0; $i < count($calling); $i++) 
+      {
+        $name = $calling[$i]['name'];
+       $position = $calling[$i]['position'];
+       $sustained = $calling[$i]['sustained'];
+       $organization = $calling[$i]['organization'];
+       $this->t->set_var('name', $name);
+       $this->t->set_var('position', $position);
+       $this->t->set_var('sustained', $sustained);
+       $this->t->set_var('organization', $organization);
+        $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
+        $this->t->set_var('tr_color',$tr_color);
+       $this->t->fp('list1','calling_list',True);
+      }
+
+      # Display a list ordered by organization
+      $sql = "SELECT * FROM tc_calling ORDER BY sequence ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      while ($this->db->next_record())
+       {
+         $calling[$i]['id'] = $this->db->f('indiv_id');
+         $calling[$i]['name'] = $this->db->f('name');
+         $calling[$i]['position'] = $this->db->f('position');
+         $calling[$i]['sustained'] = $this->db->f('sustained');
+         $calling[$i]['organization'] = $this->db->f('organization');
+         $i++;
+       }   
+      for ($i=0; $i < count($calling); $i++) 
+      {
+        $name = $calling[$i]['name'];
+       $position = $calling[$i]['position'];
+       $sustained = $calling[$i]['sustained'];
+       $organization = $calling[$i]['organization'];
+       $this->t->set_var('name', $name);
+       $this->t->set_var('position', $position);
+       $this->t->set_var('sustained', $sustained);
+       $this->t->set_var('organization', $organization);
+        $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
+        $this->t->set_var('tr_color',$tr_color);
+       $this->t->fp('list2','org_list',True);
+      }
+      
+      $this->t->pfp('out','org_view_t');
+      $this->save_sessiondata();   
+    }
+  
+  function schedule()
+    {
+      $this->t->set_file(array('sched_t' => 'schedule.tpl'));
+      $this->t->set_block('sched_t','presidency_list','list');
+
+      $action = get_var('action',array('GET','POST'));
+      
+      $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.schedule&action=save'));
+      $this->t->set_var('title','Scheduling Tool');
+
+      $this->t->set_var('lang_save','Save Schedule');
+      $this->t->set_var('lang_reset','Cancel');
+      
+      $this->t->set_var('schedule_vis_link',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.vis_sched'));
+      $this->t->set_var('schedule_vis_link_title','Schedule Yearly Visits');
+
+      $this->t->set_var('schedule_int_link',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.int_sched'));
+      $this->t->set_var('schedule_int_link_title','Schedule Hometeaching Interviews');
+      
+      $this->t->set_var('schedule_ppi_link',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.ppi_sched'));
+      $this->t->set_var('schedule_ppi_link_title','Schedule Yearly PPIs');
+      
+      $date_width=150; $time_width=220; $indiv_width=170; $family_width=180; $location_width=100;
+      $table_width=$date_width + $time_width + $indiv_width + $family_width + $location_width;
+      $header_row = "<th width=$date_width><font size=-2>Date</th>";
+      $header_row.= "<th width=$time_width><font size=-2>Time</th>";      
+      $header_row.= "<th width=$indiv_width><font size=-2>individual</th>";
+      $header_row.= "<th width=$family_width><font size=-2>Family</th>";
+      $header_row.= "<th width=$location_width><font size=-2>Location</th>";
+      $table_data = "";
+
+      $sql = "SELECT * FROM tc_presidency where valid=1";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      while ($this->db->next_record())
+       {
+         $presidency_data[$i]['id'] = $this->db->f('presidency');
+         $presidency_data[$i]['name'] = $this->db->f('name');
+         $presidency_data[$i]['indiv'] = $this->db->f('indiv');
+         $presidency2name[$presidency_data[$i]['id']] = $presidency_data[$i]['name'];
+         $presidency2indiv[$presidency_data[$i]['id']] = $presidency_data[$i]['indiv'];
+         $i++;
+       }
+      
+      $sql = "SELECT * FROM tc_family where valid=1 and indiv_id != 0 ORDER BY name ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      while ($this->db->next_record())
+       {
+         $family_id[$i] = $this->db->f('family');
+         $family_name[$i] = $this->db->f('name');
+         $familyid2name[$family_id[$i]] = $family_name[$i];
+         $sql = "SELECT * FROM tc_parent where family='$family_id[$i]'";
+         $this->db2->query($sql,__LINE__,__FILE__);
+         if($this->db2->next_record()) {
+           $familyid2address[$family_id[$i]] = $this->db2->f('address');
+         }
+         $i++;
+       }
+      array_multisort($family_name, $family_id);
+
+      if($action == 'save')
+       {
+         $new_data = get_var('sched',array('POST'));
+         foreach ($new_data as $presidency_array)
+          {
+            foreach ($presidency_array as $entry)
+              {
+                $presidency = $entry['presidency'];
+                $appointment = $entry['appointment'];
+                $location = $entry['location'];
+                $date = $entry['date'];
+                $hour = $entry['hour'];
+                $minute = $entry['minute'];
+                $pm = $entry['pm'];
+                $indiv = $entry['indiv'];
+                $family = $entry['family'];
+                $location = $entry['location'];
+                if($pm) { $hour = $hour + 12; }
+                $time = $hour.':'.$minute.':'.'00';
+                $uid = 0;
+
+                // Update our location
+                if($location == "") {
+                  if($family > 0) {
+                    $family_name_array = explode(",", $familyid2name[$family]);
+                    $family_last_name = $family_name_array[0];
+                    $family_address = $familyid2address[$family];
+                    $location = "$family_last_name"." home ($family_address)";
+                  }
+                  else if($indiv > 0) {
+                    $supervisor_name_array = explode(",",$presidency2name[$presidency]);
+                    $supervisor_last_name = $supervisor_name_array[0];
+                    $sql = "SELECT * FROM tc_indiv where indiv='$presidency2indiv[$presidency]'";
+                    $this->db2->query($sql,__LINE__,__FILE__);
+                    if($this->db2->next_record()) {
+                      $indiv_id = $this->db2->f('indiv_id');
+                    }
+                    $sql = "SELECT * FROM tc_parent where indiv_id='$indiv_id'";
+                    $this->db2->query($sql,__LINE__,__FILE__);
+                    if($this->db2->next_record()) {
+                      $supervisor_address = $this->db2->f('address');
+                    }
+                    $location = "$supervisor_last_name"." home ($supervisor_address)";
+                  }
+                }
+                
+                // Zero out the family or individual if date = NULL
+                if($date == "") {
+                  $indiv = 0;
+                  $family = 0;
+                  $location = "";
+                }
+
+                if(($indiv == 0) && ($family == 0)) { $location = ""; }
+                
+                // Update an existing appointment
+                if($appointment < $this->max_appointments)
+                  {
+                    //Only perform a database update if we have made a change to this appointment
+                    $sql = "SELECT * FROM tc_appointment where " .
+                       "appointment='$appointment'" .
+                       " and presidency='$presidency'" .
+                       " and indiv='$indiv'" .
+                       " and family='$family'" .
+                       " and date='$date'" .
+                       " and time='$time'" .
+                       " and location='$location'";
+                    $this->db->query($sql,__LINE__,__FILE__);
+                    if(!$this->db->next_record()) {
+                      $old_date = $this->db->f('date');
+                      $old_time = $this->db->f('time');
+                      $this->db2->query("UPDATE tc_appointment set" .
+                                       " family=" . $family . 
+                                       " ,indiv=" . $indiv . 
+                                       " ,date='" . $date . "'" .
+                                       " ,time='" . $time . "'" .
+                                       " ,location='" . $location . "'" .
+                                       " ,presidency='" . $presidency . "'" .
+                                       " WHERE appointment=" . $appointment,__LINE__,__FILE__);
+                      
+                      // Email the appointment
+                      $this->email_appt($appointment);
+                    }
+                  }
+                
+                // Add a new appointment
+                else if(($appointment >= $this->max_appointments) && ($date != "") && ($time != ""))
+                  {
+                    //print "adding entry: appt=$appointment date: $date time: $time indiv: $indiv family: $family<br>";
+                    $this->db2->query("INSERT INTO tc_appointment (appointment,presidency,family,indiv,date,time,location,uid) "
+                          . "VALUES (NULL,'" . $presidency . "','" . $family . "','" . $indiv . "','"
+                          . $date . "','" . $time  . "','" . $location . "','" . $uid ."')",__LINE__,__FILE__);
+
+                    // Now reselect this entry from the database to see if we need
+                    // to send an appointment out for it.
+                    $sql = "SELECT * FROM tc_appointment where " .
+                       "indiv='$indiv'" .
+                       " and family='$family'" .
+                       " and presidency='$presidency'" .
+                       " and date='$date'" .
+                       " and time='$time'" .
+                       " and uid='$uid'" .
+                       " and location='$location'";
+                    $this->db3->query($sql,__LINE__,__FILE__);
+                    if($this->db3->next_record()) {
+                      // Email the appointment if warranted
+                      if(($date != "") && ($time != "") && (($indiv > 0) || $family > 0)) { 
+                        $this->email_appt($this->db3->f('appointment'));
+                      }
+                    }
+                  }
+              }
+          }
+         
+         $take_me_to_url = $GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.schedule');
+         //Header('Location: ' . $take_me_to_url);
+       }
+      
+      $sql = "SELECT * FROM tc_indiv where valid=1 ORDER BY indiv ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      while ($this->db->next_record())
+       {
+         $indiv_id[$i] = $this->db->f('indiv');
+         $indiv_name[$i] = $this->db->f('name');
+         $indiv_phone[$indiv_id[$i]] = $this->db->f('phone');
+         $i++;
+       }
+      array_multisort($indiv_name, $indiv_id);
+      
+      for ($i=0; $i < count($presidency_data); $i++) {
+       $presidency = $presidency_data[$i]['id'];
+       $interviewer = $presidency_data[$i]['indiv'];
+       $name = $presidency_data[$i]['name'];
+       $this->t->set_var('presidency_name',$name);
+       $table_data="";
+       
+       // query the database for all the appointments
+       $sql = "SELECT * FROM tc_appointment where presidency=$presidency and date>=CURDATE() ORDER BY date ASC, time ASC";
+       $this->db->query($sql,__LINE__,__FILE__);
+
+       // Prefill any existing appointment slots
+       while ($this->db->next_record())
+         {
+           $appointment = $this->db->f('appointment');
+           $indiv = $this->db->f('indiv');
+           $family = $this->db->f('family');
+           $location = $this->db->f('location');
+
+           if($location == "") {
+             if($family > 0) {
+               $family_name_array = explode(",", $familyid2name[$family]);
+               $family_last_name = $family_name_array[0];
+               $family_address = $familyid2address[$family];
+               $location = "$family_last_name"." home ($family_address)";
+             }
+             else if($indiv > 0) {
+               $supervisor_name_array = explode(",",$presidency2name[$presidency]);
+               $supervisor_last_name = $supervisor_name_array[0];
+               $sql = "SELECT * FROM tc_indiv where indiv='$presidency2indiv[$presidency]'";
+               $this->db2->query($sql,__LINE__,__FILE__);
+               if($this->db2->next_record()) {
+                 $indiv_id = $this->db2->f('indiv_id');
+               }
+               $sql = "SELECT * FROM tc_parent where indiv_id='$indiv_id'";
+               $this->db2->query($sql,__LINE__,__FILE__);
+               if($this->db2->next_record()) {
+                 $supervisor_address = $this->db2->f('address');
+               }
+               $location = "$supervisor_last_name"." home ($supervisor_address)";
+             }
+           }
+           
+           $date = $this->db->f('date');
+           $date_array = explode("-",$date);
+           $year = $date_array[0]; $month = $date_array[1]; $day = $date_array[2];
+           $day_string = date("l d-M-Y", mktime(0,0,0,$month,$day,$year));
+           
+           $time = $this->db->f('time');
+           $time_array = explode(":",$time);
+           $hour = $time_array[0];
+           $minute = $time_array[1];
+           $pm = 0;
+           if($hour > 12) { $pm=1; $hour = $hour - 12; }
+           $time_string = date("g:i a", mktime($time_array[0], $time_array[1], $time_array[2]));
+           
+           $table_data.= "<tr bgcolor=". $this->t->get_var('tr_color') .">";
+
+           // Date selection
+           $table_data.= '<td align=left>';
+           $table_data.= $this->jscal->input('sched['.$presidency.']['.$appointment.'][date]',$date,'','','','','',$this->cal_options);
+           $table_data.= '</td>';
+           
+           // Hour & Minutes selection
+           $table_data.= "<td align=center>";
+           $table_data .= $this->get_time_selection_form($hour, $minute, $pm, $presidency, $appointment);
+           $table_data.= "</td>";
+           
+           // individual drop down list (for PPIs)
+           $table_data.= '<td align=center><select name=sched['.$presidency.']['.$appointment.'][indiv] STYLE="font-size : 8pt">';
+           $table_data.= '<option value=0></option>';  
+           for ($j=0; $j < count($indiv_id); $j++) {
+             $id = $indiv_id[$j];
+             $name = $indiv_name[$j];
+             if($indiv_id[$j] == $indiv) { $selected[$id] = 'selected="selected"'; } else { $selected[$id] = ''; }
+             $table_data.= '<option value='.$id.' '.$selected[$id].'>'.$name.'</option>';
+           }
+           $table_data.='</select></td>';
+
+           // Family drop down list (for Visits)
+           $table_data.= '<td align=center><select name=sched['.$presidency.']['.$appointment.'][family] STYLE="font-size : 8pt">';
+           $table_data.= '<option value=0></option>';              
+           for ($j=0; $j < count($indiv_id); $j++) {
+             $id = $family_id[$j];
+             $name = $family_name[$j];
+             if($family_id[$j] == $family) { $selected[$id] = 'selected="selected"'; } else { $selected[$id] = ''; }
+             $table_data.= '<option value='.$id.' '.$selected[$id].'>'.$name.' Family</option>';
+           }
+           $table_data.='</select></td>';
+
+           // Location text box
+           $table_data.= '<td align=center><input type=text size="25" maxlength="120" ';
+           $table_data.= 'name="sched['.$presidency.']['.$appointment.'][location]" value="'.$location.'" STYLE="font-size : 8pt">';
+           
+           $table_data.= '<input type=hidden name="sched['.$presidency.']['.$appointment.'][appointment]" value="'.$appointment.'">';
+           $table_data.= '<input type=hidden name="sched['.$presidency.']['.$appointment.'][presidency]" value="'.$presidency.'">';
+       
+           $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
+           $this->t->set_var('tr_color',$tr_color);
+           
+         }
+
+       // Create blank appointment slot
+       for ($b=0; $b < 4; $b++) {
+         $appointment = $this->max_appointments + $b;
+         $table_data.= "<tr bgcolor=". $this->t->get_var('tr_color') .">";
+
+         // Date selection
+         $table_data.= '<td align=left>';
+         $table_data.= $this->jscal->input('sched['.$presidency.']['.$appointment.'][date]','','','','','','',$this->cal_options);
+         $table_data.= '</td>';
+       
+         // Time selection
+         $table_data.= "<td align=center>";
+         $table_data .= $this->get_time_selection_form(0, 0, 0, $presidency, $appointment);
+         $table_data.= "</td>";
+         
+         // individual drop down list
+         $table_data.= '<td align=center><select name=sched['.$presidency.']['.$appointment.'][indiv] STYLE="font-size : 8pt">';
+         $table_data.= '<option value=0></option>';  
+         for ($j=0; $j < count($indiv_id); $j++) {
+           $id = $indiv_id[$j];
+           $name = $indiv_name[$j];
+           $table_data.= '<option value='.$id.'>'.$name.'</option>';
+         }
+         $table_data.='</select></td>';
+         
+         // Family drop down list
+         $table_data.= '<td align=center><select name=sched['.$presidency.']['.$appointment.'][family] STYLE="font-size : 8pt">';
+         $table_data.= '<option value=0></option>';        
+         for ($j=0; $j < count($indiv_id); $j++) {
+           $id = $family_id[$j];
+           $name = $family_name[$j];
+           $table_data.= '<option value='.$id.'>'.$name.' Family</option>';
+         }
+         $table_data.='</select></td>';
+
+         // Location text box
+         $table_data.= '<td align=center><input type=text size="25" maxlength="120" ';
+         $table_data.= 'name="sched['.$presidency.']['.$appointment.'][location]" value="" STYLE="font-size : 8pt">';
+         
+         $table_data.= '<input type=hidden name="sched['.$presidency.']['.$appointment.'][appointment]" value="'.$appointment.'">';
+         $table_data.= '<input type=hidden name="sched['.$presidency.']['.$appointment.'][presidency]" value="'.$presidency.'">';
+
+         $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
+         $this->t->set_var('tr_color',$tr_color);
+       }
+       
+       $this->t->set_var('table_data',$table_data);
+       $this->t->set_var('header_row',$header_row);
+       $this->t->set_var('table_width',$table_width);
+       $this->t->fp('list','presidency_list',True);
+       
+      }
+      
+      $this->t->pfp('out','sched_t');
+      $this->save_sessiondata();   
+    }
+
+  function email()
+    {
+      $this->t->set_file(array('email_t' => 'email.tpl'));
+      $this->t->set_block('email_t','indiv_list','list');
+
+      $action = get_var('action',array('GET','POST'));
+      
+      $this->t->set_var('actionurl',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.email'));
+      $this->t->set_var('title','Email Tool');
+
+      $this->t->set_var('lang_email','Send Email');
+      $this->t->set_var('lang_reset','Cancel');
+      
+      $this->t->set_var('email_member_link',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.email&action=member'));
+      $this->t->set_var('email_member_link_title','Email Quorum Member');
+
+      $this->t->set_var('email_quorum_link',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.email&action=quorum'));
+      $this->t->set_var('email_quorum_link_title','Email Quorum');
+      
+      $this->t->set_var('email_reminder_link',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.email&action=reminder'));
+      $this->t->set_var('email_reminder_link_title','Email Reminders');
+
+      $this->t->set_var('email_edit_link',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.email&action=edit'));
+      $this->t->set_var('email_edit_link_title','Edit Email Addresses');
+
+      $table_width=600;
+      $this->t->set_var('table_width',$table_width);
+      
+      $this->t->pfp('out','email_t');
+      $this->save_sessiondata();   
+    }
+
+  function admin()
+    {
+      $this->t->set_file(array('admin_t' => 'admin.tpl'));
+      $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('/tc/index.php','menuaction=tc.tc.admin&action=upload'));
+      $this->t->set_var('presidency_action',$GLOBALS['phpgw']->link('/tc/index.php','menuaction=tc.tc.admin&action=presidency'));
+      
+      $action = get_var('action',array('GET','POST'));
+
+      $this->t->pfp('out','admin_t');
+
+      $sql = "SELECT * FROM tc_indiv where valid=1 ORDER BY indiv ASC";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $i=0;
+      while ($this->db->next_record())
+       {
+         $indiv_id[$i] = $this->db->f('indiv');
+         $indiv_name[$i] = $this->db->f('name');
+         $indiv2name[$indiv_id[$i]] = $indiv_name[$i];
+         $i++;
+       }
+      array_multisort($indiv_name, $indiv_id);
+
+      if($action == 'upload')
+       {        
+         $target_path = $this->upload_target_path . '/' . basename( $_FILES['uploadedfile']['name']);
+         
+         if(($_FILES['uploadedfile']['type'] == "application/zip") ||
+            ($_FILES['uploadedfile']['type'] == "application/x-zip-compressed") ||
+            ($_FILES['uploadedfile']['type'] == "application/x-zip") ||
+            ($_FILES['uploadedfile']['type'] == "application/octet-stream")) {
+
+           if(!move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
+             $uploadstatus = "<b><font color=red> -E- Unable to move the uploaded file to ";
+             $uploadstatus.= "the target path (check the path and permissions) of: $target_path</font></b>";
+             $uploadstatus = "<b>The following file was uploaded successfully: </b><br><br>";
+             $uploadstatus.= "Tmp Filename : " . $_FILES['uploadedfile']['tmp_name'] . "<br>";
+             $uploadstatus.= "Filename     : " . $_FILES['uploadedfile']['name'] . "<br>";
+             $uploadstatus.= "Type         : " . $_FILES['uploadedfile']['type'] . "<br>";
+             $uploadstatus.= "Size         : " . $_FILES['uploadedfile']['size'] . "<br>";
+             $uploadstatus.= "Error        : " . $_FILES['uploadedfile']['error'] . "<br>";     
+             $this->t->set_var('uploadstatus',$uploadstatus);
+             $this->t->pfp('uploadhandle','upload',True);
+             return 0;
+           }
+           
+           $uploadstatus = "<b>The following file was uploaded successfully: </b><br><br>";
+           $uploadstatus.= "Filename : " . $_FILES['uploadedfile']['name'] . "<br>";
+           $uploadstatus.= "Type     : " . $_FILES['uploadedfile']['type'] . "<br>";
+           $uploadstatus.= "Size     : " . $_FILES['uploadedfile']['size'] . "<br>";    
+           $this->t->set_var('uploadstatus',$uploadstatus);
+           $this->t->pfp('uploadhandle','upload');
+           $this->t->set_var('uploadhandle','');
+           print "<table border=1 width=80%><tr><td>\n<pre>";
+           
+           # make a directory for this data to be stored in
+           $date="data_" . date("Y_m_d");
+           $data_dir = $this->upload_target_path . '/' . $date;
+           print "-> Making the data directory: $date<br>\n";
+           exec('mkdir -p ' . $data_dir . ' 2>&1', $result, $return_code);
+           if($return_code != 0) {
+             print implode('\n',$result) . "<br>";
+             print "<b><font color=red>";
+             print "-E- Unable to create the data directory. Aborting import.";
+             print "</font></b>";
+             return 0;
+           }
+
+           # move the file uploaded into this directory
+           print "-> Moving the uploaded file into the data dir<br>\n";
+           exec('mv ' . $target_path . ' ' . $data_dir . '/' . ' 2>&1', $result, $return_code);
+           if($return_code != 0) {
+             print implode('\n',$result) . "<br>";
+             print "<b><font color=red>";
+             print "-E- Unable to move the uploaded file into the data dir. Aborting import.";
+             print "</font></b>";
+             return 0;
+           }
+           
+           # unzip the data into this directory
+           print "-> Unzipping the data<br>\n";
+           exec($this->unzip_path .' -u '. $data_dir . '/*.zip -d ' . $data_dir . ' 2>&1', $result, $return_code);
+           if($return_code != 0) {
+             print implode('\n',$result) . "<br>";
+             print "<b><font color=red>";
+             print "-E- Unable to unzip the uploaded file into the data dir: $data_dir. Aborting import.";
+             print "</font></b>";
+             return 0;
+           }
+           exec('mv ' . $data_dir . '/*/* '. $data_dir . ' 2>&1', $result, $return_code);
+
+           # update the data_latest link to point to this new directory
+           print "-> Updating the latest data dir link<br>\n";
+           $data_latest = $this->upload_target_path . '/data_latest';
+           exec('rm ' . $data_latest. '; ln -s ' . $data_dir .' '. $data_latest .' 2>&1', $result, $return_code);
+           if($return_code != 0) {
+             print implode('\n',$result) . "<br>";
+             print "<b><font color=red>";
+             print "-E- Unable to update the data latest link. Aborting import.";
+             print "</font></b>";
+             return 0;
+           }
+           
+           # run the import perl script to encorporate it into the DB
+           ob_start('ob_logstdout', 2);
+           print "-> Importing the data into the database<br>\n";
+           ob_flush(); flush(); sleep(1);
+           $import_log = $this->upload_target_path . '/import.log';
+           $data_log = $this->upload_target_path . '/data.log';
+           $import_cmd = $this->script_path . '/import_ward_data ' . $data_latest . ' 2>&1 | tee ' . $import_log;
+           $parse_cmd = $this->script_path . '/parse_ward_data -v ' . $data_latest . ' > ' . $data_log . '2>&1';
+           #print "import_cmd: $import_cmd<br>";
+           #print "parse_cmd: $parse_cmd<br>";
+           ob_start('ob_logstdout', 2);
+           passthru($import_cmd);
+           passthru($parse_cmd);
+           ob_flush(); flush(); sleep(1);
+
+           # fix the permissions of the data dir
+           exec('chmod -R o-rwx ' . $data_dir, $result, $return_code);
+           
+           $this->t->pfp('cmdhandle','cmd');
+           print "</pre></td></tr></table>";
+           
+         } else if(($_FILES['uploadedfile']['type'] != "application/zip") &&
+                   ($_FILES['uploadedfile']['type'] != "application/x-zip-compressed") &&
+                   ($_FILES['uploadedfile']['type'] != "application/x-zip") &&
+                   ($_FILES['uploadedfile']['type'] != "application/octet-stream")) {
+           $uploadstatus = "<b><font color=red>The file format must be a .zip file, please try again! </font></b>";
+           $uploadstatus.= "<br><br><b>Detected file format: " . $_FILES['uploadedfile']['type'] . "</b>";
+           $this->t->set_var('uploadstatus',$uploadstatus);
+           $this->t->pfp('uploadhandle','upload',True);
+         } else {
+           $uploadstatus = "<b><font color=red> There was an error (" . $_FILES['uploadedfile']['error'];
+           $uploadstatus.= ") uploading the file, please try again! </font></b>";
+           $this->t->set_var('uploadstatus',$uploadstatus);
+           $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'];
+            $indiv = $entry['indiv'];
+            $name = $entry['name'];
+            $district = $entry['district'];
+            $president = $entry['president'];
+            $counselor = $entry['counselor'];
+            $secretary = $entry['secretary'];
+            $eqpresidency = $entry['eqpresidency'];
+            // Set the individual id to 0 for EQ Presidency tagged entry
+            if($eqpresidency == 1) { $indiv="0"; }
+            // Re-look up the individual name for the ID if we aren't an EQ Presidency tagged entry
+            else { $name = $indiv2name[$indiv]; }
+            //print "id=$id indiv=$indiv name=$name email=$email district=$district president=$president ";
+            //print "counselor=$counselor secretary=$secretary eqpres=$eqpresidency<br>";
+
+            if(($indiv > 0) || ($name != "")) {
+              if($id < $this->max_presidency_members) {
+                //print "Updating Existing Entry<br>";
+                $this->db2->query("UPDATE tc_presidency set" .
+                                  " indiv=" . $indiv . 
+                                  " ,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 tc_presidency (presidency,indiv,district,name,"
+                                  . "email,president,counselor,secretary,eqpres,valid) "
+                                  . "VALUES (NULL,'" . $indiv . "','" . $district . "','"
+                                  . $name . "','" . $email . "','" . $president  . "','"
+                                  . $counselor . "','" . $secretary . "','" . $eqpres  . "','1'"
+                                  .")",__LINE__,__FILE__);
+              }
+            } else {
+              //print "Ignoring Blank Entry<br>";
+            }
+          }
+
+         // Now update the tc_district table appropriately
+         
+         // Delete all the previous district entries from the table
+         $this->db->query("DELETE from tc_district where valid=1",__LINE__,__FILE__);
+         $this->db->query("DELETE from tc_district where valid=0",__LINE__,__FILE__);
+
+         // Always add a "District 0" assigned to the High Priests Group
+         $district = 0;
+         $name = "High Priests";
+         $indiv = 0;
+         $valid = 0;
+         $this->db2->query("INSERT INTO tc_district (district,name,supervisor,valid) "
+                           . "VALUES ('" . $district . "','" . $name . "','"
+                           . $indiv . "','" . $valid . "'"
+                           .")",__LINE__,__FILE__);
+         
+         
+         // Requery the tc_presidency table
+         $sql = "SELECT * FROM tc_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');
+             $indiv = $this->db->f('indiv');
+             $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 tc_district (district,name,supervisor,valid) "
+                                 . "VALUES ('" . $district . "','" . $name . "','"
+                                 . $indiv . "','" . $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 tc_presidency where valid=1";
+      $this->db->query($sql,__LINE__,__FILE__);
+      $table_data = "";
+      $header_row = "<th>Individual</th><th>Email</th><th>District</th><th>President</th><th>Counselor</th><th>Secretary</th><th>Presidency</th>";
+      while ($this->db->next_record())
+       {
+         // Extract the data for each presidency record
+         $id = $this->db->f('presidency');
+         $indiv = $this->db->f('indiv');
+         $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.'">';
+         
+         // individual
+         if($eqpresidency == 0) { 
+           $table_data.= '<td align=center><select name="eqpres['.$id.'][indiv]">';
+           $table_data.= '<option value=0></option>';  
+           for ($j=0; $j < count($indiv_id); $j++) {
+             $tmp_id = $indiv_id[$j];
+             $name = $indiv_name[$j];
+             if($indiv_id[$j] == $indiv) { $indivname = $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="'.$indivname.'">';
+         } else {
+           $table_data.= '<td align=left><input type=text size="20" name="eqpresname" value="Presidency"></td>';
+           $table_data.= '<input type=hidden name="eqpres['.$id.'][name]" value="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>';
+
+         // 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 individual 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.'">';
+      // individual
+      $table_data.= '<td align=center><select name="eqpres['.$id.'][indiv]">';
+      $table_data.= '<option value=0></option>';  
+      for ($j=0; $j < count($indiv_id); $j++) {
+       $tmp_id = $indiv_id[$j];
+       $name = $indiv_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>';
+      // 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();   
+    }
+
+  function email_appt($appointment)
+    {
+      //print "Emailing notification of appointment: $appointment <br>";
+
+      $sql = "SELECT * FROM tc_appointment where appointment='$appointment'";
+      $this->db->query($sql,__LINE__,__FILE__);
+       
+      while ($this->db->next_record())
+       {
+         $appointment = $this->db->f('appointment');
+         $presidency = $this->db->f('presidency');
+         $location = $this->db->f('location');
+         $interviewer = "";
+         $email = "";
+         $indiv = $this->db->f('indiv');
+         $indiv_name = "";
+         $family = $this->db->f('family');
+         $family_name = "";
+         $appt_name = "";
+         $phone = "";
+         $uid = $this->db->f('uid');
+                   
+         // Extract the year, month, day, hours, minutes, seconds from the appointment time
+         $appt_date = $this->db->f('date');
+         $date_array = explode("-",$appt_date);
+         $year = $date_array[0]; $month = $date_array[1]; $day = $date_array[2];
+         $appt_time = $this->db->f('time');
+         $time_array = explode(":",$appt_time);
+         $hour = $time_array[0]; $minute = $time_array[1]; $seconds = $time_array[2];
+
+         // Format the appointment time into an iCal UTC equivalent
+         $dtstamp = gmdate("Ymd"."\T"."His"."\Z");
+         $dtstart = gmdate("Ymd"."\T"."His"."\Z", mktime($hour,$minute,$seconds,$month,$day,$year));
+         $dtstartstr = date("l, F d, o g:i A", mktime($hour,$minute,$seconds,$month,$day,$year));
+         
+         $sql = "SELECT * FROM tc_presidency where presidency='$presidency'";
+         $this->db2->query($sql,__LINE__,__FILE__);
+         if($this->db2->next_record()) {
+           $email = $this->db2->f('email');
+           $interviewer = $this->db2->f('name');
+         }
+
+         // Set the email address of the interviewer
+         $from = $email;
+
+         if($indiv > 0) { 
+           $sql = "SELECT * FROM tc_indiv where indiv='$indiv'";
+           $this->db2->query($sql,__LINE__,__FILE__);
+           if($this->db2->next_record()) {
+             $indiv_name = $this->db2->f('name');
+             $phone = $this->db2->f('phone');
+             $appt_name = $indiv_name . " Interview";
+             $duration = $this->default_ppi_appt_duration * 60;
+           }
+         }
+
+         if($family > 0) { 
+           $sql = "SELECT * FROM tc_family where family='$family'";
+           $this->db2->query($sql,__LINE__,__FILE__);
+           if($this->db2->next_record()) {
+             $family_name = $this->db2->f('name');
+             $phone = $this->db2->f('phone');
+             $indiv_id = $this->db2->f('indiv_id');
+             $appt_name = $family_name . " Family Visit";
+             $sql = "SELECT * FROM tc_indiv where indiv='$indiv_id'";
+             $this->db3->query($sql,__LINE__,__FILE__);
+             if($this->db3->next_record()) {
+               $phone = $this->db3->f('phone');
+             }
+             $duration = $this->default_visit_appt_duration * 60;
+           }
+         }
+
+         $dtend = gmdate("Ymd"."\T"."His"."\Z", mktime($hour,$minute,$seconds+$duration,$month,$day,$year));
+         $dtendstr = date("g:i A", mktime($hour,$minute,$seconds+$duration,$month,$day,$year));
+         $date = $dtstartstr . "-" . $dtendstr;
+         $description = "$appt_name : $phone";
+         
+         if(($uid == 0) && ($appt_name != "")) { 
+           // Create a new calendar item for this appointment, since this must be the first time we
+           // are sending it out.
+           print "Sent new appointment to " . $interviewer . " at " . $email . " for " . $appt_name . "<br>";
+           $uid = rand() . rand(); // Generate a random identifier for this appointment
+           $subject = "Created: $appt_name";
+           
+           $this->db->query("UPDATE tc_appointment set" .
+                            " uid=" . $uid . 
+                            " WHERE appointment=" . $appointment,__LINE__,__FILE__);
+
+           $action = "PUBLISH";
+           $this->send_ical_appt($action, $email, $from, $subject, $dtstamp, $dtstart,
+                                 $dtend, $date, $location, $appt_name, $description, $uid);
+           
+         } else if(($uid != 0) && ($appt_name == "")) {
+           // Remove the calendar item for this appointment since it has already been sent
+           // and there is no name we have changed it to.
+           print "Sent deleted appointment to " . $interviewer . " at " . $email . " for " . $appt_date . " " . $appt_time . "<br>";
+           $subject = "Canceled: $appt_date $appt_time";
+           
+           $this->db->query("UPDATE tc_appointment set" .
+                            " uid=0" . 
+                            " WHERE appointment=" . $appointment,__LINE__,__FILE__);
+           
+           $action = "CANCEL";
+           $this->send_ical_appt($action, $email, $from, $subject, $dtstamp, $dtstart,
+                                 $dtend, $date, $location, $subject, $subject, $uid);
+           
+         } else if($uid != 0) {
+           // Update the existing appointment since we have changed it
+           print "Sent updated appointment to " . $interviewer . " at " . $email . " for " . $appt_name . "<br>";
+
+           $subject = "Canceled: $appt_date $appt_time";
+           $action = "CANCEL";
+           $this->send_ical_appt($action, $email, $from, $subject, $dtstamp, $dtstart,
+                                 $dtend, $date, $location, $subject, $subject, $uid);
+           
+           $uid = rand() . rand(); // Generate a random identifier for this appointment
+           $this->db->query("UPDATE tc_appointment set" .
+                            " uid=" . $uid .
+                            " WHERE appointment=" . $appointment,__LINE__,__FILE__);
+           
+           $subject = "Updated: $appt_name";       
+           $action = "PUBLISH";
+           $this->send_ical_appt($action, $email, $from, $subject, $dtstamp, $dtstart,
+                                 $dtend, $date, $location, $appt_name, $description, $uid);
+         }
+         
+       }
+         
+      return true;
+    }
+
+  function send_ical_appt($action, $to, $from, $subject, $dtstamp, $dtstart, $dtend, $date, $location, $summary, $description, $uid)
+    {
+      // Initialize our local variables
+      $boundary = "=MIME_APPOINTMENT_BOUNDARY";
+      $message = "";
+      $headers = "";
+
+      // Form the headers for the email message
+      $headers.="X-Mailer: PHP/" . phpversion() . "\n";
+      $headers.="Mime-Version: 1.0\n";
+      $headers.="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
+      $headers.="Content-Disposition: inline\n";
+      $headers.="Reply-To: $from\n";
+      $headers.="From: $from\n";
+
+      // Print the plaintext version of the appointment
+      $message.="--$boundary\n";
+      $message.="Content-Type: text/plain; charset=us-ascii\n";
+      $message.="Content-Disposition: inline\n";
+      $message.="\n";
+      $message.="What: $description\n";
+      $message.="When: $date\n";
+      $message.="Where: $location\n";
+      $message.="\n";
+      
+      // Print the .ics attachment version of the appointment
+      $message.="--$boundary\n";
+      $message.="Content-Type: text/calendar; charset=us-ascii\n";
+      $message.="Content-Disposition: attachment; filename=\"appointment.ics\"\n";
+      $message.="\n";
+      $message.="BEGIN:VCALENDAR" . "\n";
+      $message.="VERSION:2.0" . "\n";
+      $message.="PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN" . "\n";
+      $message.="METHOD:$action" . "\n";
+      $message.="BEGIN:VEVENT" . "\n";
+      $message.="ORGANIZER:MAILTO:$from". "\n";
+      $message.="DTSTAMP:$dtstamp" . "\n";
+      $message.="DTSTART:$dtstart" . "\n";
+      $message.="DTEND:$dtend" . "\n";
+      $message.="SUMMARY:$summary" . "\n";
+      $message.="DESCRIPTION:$description" . "\n";
+      $message.="LOCATION:$location" . "\n";
+      $message.="UID:$uid" ."\n";
+      $message.="TRANSP:OPAQUE" . "\n";
+      $message.="SEQUENCE:0" . "\n";
+      $message.="CLASS:PUBLIC" . "\n";
+      $message.="END:VEVENT" . "\n";
+      $message.="END:VCALENDAR" . "\n";
+
+      // Complete the message
+      $message.="--$boundary\n";
+
+      // Send the message
+      mail($to, $subject, $message, $headers);
+      
+    }
+
+  function get_time_selection_form($hour, $minute, $pm, $presidency, $appointment)
+    {
+      $form_data = "";
+      $blank = 0;
+      
+      if($hour == 0) { $blank = 1; }
+
+      if($this->time_drop_down_lists == 1) {
+       // Create drop down lists to get the time
+       $form_data.= '<select name=sched['.$presidency.']['.$appointment.'][hour]>';
+       if($blank == 1) { $form_data.= '<option value=""></option>'; }
+       foreach(range(1,12) as $num) {
+         if($hour == $num) { $selected = 'selected="selected"'; } else { $selected = ''; }
+         $form_data.= '<option value='.$num.' '.$selected.'>'.$num.'</option>';
+       }
+       $form_data.= '</select>';
+       $form_data.= '&nbsp;:&nbsp;';
+       $form_data.= '<select name=sched['.$presidency.']['.$appointment.'][minute]>';
+       if($blank == 1) { $form_data.= '<option value=""></option>'; }
+       $num = 0;
+       while($num < 60) {
+         if($num < 10) { $num = "0" . "$num"; }
+         if($minute == $num) { $selected = 'selected="selected"'; } else { $selected = ''; }
+         if($blank == 1) { $selected = ""; }
+         $form_data.= '<option value='.$num.' '.$selected.'>'.$num.'</option>';
+         $num = $num + $this->time_drop_down_list_inc;
+       }
+       $form_data.= '</select>';
+      } else {
+       // Use free form text fields to get the time
+       if($blank == 1) { $hour = ""; $minute = ""; $ampm = ""; }
+       $form_data.= '<input type=text size=2 name=sched['.$presidency.']['.$appointment.'][hour] value='.$hour.'>';
+       $form_data.= ':';
+       $form_data.= '<input type=text size=2 name=sched['.$presidency.']['.$appointment.'][minute] value='.$minute.'>';
+       $form_data.= '&nbsp;';
+      }
+      // Always use a drop-down select form for am/pm
+      $form_data.= '<select name=sched['.$presidency.']['.$appointment.'][pm]>';
+      if($blank == 0) { 
+       if($pm == 0) { $form_data.= '<option value=0 selected>am</option>'; $form_data.= '<option value=1>pm</option>'; }
+       if($pm == 1) { $form_data.= '<option value=0>am</option>'; $form_data.= '<option value=1 selected>pm</option>'; }
+      } else {
+       $form_data.= '<option value=""></option>';
+       $form_data.= '<option value=0>am</option>';
+       $form_data.= '<option value=1>pm</option>';
+      }
+      $form_data.= '</select>';
+      
+      return $form_data;
+    }
+}
+
+?>
index d4e9d22becb2ea91e179824d3ec8fbdccf10b2d4..21511f6bfc4fced0b8e7e562ae0b619c73ac1ff7 100644 (file)
@@ -1,6 +1,6 @@
 <?php
   /**************************************************************************\
-  * phpGroupWare - 3rd                                                       *
+  * phpGroupWare - tc                                                        *
   * http://www.phpgroupware.org                                              *
   * -----------------------------------------------                          *
   *  This program is free software; you can redistribute it and/or modify it *
index 98038cbf3123e6b435590cce0198db83f5bd76b8..0314c6965147ec4c7fe6436a89be3ccc5b09771f 100644 (file)
@@ -1,6 +1,6 @@
 <?php
   /**************************************************************************\
-  * phpGroupWare - 3rd                                                       *
+  * phpGroupWare - tc                                                        *
   * http://www.phpgroupware.org                                              *
   * -----------------------------------------------                          *
   *  This program is free software; you can redistribute it and/or modify it *
index df0750e1eda86ff6dde1646d58995d362b84559c..443c35ea20b855a4e8cbe8a925b1067c24262577 100644 (file)
@@ -1,6 +1,6 @@
 <?php
   /**************************************************************************\
-  * phpGroupWare - 3rd                                                       *
+  * phpGroupWare - tc                                                        *
   * http://www.phpgroupware.org                                              *
   * -----------------------------------------------                          *
   *  This program is free software; you can redistribute it and/or modify it *
@@ -13,7 +13,7 @@
 {
 // Only Modify the $file and $title variables.....
        $file = Array(
-//             'Administrate'  => $GLOBALS['phpgw']->link('/3rd/admin.php'),
+//             'Administrate'  => $GLOBALS['phpgw']->link('/tc/admin.php'),
        );
 //Do not modify below this line
        display_section($appname,$file);
index d79d2508a2aea0f831e640e15c1592aa4b198329..5631331f618f21425191c42a10a662f9b9733555 100644 (file)
@@ -1,6 +1,6 @@
 <?php
   /**************************************************************************\
-  * phpGroupWare - 3rd                                                       *
+  * phpGroupWare - tc                                                        *
   * http://www.phpgroupware.org                                              *
   * -----------------------------------------------                          *
   *  This program is free software; you can redistribute it and/or modify it *
@@ -12,7 +12,7 @@
 {
 // Only Modify the $file and $title variables.....
        $file = Array(
-//             'Preferences'     => $GLOBALS['phpgw']->link('/3rd/preferences.php'),
+//             'Preferences'     => $GLOBALS['phpgw']->link('/tc/preferences.php'),
 //             'Grant Access'    => $GLOBALS['phpgw']->link('/index.php','menuaction=preferences.uiaclprefs.index&acl_app='.$appname),
 //             'Edit categories' => $GLOBALS['phpgw']->link('/index.php','menuaction=preferences.uicategories.index&cats_app=' . $appname . '&cats_level=True&global_cats=True')
        );
index 960c99339d6dac15f74b26cdd7b8677e8dd10215..b3dfb635d74ed34f0526f919915b52491a6bd670 100644 (file)
--- a/index.php
+++ b/index.php
@@ -13,7 +13,7 @@
 
        $GLOBALS['phpgw_info']['flags'] = array
        (
-               'currentapp' => '3rd',
+               'currentapp' => 'tc',
                'noheader'   => True,
                'nonavbar'   => True 
        );
@@ -29,8 +29,8 @@
        }
        else
        {
-               $app = '3rd';
-               $class = '3rd';
+               $app = 'tc';
+               $class = 'tc';
                $invalid_data = True;
        }
 
                }
                //$GLOBALS['phpgw']->log->commit();
                
-               //$GLOBALS['phpgw']->redirect_link('/3rd/index.php?menuaction=3rd.3rd.ht_view');
+               //$GLOBALS['phpgw']->redirect_link('/tc/index.php?menuaction=tc.tc.ht_view');
        } 
 
-//$obj = CreateObject('3rd.3rd');
+//$obj = CreateObject('tc.tc');
 //$obj->ht_view();
 //$GLOBALS['phpgw']->common->phpgw_footer();
 
diff --git a/setup/3rd_config b/setup/3rd_config
deleted file mode 100644 (file)
index fb2c716..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-///////////////////////////////////////////////////////////////////////////////////
-// This is a configuration/preferences file for your 3rd Counselor application.
-// You must modify these values to match your system configuration.
-// Save the resulting file as "db_config.local" in this setup dir.
-// This will prevent your settings from being overwritten by future code updates.
-///////////////////////////////////////////////////////////////////////////////////
-
-// The full path to a directory readable and writable by your webserver user
-// that will be used to dump the MLS data uploaded via the web interface to.
-$this->upload_target_path = "/home/users/pres/3rd_data";
-
-// The full path to the installation location of this module
-$this->application_path = "/usr/share/phpgroupware/3rdCounselor";
-
-// The full path to the unzip application
-$this->unzip_path = "/usr/bin/unzip";
-
-// Use drop down lists when specifying times in the scheduling tools.
-// If set to 0, free form text fields for the hour and minutes will be used instead.
-// If set to 1, drop down lists will be used for the hour and minute fields
-$this->time_drop_down_lists = 1;
-
-// Frequency of hometeaching interview stats in months
-// This number must evenly divide 12.
-// Examples: Monthly=1 Quarterly=3 Yearly=12
-$this->monthly_hometeaching_interview_stats = 3;
-
-// Specify the minute interval increment to use in the time drop down lists
-$this->time_drop_down_list_inc = 15;
-
-// The default visit appointment duration in minutes
-$this->default_visit_appt_duration = 45;
-
-// The default ppi appointment duration in minutes
-$this->default_ppi_appt_duration = 30;
-
-// The default number of months of hometeaching history to show
-$this->default_ht_num_months = 3;
-
-// The default number of months of ppi history to show
-$this->default_ppi_num_months = 3;
-
-// The default number of years of ppi history to show
-$this->default_ppi_num_years = 0;
-
-// The default number of quarters of hometeaching interviews to show
-$this->default_int_num_quarters = 1;
-
-// The default number of years of hometeaching interviews to show
-$this->default_int_num_years = 0;
-
-// The default number of quarters of attendance to show
-$this->default_att_num_quarters = 1;
-
-// The default nubmer of years of visits to show
-$this->default_vis_num_years = 1;
-
-// The maximum number of districts you will ever need to create
-$this->max_num_districts = 4;
-
-?>
index cee462cf6db45a448e435a0ebdf8a96be6a5f753..492920addc89981d1f786dac95ed8c29230227ce 100644 (file)
        /* $Id: setup.inc.php,v 1.9.4.2 2004/03/07 02:14:23 skwashd Exp $ */
 
        /* Basic information about this app */
-       $setup_info['3rd']['name']      = '3rd';
-       $setup_info['3rd']['title']     = '3rd Counselor';
-       $setup_info['3rd']['version']   = '0.5.0';
-       $setup_info['3rd']['app_order'] = 8;
-       $setup_info['3rd']['enable']    = 1;
+       $setup_info['tc']['name']      = 'tc';
+       $setup_info['tc']['title']     = '3rd Counselor';
+       $setup_info['tc']['version']   = '0.5.0';
+       $setup_info['tc']['app_order'] = 8;
+       $setup_info['tc']['enable']    = 1;
        
        /* some info's for about.php and apps.phpgroupware.org */
-       $setup_info['3rd']['author']    = 'Alan J. Pippin';
-       $setup_info['3rd']['license']   = 'GPL';
-       $setup_info['3rd']['description'] =
+       $setup_info['tc']['author']    = 'Alan J. Pippin';
+       $setup_info['tc']['license']   = 'GPL';
+       $setup_info['tc']['description'] =
                'This app provides tools to help manage a Priesthood Elders Quorum or High Priest Group';
-       $setup_info['3rd']['note'] =
+       $setup_info['tc']['note'] =
                'This was created for the Miramont Ward.';
-       $setup_info['3rd']['maintainer'] = 'Alan J. Pippin';
-       $setup_info['3rd']['maintainer_email'] = 'apippin@pippins.net';
+       $setup_info['tc']['maintainer'] = 'Alan J. Pippin';
+       $setup_info['tc']['maintainer_email'] = 'apippin@pippins.net';
        
        /* The tables this app creates */
        /* This APP requires manual table creation */
-       /* Manually import the 3rd/sql/3rd.sql file into mysql */
+       /* Manually import the tc/sql/tc.sql file into mysql */
 
        /* The hooks this app includes, needed for hooks registration */
-       $setup_info['3rd']['hooks'] = Array(
+       $setup_info['tc']['hooks'] = Array(
                'preferences',
                'manual',
                'add_def_prefs'
        );
 
        /* Dependacies for this app to work */
-       $setup_info['3rd']['depends'][] = array(
+       $setup_info['tc']['depends'][] = array(
                         'appname' => 'phpgwapi',
                         'versions' => Array('0.9.10', '0.9.11' , '0.9.12', '0.9.13', '0.9.14', '0.9.16')
                );
diff --git a/setup/tc_config b/setup/tc_config
new file mode 100644 (file)
index 0000000..d144746
--- /dev/null
@@ -0,0 +1,63 @@
+<?php
+
+///////////////////////////////////////////////////////////////////////////////////
+// This is a configuration/preferences file for your 3rd Counselor application.
+// You must modify these values to match your system configuration.
+// Save the resulting file as "db_config.local" in this setup dir.
+// This will prevent your settings from being overwritten by future code updates.
+///////////////////////////////////////////////////////////////////////////////////
+
+// The full path to a directory readable and writable by your webserver user
+// that will be used to dump the MLS data uploaded via the web interface to.
+$this->upload_target_path = "/home/users/pres/tc_data";
+
+// The full path to the installation location of this module
+$this->application_path = "/usr/share/phpgroupware/tc";
+
+// The full path to the unzip application
+$this->unzip_path = "/usr/bin/unzip";
+
+// Use drop down lists when specifying times in the scheduling tools.
+// If set to 0, free form text fields for the hour and minutes will be used instead.
+// If set to 1, drop down lists will be used for the hour and minute fields
+$this->time_drop_down_lists = 1;
+
+// Frequency of hometeaching interview stats in months
+// This number must evenly divide 12.
+// Examples: Monthly=1 Quarterly=3 Yearly=12
+$this->monthly_hometeaching_interview_stats = 3;
+
+// Specify the minute interval increment to use in the time drop down lists
+$this->time_drop_down_list_inc = 15;
+
+// The default visit appointment duration in minutes
+$this->default_visit_appt_duration = 45;
+
+// The default ppi appointment duration in minutes
+$this->default_ppi_appt_duration = 30;
+
+// The default number of months of hometeaching history to show
+$this->default_ht_num_months = 3;
+
+// The default number of months of ppi history to show
+$this->default_ppi_num_months = 3;
+
+// The default number of years of ppi history to show
+$this->default_ppi_num_years = 0;
+
+// The default number of quarters of hometeaching interviews to show
+$this->default_int_num_quarters = 1;
+
+// The default number of years of hometeaching interviews to show
+$this->default_int_num_years = 0;
+
+// The default number of quarters of attendance to show
+$this->default_att_num_quarters = 1;
+
+// The default nubmer of years of visits to show
+$this->default_vis_num_years = 1;
+
+// The maximum number of districts you will ever need to create
+$this->max_num_districts = 4;
+
+?>
diff --git a/sql/3rd.jpg b/sql/3rd.jpg
deleted file mode 100644 (file)
index 4a398e5..0000000
Binary files a/sql/3rd.jpg and /dev/null differ
diff --git a/sql/3rd.sql b/sql/3rd.sql
deleted file mode 100644 (file)
index 7de171d..0000000
+++ /dev/null
@@ -1,249 +0,0 @@
--- 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 `3rd_aaronic`
---
-CREATE TABLE `3rd_aaronic` (
-  `aaronic` int(16) unsigned NOT NULL auto_increment,
-  `name` varchar(60) default NULL,
-  `phone` varchar(12) default NULL,
-  `email` varchar(120) default NULL,
-  `valid` tinyint(1) default NULL,
-  PRIMARY KEY  (`aaronic`)
-) ENGINE=MyISAM AUTO_INCREMENT=92 DEFAULT CHARSET=latin1;
-
-
---
--- Table structure for table `3rd_activity`
---
-CREATE TABLE `3rd_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 `3rd_appointment`
---
-CREATE TABLE `3rd_appointment` (
-  `appointment` int(16) unsigned NOT NULL auto_increment,
-  `presidency` int(16) unsigned NOT NULL default '0',
-  `family` int(16) unsigned default '0',
-  `indiv` int(16) unsigned default '0',
-  `date` date NOT NULL default '0000-00-00',
-  `time` time NOT NULL default '00:00:00',
-  `location` varchar(120) default NULL,
-  `uid` bigint(64) unsigned NOT NULL default '0',
-  PRIMARY KEY  (`appointment`)
-) ENGINE=MyISAM AUTO_INCREMENT=132 DEFAULT CHARSET=latin1;
-
---
--- Table structure for table `3rd_assignment`
---
-CREATE TABLE `3rd_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 `3rd_assignment`
---
-LOCK TABLES `3rd_assignment` WRITE;
-/*!40000 ALTER TABLE `3rd_assignment` DISABLE KEYS */;
-INSERT INTO `3rd_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 `3rd_assignment` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `3rd_attendance`
---
-CREATE TABLE `3rd_attendance` (
-  `indiv` int(16) unsigned NOT NULL default '0',
-  `date` date default NULL,
-  KEY `indiv` (`indiv`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-
---
--- Table structure for table `3rd_calling`
---
-CREATE TABLE `3rd_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 `3rd_child`
---
-CREATE TABLE `3rd_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 `3rd_companionship`
---
-
-CREATE TABLE `3rd_companionship` (
-  `companionship` int(16) unsigned NOT NULL default '0',
-  `indiv` 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 `3rd_district`
---
-CREATE TABLE `3rd_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;
-
---
--- Table structure for table `3rd_indiv`
---
-CREATE TABLE `3rd_indiv` (
-  `indiv` int(16) unsigned NOT NULL auto_increment,
-  `indiv_id` int(16) unsigned NOT NULL,
-  `name` varchar(60) default NULL,
-  `phone` varchar(12) default NULL,
-  `email` varchar(120) default NULL,
-  `priesthood` enum('High Priest','Elder','Priest','Teacher','Deacon','Unordained') DEFAULT NULL,
-  `prospective` enum('y','n') DEFAULT 'n',
-  `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  (`indiv`)
-) ENGINE=MyISAM AUTO_INCREMENT=105 DEFAULT CHARSET=latin1;
-
---
--- Table structure for table `3rd_family`
---
-CREATE TABLE `3rd_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 '',
-  `indiv_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 `3rd_parent`
---
-CREATE TABLE `3rd_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 `3rd_participation`
---
-CREATE TABLE `3rd_participation` (
-  `indiv` int(16) unsigned NOT NULL default '0',
-  `activity` int(16) unsigned default NULL,
-  UNIQUE KEY `activity_ndx` (`indiv`,`activity`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-
---
--- Table structure for table `3rd_interview`
---
-CREATE TABLE `3rd_interview` (
-  `interview` int(16) unsigned NOT NULL auto_increment,
-  `interviewer` int(16) unsigned default NULL,
-  `indiv` int(16) unsigned default NULL,
-  `aaronic` int(16) unsigned NOT NULL default '0',
-  `date` date default NULL,
-  `notes` text,
-  `interview_type` enum('hti','ppi') NOT NULL DEFAULT 'hti',
-  PRIMARY KEY  (`ppi`)
-) ENGINE=MyISAM AUTO_INCREMENT=248 DEFAULT CHARSET=latin1;
-
-
---
--- Table structure for table `3rd_presidency`
---
-CREATE TABLE `3rd_presidency` (
-  `presidency` int(16) unsigned NOT NULL auto_increment,
-  `indiv` 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',
-  `eqpres` tinyint(1) default '0',
-  `valid` tinyint(1) default '1',
-  KEY `presidency` (`presidency`),
-  KEY `indiv` (`indiv`)
-) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
-
---
--- Table structure for table `3rd_visit`
---
-CREATE TABLE `3rd_visit` (
-  `visit` int(16) unsigned NOT NULL auto_increment,
-  `family` int(16) unsigned default NULL,
-  `companionship` int(16) unsigned default NULL,
-  `companion1` int(16) unsigned default NULL,
-  `companion2` int(16) unsigned default NULL,
-  `date` date default NULL,
-  `notes` text,
-  `visited` enum('y','n','') default NULL,
-  `visit_type` enum('presidency','hometeaching') not null default 'hometeaching',
-  PRIMARY KEY  (`visit`)
-) ENGINE=MyISAM AUTO_INCREMENT=9513 DEFAULT CHARSET=latin1;
-
---
--- Table structure for table `3rd_willingness`
---
-CREATE TABLE `3rd_willingness` (
-  `indiv` int(16) unsigned NOT NULL,
-  `assignment` int(16) unsigned NOT NULL,
-  `willing` enum('y','n','') NOT NULL,
-  KEY `indiv` (`indiv`,`assignment`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1;
index 44306b1fa40a41ae010d4cd2ca66638c347f4726..43547329c3f08bda1b436a5dda838fc31e377761 100755 (executable)
@@ -1 +1 @@
-dot -Tjpg -o 3rd.jpg schema.dot 
+dot -Tjpg -o tc.jpg schema.dot 
diff --git a/sql/tc.jpg b/sql/tc.jpg
new file mode 100644 (file)
index 0000000..4a398e5
Binary files /dev/null and b/sql/tc.jpg differ
diff --git a/sql/tc.sql b/sql/tc.sql
new file mode 100644 (file)
index 0000000..8cbfdb2
--- /dev/null
@@ -0,0 +1,249 @@
+-- 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 `tc_aaronic`
+--
+CREATE TABLE `tc_aaronic` (
+  `aaronic` int(16) unsigned NOT NULL auto_increment,
+  `name` varchar(60) default NULL,
+  `phone` varchar(12) default NULL,
+  `email` varchar(120) default NULL,
+  `valid` tinyint(1) default NULL,
+  PRIMARY KEY  (`aaronic`)
+) ENGINE=MyISAM AUTO_INCREMENT=92 DEFAULT CHARSET=latin1;
+
+
+--
+-- Table structure for table `tc_activity`
+--
+CREATE TABLE `tc_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 `tc_appointment`
+--
+CREATE TABLE `tc_appointment` (
+  `appointment` int(16) unsigned NOT NULL auto_increment,
+  `presidency` int(16) unsigned NOT NULL default '0',
+  `family` int(16) unsigned default '0',
+  `indiv` int(16) unsigned default '0',
+  `date` date NOT NULL default '0000-00-00',
+  `time` time NOT NULL default '00:00:00',
+  `location` varchar(120) default NULL,
+  `uid` bigint(64) unsigned NOT NULL default '0',
+  PRIMARY KEY  (`appointment`)
+) ENGINE=MyISAM AUTO_INCREMENT=132 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `tc_assignment`
+--
+CREATE TABLE `tc_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 `tc_assignment`
+--
+LOCK TABLES `tc_assignment` WRITE;
+/*!40000 ALTER TABLE `tc_assignment` DISABLE KEYS */;
+INSERT INTO `tc_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 `tc_assignment` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `tc_attendance`
+--
+CREATE TABLE `tc_attendance` (
+  `indiv` int(16) unsigned NOT NULL default '0',
+  `date` date default NULL,
+  KEY `indiv` (`indiv`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `tc_calling`
+--
+CREATE TABLE `tc_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 `tc_child`
+--
+CREATE TABLE `tc_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 `tc_companionship`
+--
+
+CREATE TABLE `tc_companionship` (
+  `companionship` int(16) unsigned NOT NULL default '0',
+  `indiv` 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 `tc_district`
+--
+CREATE TABLE `tc_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;
+
+--
+-- Table structure for table `tc_indiv`
+--
+CREATE TABLE `tc_indiv` (
+  `indiv` int(16) unsigned NOT NULL auto_increment,
+  `indiv_id` int(16) unsigned NOT NULL,
+  `name` varchar(60) default NULL,
+  `phone` varchar(12) default NULL,
+  `email` varchar(120) default NULL,
+  `priesthood` enum('High Priest','Elder','Priest','Teacher','Deacon','Unordained') DEFAULT NULL,
+  `prospective` enum('y','n') DEFAULT 'n',
+  `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  (`indiv`)
+) ENGINE=MyISAM AUTO_INCREMENT=105 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `tc_family`
+--
+CREATE TABLE `tc_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 '',
+  `indiv_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 `tc_parent`
+--
+CREATE TABLE `tc_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 `tc_participation`
+--
+CREATE TABLE `tc_participation` (
+  `indiv` int(16) unsigned NOT NULL default '0',
+  `activity` int(16) unsigned default NULL,
+  UNIQUE KEY `activity_ndx` (`indiv`,`activity`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `tc_interview`
+--
+CREATE TABLE `tc_interview` (
+  `interview` int(16) unsigned NOT NULL auto_increment,
+  `interviewer` int(16) unsigned default NULL,
+  `indiv` int(16) unsigned default NULL,
+  `aaronic` int(16) unsigned NOT NULL default '0',
+  `date` date default NULL,
+  `notes` text,
+  `interview_type` enum('hti','ppi') NOT NULL DEFAULT 'hti',
+  PRIMARY KEY  (`ppi`)
+) ENGINE=MyISAM AUTO_INCREMENT=248 DEFAULT CHARSET=latin1;
+
+
+--
+-- Table structure for table `tc_presidency`
+--
+CREATE TABLE `tc_presidency` (
+  `presidency` int(16) unsigned NOT NULL auto_increment,
+  `indiv` 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',
+  `eqpres` tinyint(1) default '0',
+  `valid` tinyint(1) default '1',
+  KEY `presidency` (`presidency`),
+  KEY `indiv` (`indiv`)
+) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `tc_visit`
+--
+CREATE TABLE `tc_visit` (
+  `visit` int(16) unsigned NOT NULL auto_increment,
+  `family` int(16) unsigned default NULL,
+  `companionship` int(16) unsigned default NULL,
+  `companion1` int(16) unsigned default NULL,
+  `companion2` int(16) unsigned default NULL,
+  `date` date default NULL,
+  `notes` text,
+  `visited` enum('y','n','') default NULL,
+  `visit_type` enum('presidency','hometeaching') not null default 'hometeaching',
+  PRIMARY KEY  (`visit`)
+) ENGINE=MyISAM AUTO_INCREMENT=9513 DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `tc_willingness`
+--
+CREATE TABLE `tc_willingness` (
+  `indiv` int(16) unsigned NOT NULL,
+  `assignment` int(16) unsigned NOT NULL,
+  `willing` enum('y','n','') NOT NULL,
+  KEY `indiv` (`indiv`,`assignment`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
diff --git a/tc.spec b/tc.spec
new file mode 100644 (file)
index 0000000..1e88ce7
--- /dev/null
+++ b/tc.spec
@@ -0,0 +1,56 @@
+%define packagename tc
+%define phpgwdirname tc
+%define version 0.0.1.000
+
+# This is for Mandrake RPMS 
+# (move these below the RedHat ones for Mandrake RPMs)
+%define httpdroot  /var/www/html/phpgroupware
+%define packaging 1mdk
+
+# This is for RedHat RPMS
+# (move these below the Mandrake ones for RedHat RPMs)
+%define httpdroot  /home/httpd/html/phpgroupware
+%define packaging 1
+
+Summary: Tools for Managing a Priesthood Quorum app for phpGroupWare. 
+Name: %{packagename}
+Version: %{version}
+Release: %{packaging}
+Copyright: GPL
+Group: Web/Database
+URL: http://www.phpgroupware.org/apps/tc/
+Source0: ftp://ftp.sourceforge.net/pub/sourceforge/phpgroupware/%{packagename}-%{version}.tar.bz2
+BuildRoot: %{_tmppath}/%{packagename}-buildroot
+Prefix: %{httpdroot}
+Buildarch: noarch
+requires: phpgroupware >= 0.9.10
+AutoReq: 0
+
+%description
+This is an Priesthood Quorum Presidency Application.
+
+%prep
+%setup -n %{phpgwdirname}
+
+%build
+# no build required
+
+%install
+rm -rf $RPM_BUILD_ROOT
+mkdir -p $RPM_BUILD_ROOT%{prefix}/%{phpgwdirname}
+cp -aRf * $RPM_BUILD_ROOT%{prefix}/%{phpgwdirname}
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post
+
+%postun
+
+%files
+%{prefix}/%{phpgwdirname}
+
+%changelog
+- EQ App Update
+
+# end of file