public function eventsFromRange($rangeStart = false, $rangeEnd = false)
{
$events = $this->sortEventsWithOrder($this->events(), SORT_ASC);
if (empty($events)) {
return array();
}
$extendedEvents = array();
if ($rangeStart) {
try {
$rangeStart = new \DateTime($rangeStart);
} catch (\Exception $e) {
error_log('ICal::eventsFromRange: Invalid date passed (' . $rangeStart . ')');
$rangeStart = false;
}
}
if (!$rangeStart) {
$rangeStart = new \DateTime();
}
if ($rangeEnd) {
try {
$rangeEnd = new \DateTime($rangeEnd);
} catch (\Exception $e) {
error_log('ICal::eventsFromRange: Invalid date passed (' . $rangeEnd . ')');
$rangeEnd = false;
}
}
if (!$rangeEnd) {
$rangeEnd = new \DateTime();
$rangeEnd->modify('+20 years');
}
// If start and end are identical and are dates with no times...
if ($rangeEnd->format('His') == 0 && $rangeStart->getTimestamp() == $rangeEnd->getTimestamp()) {
$rangeEnd->modify('+1 day');
}
$rangeStart = $rangeStart->getTimestamp();
$rangeEnd = $rangeEnd->getTimestamp();
foreach ($events as $anEvent) {
$eventStart = $anEvent->dtstart_array[2];
$eventEnd = isset($anEvent->dtend_array[2]) ? $anEvent->dtend_array[2] : null;
if ($eventStart >= $rangeStart && $eventStart < $rangeEnd || $eventEnd !== null && ($eventEnd > $rangeStart && $eventEnd <= $rangeEnd || $eventStart < $rangeStart && $eventEnd > $rangeEnd)) {
$extendedEvents[] = $anEvent;
}
}
if (empty($extendedEvents)) {
return array();
}
return $extendedEvents;
}
echo $ical->eventCount; ?> </span> The number of events </li> <li class="list-group-item"> <span class="badge"><?php echo $ical->todoCount; ?> </span> The number of todos </li> </ul> <?php $events = $ical->eventsFromRange('2016-03-01', '2016-04-31'); if ($events) { echo '<h4>Events March through April:</h4>'; } ?> <div class="row"> <?php foreach ($events as $event) { ?> <div class="col-sm-6 col-md-4"> <div class="thumbnail"> <div class="caption"> <h3><?php echo $event->summary . ' (' . date('d-m-Y H:i', $ical->iCalDateToUnixTimestamp($event->dtstart)) . ')'; ?> </h3>