Updating icalfeed
authorSteve Sutton <steve@gaslightmedia.com>
Tue, 25 Apr 2017 20:50:51 +0000 (16:50 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Tue, 25 Apr 2017 20:50:51 +0000 (16:50 -0400)
Updates for the week of month for RRULE

models/front/events/icalFeed.php

index f3dc668..e1e17d0 100644 (file)
@@ -227,35 +227,65 @@ EOD;
             $output .= implode( ',', $eventCategories);
         }
         // frequency (recurring data)
+        // TODO: Need to update this to handle more than one event schedule.
         if ( $event['recurrences'][0]['recurring']['value'] ) {
-            if ( $event['recurrences'][0]['day_of_week']['names'] ) {
-                $daysOfWeek = array();
-                foreach ( $event['recurrences'][0]['day_of_week']['names'] as $dow ) {
-                    $freq = 'FREQ=WEEKLY';
-                    switch ( $dow ) {
-                    case 'Sunday':
-                        $daysOfWeek[] = 'SU';
+            $weeksOfMonth = array();
+            if ( $event['recurrences'][0]['week_of_month']['names'] && $event['recurrences'][0]['week_of_month']['value'] != 63 ) {
+                foreach ( $event['recurrences'][0]['week_of_month']['names'] as $weekOfMonth ) {
+                    switch ( $weekOfMonth ) {
+                    case 'First':
+                        $weeksOfMonth[] = '1';
                         break;
-                    case 'Monday':
-                        $daysOfWeek[] = 'MO';
+                    case 'Second':
+                        $weeksOfMonth[] = '2';
                         break;
-                    case 'Tuesday':
-                        $daysOfWeek[] = 'TU';
+                    case 'Third':
+                        $weeksOfMonth[] = '3';
                         break;
-                    case 'Wednesday':
-                        $daysOfWeek[] = 'WE';
+                    case 'Forth':
+                        $weeksOfMonth[] = '4';
                         break;
-                    case 'Thursday':
-                        $daysOfWeek[] = 'TH';
+                    case 'Fifth':
+                        $weeksOfMonth[] = '5';
                         break;
-                    case 'Friday':
-                        $daysOfWeek[] = 'FR';
-                        break;
-                    case 'Saturday':
-                        $daysOfWeek[] = 'SA';
+                    case 'Last':
+                        $weeksOfMonth[] = '-1';
                         break;
                     }
                 }
+            } else {
+                $weeksOfMonth[] = '';
+            }
+            if ( $event['recurrences'][0]['day_of_week']['names'] ) {
+                $daysOfWeek = array();
+                foreach ( $weeksOfMonth as $wom ) {
+                    foreach ( $event['recurrences'][0]['day_of_week']['names'] as $dow ) {
+                        $freq = 'FREQ=WEEKLY';
+                        switch ( $dow ) {
+                        case 'Sunday':
+                            $daysOfWeek[] = $wom . 'SU';
+                            break;
+                        case 'Monday':
+                            $daysOfWeek[] = $wom . 'MO';
+                            break;
+                        case 'Tuesday':
+                            $daysOfWeek[] = $wom . 'TU';
+                            break;
+                        case 'Wednesday':
+                            $daysOfWeek[] = $wom . 'WE';
+                            break;
+                        case 'Thursday':
+                            $daysOfWeek[] = $wom . 'TH';
+                            break;
+                        case 'Friday':
+                            $daysOfWeek[] = $wom . 'FR';
+                            break;
+                        case 'Saturday':
+                            $daysOfWeek[] = $wom . 'SA';
+                            break;
+                        }
+                    }
+                }
                 if (!empty($daysOfWeek)) {
                     $daysInWeek = implode(',', $daysOfWeek);
                 }