Changed the way hometeaching stats are calculated.
[eq/.git] / inc / class.eq.inc.php
index 5ac7c0ab9769a6b88b9a68b8670e4876ad6a7f76..ca6b8097d9e69841b87845eeadb668342a8d1ed0 100644 (file)
@@ -68,12 +68,12 @@ class eq
  
   function eq()
     {
-      if(file_exists('setup/eq_config.local')) {
-       include('setup/eq_config.local');
+      if(file_exists("setup/eq_config.local")) {
+       include("setup/eq_config.local");
       } else {
-       include('setup/eq_config');
+       include("setup/eq_config");
       }
-
+      
       $this->script_path = "$this->application_path"."/bin";
       $this->max_presidency_members = 99;
       $this->max_appointments = 32768;
@@ -223,9 +223,9 @@ class eq
          $aaronic[$aaronic_id]['name'] = $this->db->f('name');
          $aaronic[$aaronic_id]['phone'] = $this->db->f('phone');
        }
-      
-      $total_families = 0;
+
       $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']);      
@@ -243,8 +243,8 @@ class eq
          }
 
        $comp_width=450; $visit_width=25; $table_width=$comp_width + $num_months*$visit_width;
-       $table_data=""; $num_companionships = 0; $num_families = 0;
-       for($m=$num_months; $m >= 0; $m--) { $visits[$m] = 0; }
+       $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
@@ -278,7 +278,6 @@ class eq
          $k=0;
          while ($this->db->next_record())
            {
-             $num_families++; $total_families++;
              $family_name = $this->db->f('name');
              $family_id = $this->db->f('family');
              $this->nextmatchs->template_alternate_row_color(&$this->t);
@@ -294,12 +293,24 @@ class eq
                $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 eq_visit WHERE date >= '$month_start' AND date <= '$month_end' ".
-                      " AND companionship!=0".
-                      " AND family=". $family_id;
+                  " 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 eq_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'] = 'eq.eq.ht_update';
                $link_data['date'] = $month_start;
@@ -314,19 +325,21 @@ class eq
                if(!$total_visits[$m]) { $total_visits[$m] = 0; }
                if($this->db2->next_record()) {
                  if($this->db2->f('visited') == 'y') {
-                   $visits[$m]++; $total_visits[$m]++;           
+                   $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]++;
+                   //$visits[$m]++; $total_visits[$m]++;
                    $table_data .= "<td>&nbsp;</td>";
                  }
                }
                else {
-                 $visits[$m]++; $total_visits[$m]++;
+                 //$visits[$m]++; $total_visits[$m]++;
                  $table_data .= "<td>&nbsp;</td>";
                }
              }
@@ -336,11 +349,15 @@ class eq
          $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>$num_families Families<br>Visit Totals:</font></b></td>";
+       $stat_data = "<tr><td><b><font size=-2>Families Hometaught:<br>Hometeaching Percentage:</font></b></td>";
 
        for($m=$num_months; $m >=0; $m--) {
-         $percent = ceil(($visits[$m] / $num_families)*100);
-         $stat_data .= "<td align=center><font size=-2><b>$visits[$m]<br>$percent%</font></b></td>";
+         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>";
 
@@ -351,10 +368,14 @@ class eq
        $this->t->fp('list','district_list',True);
       }
 
-      $totals = "<tr><td><b><font size=-2>$total_families Total Families<br>Visit Totals:</font></b></td>";
+      $totals = "<tr><td><b><font size=-2>Total Families Hometaught:<br>Total Hometeaching Percentage:</font></b></td>";
       for($m=$num_months; $m >=0; $m--) {
-       $percent = ceil(($total_visits[$m] / $total_families)*100);
-       $totals .= "<td align=center><font size=-2><b>$total_visits[$m]<br>$percent%</font></b></td>";
+       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>";
       
@@ -400,16 +421,9 @@ class eq
            }
          for ($j=0; $j < count($unique_companionships); $j++)
            {
-             // FIXME: We won't be able to go back and edit history on families that have been
-             // reassigned to a different companionship. The following delete command will not delete
-             // the history of visits under an older companionship, only the ones for the existing
-             // companionship. This will lead to duplicate visits being entered for an older
-             // month for the same family, making it impossible to change the past history once
-             // a family is reassigned. However, you will be able to view the history just fine.
-
              //$comp=$unique_companionships[$j]['companionship'];
              //print "deleting from eq_visit where companionship=$comp and date=$date and district=$district<br>";
-             // Delete all the visits that have taken place for all families for this month
+             // Delete all the visits that have taken place for all families for this companionsthip for this month
              $this->db->query("DELETE from eq_visit where companionship=" . $unique_companionships[$j]['companionship'] .
                               " AND " . "date='" . $date . "'",__LINE__,__FILE__);
            }
@@ -507,29 +521,40 @@ class eq
        $this->db->query($sql,__LINE__,__FILE__);
        while ($this->db->next_record())
          {
-           $num_families++; $total_families++;
            $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 eq_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 eq_visit WHERE date >= '$month_start' AND date <= '$month_end' ".
                   " AND companionship!=0".
                   " AND family=". $family_id;
-           $this->db2->query($sql,__LINE__,__FILE__);
+             $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++;
+               $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';
@@ -556,10 +581,10 @@ class eq
        $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>$num_families Families<br>Visit Totals:</font></b></td>";
+      $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<br>$percent%</font></b></td>";
+      $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);
@@ -2706,26 +2731,21 @@ class eq
          $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 Quarterly Totals:</font></b></td>";
+       $stat_data = "<tr><td><b><font size=-2>$num_companionships Companionships<br>Interview Totals:</font></b></td>";
 
        // Print the hometeaching interview stats
-       if($this->monthly_hometeaching_interview_stats == 0) { //Quarterly
-         for($m=$num_months; $m >=0; $m--) {
-           $month = $current_month - $m;
-           if(($month % 3) == 1) { $quarter_total = $ints[$m]; }
-           else { $quarter_total += $ints[$m]; }
-           $percent = ceil(($quarter_total / $num_companionships)*100);
-           $stat_data .= "<td align=center><font size=-2><b>$quarter_total<br>$percent%</font></b></td>";
-         }
-         $stat_data .= "</tr>";
-       }
-       else { // Monthly
-         for($m=$num_months; $m >=0; $m--) {
-           $percent = ceil(($ints[$m] / $num_companionships)*100);
-           $stat_data .= "<td align=center><font size=-2><b>$ints[$m]<br>$percent%</font></b></td>";
-         }
-         $stat_data .= "</tr>";
+       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);
@@ -2735,27 +2755,20 @@ class eq
       }
 
       // Display the totals
-      if($this->monthly_hometeaching_interview_stats == 0) { //Quarterly
-       $quarter_total = 0;
-       $totals = "<tr><td><b><font size=-2>$total_companionships Total Comps<br>Interview Quarterly Totals:</font></b></td>";
-       for($m=$num_months; $m >=0; $m--) {
-         $month = $current_month - $m;
-         if(($month % 3) == 1) { $quarter_total = $total_ints[$m]; }
-         else { $quarter_total += $total_ints[$m]; }
-         $percent = ceil(($quarter_total / $total_companionships)*100);
-         $totals .= "<td align=center><font size=-2><b>$quarter_total<br>$percent%</font></b></td>";
-       }
-       $totals .= "</tr>";
-      }
-      else { //Monthly
-       $totals = "<tr><td><b><font size=-2>$total_companionships Total Comps<br>Interview Monthly Totals:</font></b></td>";
-       for($m=$num_months; $m >=0; $m--) {
-         $percent = ceil(($total_ints[$m] / $total_companionships)*100);
-         $totals .= "<td align=center><font size=-2><b>$total_ints[$m]<br>$percent%</font></b></td>";
-       }
-       $totals .= "</tr>";
+      $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(); 
@@ -3879,12 +3892,11 @@ class eq
            
            # unzip the data into this directory
            print "-> Unzipping the data<br>\n";
-           $data_file = $data_dir . '';
-           exec('unzip ' . $data_dir . '/*.zip -d ' . $data_dir . ' 2>&1', $result, $return_code);
+           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. Aborting import.";
+             print "-E- Unable to unzip the uploaded file into the data dir: $data_dir. Aborting import.";
              print "</font></b>";
              return 0;
            }