From f00b99ad5e5601a01b9bd5a83a4d9a9a61ca907a Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Tue, 25 Apr 2017 16:50:51 -0400 Subject: [PATCH] Updating icalfeed Updates for the week of month for RRULE --- models/front/events/icalFeed.php | 70 +++++++++++++++++++++++--------- 1 file changed, 50 insertions(+), 20 deletions(-) diff --git a/models/front/events/icalFeed.php b/models/front/events/icalFeed.php index f3dc668..e1e17d0 100644 --- a/models/front/events/icalFeed.php +++ b/models/front/events/icalFeed.php @@ -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); } -- 2.17.1