public function IcalFieldsWizard::addDateRecurEvent in Views iCal 8
1 call to IcalFieldsWizard::addDateRecurEvent()
- IcalFieldsWizard::render in src/Plugin/views/row/IcalFieldsWizard.php
- Render a row object. This usually passes through to a theme template
of some form, but not always.
File
- src/Plugin/views/row/IcalFieldsWizard.php, line 551
- Contains \Drupal\views_ical\Plugin\views\row\Fields.
Class
- IcalFieldsWizard
- The 'Ical Fields' row plugin
Namespace
Drupal\views_ical\Plugin\views\row
Code
public function addDateRecurEvent(array &$events, ResultRow $row, \DateTimeZone $timezone, array $field_mapping) : void {
$entity = $this
->getEntity($row);
$field_items = $entity->{$field_mapping['date_field']};
foreach ($field_items as $index => $item) {
$occurrences = $item
->getHelper()
->getOccurrences();
$future_events = [];
foreach ($occurrences as $occurrence) {
$event = $this
->createDefaultEvent($entity, $field_mapping, $row);
$start_datetime = $occurrence
->getStart();
$start_datetime
->setTimezone($timezone);
$event
->setDtStart($start_datetime);
$end_datetime = $occurrence
->getEnd();
$end_datetime
->setTimezone($timezone);
$event
->setDtEnd($end_datetime);
$current_date = date_create();
if ($start_datetime > $current_date) {
$future_events[] = $event;
}
}
}
array_reverse($future_events);
$events[] = array_shift($future_events);
}