Adding limit to the eventByDate array.
authorSteve Sutton <steve@gaslightmedia.com>
Fri, 28 Jul 2017 18:36:45 +0000 (14:36 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Fri, 28 Jul 2017 18:38:11 +0000 (14:38 -0400)
Checking the limit when creating this array.

models/front/events/list.php

index 63cbf01..8876335 100644 (file)
@@ -350,7 +350,9 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction
 
         switch ( $action ) {
         case 'front-page':
+            $this->postAddRecurrences = true;
             $events = $this->getModelEventsData( $categoryId, $limit, $memberId, $amenityId, $venueId );
+            $this->postAddRecurrences = false;
             break;
         case 'event-list-name':
             $this->postAddRecurrences = true;
@@ -700,9 +702,11 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction
 
         // group the events by the starting date
         $eventsByDate = $mainEvents = array();
+        $eventCounter = 0;
         if ( $events && $action != 'featured' && $action != 'current' && $groupByDay ) {
             foreach ( $events as $event ) {
                 if ( isset( $event['times'] ) && is_array( $event['times'] ) ) {
+                    $eventCounter++;
                     foreach ( $event['times'] as $eventTime ) {
                         $eventDateTime = mktime(
                             0,
@@ -724,20 +728,34 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction
                         if ( $action == 'event-list-name' ) {
                             break;
                         }
+                        if ( $limit && $eventCounter >= $limit ) {
+                            break;
+                        }
                     }
                 }
             }
 
             ksort($eventsByDate);
+            $eventCountInArray = 0;
             foreach ($eventsByDate as $eventDate => &$eventgroup ) {
                 foreach ( $eventgroup as $key => &$events ) {
                     $i = 0;
                     foreach ( $events as $time => $times ) {
                         ++$i;
+                        ++$eventCountInArray;
                         $mainEvents[$eventDate][$i][$time] = $times;
                         ksort($mainEvents[$eventDate][$i]);
+                        if ( $limit && $eventCountInArray === $limit ) {
+                            break 3;
+                        }
+                    }
+                    if ( $limit && $eventCountInArray === $limit ) {
+                        break 2;
                     }
                 }
+                if ( $limit && $eventCountInArray === $limit ) {
+                    break 1;
+                }
             }
             $eventsByDate = $mainEvents;
             // If the events are not grouped by day then they need to be sorted.
@@ -768,30 +786,30 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction
             case 'frontPage':
                 $view = 'eventsFrontPage.html';
                 // update the $eventsByDate array so it has the limit
-                $eventCountInArray = 0;
-                $newEventsByDateArray = array();
-                if ( $limit ) {
-                    foreach ( $eventsByDate as $eventDate => &$eventgroup ) {
-                        foreach ( $eventgroup as $key => &$events ) {
-                            $i = 0;
-                            foreach ( $events as $time => &$times ) {
-                                ++$i;
-                                ++$eventCountInArray;
-                                $newEventsByDateArray[$eventDate][$i][$time] = $times;
-                                if ( $eventCountInArray === $limit ) {
-                                    break 3;
-                                }
-                            }
-                            if ( $eventCountInArray === $limit ) {
-                                break 2;
-                            }
-                        }
-                        if ( $eventCountInArray === $limit ) {
-                            break 1;
-                        }
-                    }
-                }
-                $eventsByDate = $newEventsByDateArray;
+                // $eventCountInArray = 0;
+                // $newEventsByDateArray = array();
+                // if ( $limit ) {
+                //     foreach ( $eventsByDate as $eventDate => &$eventgroup ) {
+                //         foreach ( $eventgroup as $key => &$events ) {
+                //             $i = 0;
+                //             foreach ( $events as $time => &$times ) {
+                //                 ++$i;
+                //                 ++$eventCountInArray;
+                //                 $newEventsByDateArray[$eventDate][$i][$time] = $times;
+                //                 if ( $eventCountInArray === $limit ) {
+                //                     break 3;
+                //                 }
+                //             }
+                //             if ( $eventCountInArray === $limit ) {
+                //                 break 2;
+                //             }
+                //         }
+                //         if ( $eventCountInArray === $limit ) {
+                //             break 1;
+                //         }
+                //     }
+                // }
+                // $eventsByDate = $newEventsByDateArray;
                 break;
             default:
                 // No changes otherwise