Adding new attributes for the event list shortcode
authorSteve Sutton <steve@gaslightmedia.com>
Tue, 13 Jun 2017 18:05:57 +0000 (14:05 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Tue, 13 Jun 2017 18:05:57 +0000 (14:05 -0400)
One for group_by_day and group_month (bool)
The group_by_day so we can turn off this in shortcodes.
The group_month so we can set start and end date for search to a month.

models/front/events/list.php
setup/shortcodes.php

index eece508..9af4abc 100644 (file)
@@ -69,6 +69,8 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction
         $eventDay     = null;
         $pageSlug     = 'event-detail';
         $customPage   = false;
+        $groupByDay   = true;
+        $groupMonth   = false;
 
         // If there's a pageslug as attribute then update the pageSlug
         if ( isset ( $actionData['request']['pageslug'] ) ) {
@@ -103,6 +105,12 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction
             $search = true;
             $action = 'event-detail';
         }
+        if ( isset( $actionData['request']['group_by_day'] ) ) {
+            $groupByDay = filter_var( $actionData['request']['group_by_day'], FILTER_VALIDATE_BOOLEAN );
+        }
+        if ( isset( $actionData['request']['group_month'] ) ) {
+            $groupMonth = filter_var( $actionData['request']['group_month'], FILTER_VALIDATE_BOOLEAN );
+        }
         if ( isset( $_REQUEST['category'] ) ) {
             $categoryId = filter_var( $_REQUEST['category'], FILTER_VALIDATE_INT );
             if ( $categoryId ) {
@@ -171,7 +179,7 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction
         } else {
             $fromDate = date('m/d/Y');
         }
-        if ( isset($_REQUEST['glm_event_to']) ) {
+        if ( isset($_REQUEST['glm_event_to']) && !$groupMonth ) {
             $toDate = filter_var(
                 $_REQUEST['glm_event_to'],
                 FILTER_VALIDATE_REGEXP,
@@ -181,6 +189,17 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction
                     )
                 )
             );
+        } else if ( $groupMonth ) {
+            // restrict the date to one month of events
+            if ( !isset( $_REQUEST['glm_event_from'] ) ) {
+                // use the first date for this month
+                $fromDate = date( 'm/d/Y', mktime( 0, 0, 0, date( 'n' ), 1, date( 'Y' ) ) );
+            }
+            if ( !isset( $_REQUEST['glm_event_to'] ) ) {
+                $toDate = date( 'm/d/Y', mktime( 0, 0, 0, date( 'n' ), date( 't' ), date( 'Y' ) ) );
+            }
+            echo '<pre>$fromDate: ' . print_r( $fromDate, true ) . '</pre>';
+            echo '<pre>$toDate: ' . print_r( $toDate, true ) . '</pre>';
         } else if ( in_array($action, array( 'event-list-name', 'nameSearch', 'featured' ) ) || $this->config['settings']['use_venue_locations'] ) {
             $toDate = null;
         } else {
@@ -649,7 +668,7 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction
 
         // group the events by the starting date
         $eventsByDate = $mainEvents = array();
-        if ( $events && $action != 'featured' && $action != 'current' ) {
+        if ( $events && $action != 'featured' && $action != 'current' && $groupByDay ) {
             foreach ( $events as $event ) {
                 if ( isset( $event['times'] ) && is_array( $event['times'] ) ) {
                     foreach ( $event['times'] as $eventTime ) {
@@ -765,7 +784,7 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction
         $years = array('current' => $current_year = date("Y"), 'next' => date('Y') +1 );
         $months = [];
         $count = 0;
-        
+
         foreach($years as $key=>$year){
             // if member id we need to limit the dates for month dropdown by member id
             if($memberId){
@@ -782,7 +801,7 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction
                 }
                 // otherwise we can just pull all of the dates for the events as usual
             } else {
-                
+
                 if($current_year == $year){
                     $sql = 'SELECT MONTH(start_time) as month FROM '. GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX .'times ';
                     $sql .= "WHERE YEAR(start_time) = $year AND MONTH(start_time) >= MONTH(CURDATE()) GROUP BY month";
@@ -793,7 +812,7 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction
                     $results[$year] = $wpdb->get_results($sql, ARRAY_A);
                 }
             }
-            
+
         }
         foreach($results as $year => $month){
             foreach($month as $key=>$value){
index 5d557e8..8b00846 100644 (file)
@@ -99,15 +99,17 @@ $glmMembersEventsShortcodes = array(
         'action'     => 'list',
         'table'      => false,
         'attributes' => array(
-            'type'     => 'all',
-            'order'    => 'title',
-            'member'   => false,
-            'template' => false,
-            'limit'    => null,
-            'featured' => null,
-            'current'  => null,
-            'category' => null,
-            'pageslug' => null,
+            'type'         => 'all',
+            'order'        => 'title',
+            'member'       => false,
+            'template'     => false,
+            'limit'        => null,
+            'featured'     => null,
+            'current'      => null,
+            'category'     => null,
+            'pageslug'     => null,
+            'group_by_day' => true,
+            'group_month'  => false,
         )
     ),
     'glm-members-event-detail' => array(