Update for getting correct count for member events.
authorSteve Sutton <steve@gaslightmedia.com>
Mon, 12 Dec 2016 16:37:11 +0000 (11:37 -0500)
committerSteve Sutton <steve@gaslightmedia.com>
Mon, 12 Dec 2016 16:37:11 +0000 (11:37 -0500)
Need to pass the member id to the two functions getting the counts for
member events.

models/front/events/list.php

index c8f6677..82ba568 100644 (file)
@@ -165,7 +165,7 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction
                 }
             } else {
                 // This is the default date range for this agenda view
-                $total_current_events = $this->checkHaveAnyEvents();
+                $total_current_events = $this->checkHaveAnyEvents( $memberId );
                 $total_events_wanted  = 5;
                 if ( $total_events_wanted > $total_current_events ) {
                     $total_events_wanted = ( $total_current_events > 1 ) ? $total_current_events - 1: 1;
@@ -173,7 +173,7 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction
                 $weeks_to_check = 1;
                 $event_count    = 0;
                 do {
-                    $event_count = $this->getEventCountForWeekRange( ++$weeks_to_check );
+                    $event_count = $this->getEventCountForWeekRange( ++$weeks_to_check, $memberId );
                 } while ( $event_count <= $total_events_wanted && $total_current_events > $total_events_wanted );
 
                 $week_string = ( $weeks_to_check === 1 ) ? 'weeks': 'week';
@@ -753,7 +753,7 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction
         $text = str_replace("\r", '', $text);
         return $text;
     }
-    public function checkHaveAnyEvents()
+    public function checkHaveAnyEvents( $member_id = null )
     {
         $from = date( 'Y-m-d' );
         $sql  = "SELECT count(id)
@@ -763,6 +763,9 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction
                     SELECT event
                       FROM " . GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . "times
                      WHERE DATE(start_time) >= %s)";
+        if ( $member_id = filter_var( $member_id, FILTER_VALIDATE_INT ) ) {
+            $sql .= " AND ref_dest = " . $member_id;
+        }
         return $this->wpdb->get_var( $this->wpdb->prepare( $sql, $from ) );
     }
     /**
@@ -775,7 +778,7 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction
      * @access public
      * @return mixed
      */
-    public function getEventCountForWeekRange( $weeks )
+    public function getEventCountForWeekRange( $weeks, $member_id = null )
     {
         if ( !filter_var( $weeks, FILTER_VALIDATE_INT ) ) {
             return false;
@@ -783,14 +786,13 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction
         $from = date( 'Y-m-d' );
         $week_string = ( $weeks === 1 ) ? 'weeks': 'week';
         $to   = date( 'Y-m-d', strtotime( '+ ' . $weeks . ' ' . $week_string) );
-        return $this->wpdb->get_var(
-            $this->wpdb->prepare(
-                "SELECT count(id)
+        $sql = "SELECT count(id)
                    FROM " . GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . "times
-                  WHERE DATE(start_time) BETWEEN %s AND %s",
-                $from,
-                $to
-            )
-        );
+                  WHERE DATE(start_time) BETWEEN %s AND %s";
+        if ( $member_id = filter_var( $member_id, FILTER_VALIDATE_INT ) ) {
+            $sql .= " AND event in (SELECT id FROM " . GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . "events
+                WHERE ref_dest = " . $member_id . ")";
+        }
+        return $this->wpdb->get_var( $this->wpdb->prepare( $sql, $from, $to ) );
     }
 }