Skip to content

Instantly share code, notes, and snippets.

@mkorban
Created September 22, 2014 09:42
Show Gist options
  • Save mkorban/4662afc872a86e94950c to your computer and use it in GitHub Desktop.
Save mkorban/4662afc872a86e94950c to your computer and use it in GitHub Desktop.
<?
foreach ($events as $ev) {
$rpt = CCalendarEvent::ParseRRULE($ev['RRULE']);
$dt_from = strtotime($ev['DT_FROM']);
$dt_to = strtotime($ev['DT_TO']);
$tmpEvent = $ev;
$tmpEvent['icon'] = '';
if (isset($rpt['FREQ'])) {
$tmpEvent['NAME'] = '<i class="fa fa-refresh" title="Регулярное мероприятие"></i> ' . $tmpEvent['NAME'];
switch ($rpt['FREQ']) {
case 'DAILY':
$date = $dt_from;
while ($date<=$rpt['UNTIL']) {
$date += $rpt['INTERVAL']*24*3600;
if (intval(date('Y',$date))>2020) break;
$tmpEvent['DT_FROM'] = date("d.m.Y H:i:s",$date);
$tmpEvent['DT_FROM_TS'] = $date;
$tmpEvent['DT_TO'] = date("d.m.Y H:i:s",$dt_to);
$tmpEvent['DT_TO_TS'] = $dt_to;
$rptEvents[] = $tmpEvent;
}
break;
case 'YEARLY':
$date = $dt_from;
while ($date<=$rpt['UNTIL']) {
$year = date('Y',$date)+1;
if ($year>2020) break;
$date = mktime(date('H',$date),date('i',$date),date('s',$date),date('n',$date),date('j',$date),$year);
// file_put_contents("/home/bitrix/d.log",date("d.m.Y H:i:s",$date)."\n",FILE_APPEND);
$tmpEvent['DT_FROM'] = date("d.m.Y H:i:s",$date);
$tmpEvent['DT_FROM_TS'] = $date;
$tmpEvent['DT_TO'] = date("d.m.Y H:i:s",$dt_to);
$tmpEvent['DT_TO_TS'] = $dt_to;
$rptEvents[] = $tmpEvent;
}
break;
case 'WEEKLY' :
$date = $dt_from;
while ($date<=$rpt['UNTIL']) {
$wdate = $date;
for ($i=0;$i<7;$i++) {
$N = date("D",$date+$i*24*3600);
if ( in_array( strtoupper(substr($N,0,2)),array_keys($rpt['BYDAY'])) ) {
$tmpEvent['DT_FROM'] = date("d.m.Y H:i:s",$date+$i*24*3600);
$tmpEvent['DT_FROM_TS'] = $date+$i*24*3600;
$tmpEvent['DT_TO'] = date("d.m.Y H:i:s",$dt_to);
$tmpEvent['DT_TO_TS'] = $dt_to;
$rptEvents[] = $tmpEvent;
}
if (strtoupper(substr($N,0,2))=='SU') break;
}
$date += $rpt['INTERVAL']*7*24*3600;
if (intval(date('Y',$date))>2020) break;
}
break;
default;
break;
}
}
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment