function parseRrule($data) { $rrule = array(); switch ($data['event_repeatkind']) { case 'daily' : case 'yearly' : $rrule['kind'] = $data['event_repeatkind']; break; case 'monthlybydate' : $rrule['kind'] = 'monthly'; break; case 'monthlybyday' : $rrule['kind'] = 'monthly'; $date = new Of_Date($data['event_date'], 'GMT'); $day = $date->get(Of_Date::WEEKDAY_ICS); $num = ceil($date->getDay()/7); $rrule['byday'] = array($num.$day); break; case 'weekly' : $rrule['kind'] = 'weekly'; foreach($this->weekDays as $longDay => $shortDay) { $index = date('w', strtotime($longDay)); if($data['event_repeatdays'][$index] == '1') { $days[] = $shortDay; } } $rrule['byday'] = $days; break; } if ($data['event_endrepeat']) $rrule['until'] = $this->parseDate($data['event_endrepeat']); $rrule['interval'] = $data['event_repeatfrequence']; return $rrule; }