diff --git a/modules/radar/radar_event_ical/radar_event_ical.module b/modules/radar/radar_event_ical/radar_event_ical.module index 0ccc0a13596846049d2a8cc72c0eb95163377fbb..f1d2fb7cc513fb3c688d625db90a7eb643c895af 100644 --- a/modules/radar/radar_event_ical/radar_event_ical.module +++ b/modules/radar/radar_event_ical/radar_event_ical.module @@ -122,4 +122,47 @@ function radar_event_ical_date_ical_export_raw_event_alter(&$event, $view, $cont if (isset($event['rrule'])) { unset($event['rrule']); } + + // Add LOCATION + // Only one location is valid in iCal. We join on the first field_offline. + if (!empty($context['row']->field_field_address)) { + $location_html = render($context['row']->field_field_address[0]['rendered']); + $location_array = []; + preg_match_all("'<[^>]*>(.*?)</[^>]*>'si", $location_html, $location_array); + if (!empty($location_array)) { + foreach ($location_array[0] as $delta => $row) { + $location_array[0][$delta] = strip_tags($row); + } + $event['location'] = implode(', ', $location_array[0]); + } + } + + // Add GEO. + if ( + !empty($context['row']->field_field_map) + && $context['row']->field_field_map[0]['raw']['geo_type'] == 'point' + ) { + $event['geo']['lat'] = $context['row']->field_field_map[0]['raw']['lat']; + $event['geo']['lon'] = $context['row']->field_field_map[0]['raw']['lon']; + } + + // Add STATUS. + if (!empty($context['row']->field_field_event_status)) { + $event['status'] = strtoupper(render($context['row']->field_field_event_status[0]['rendered'])); + } + +} + +/** + * Implements hook_ical_date_ical_export_vevent_alter(). + */ +function radar_event_ical_date_ical_export_vevent_alter(&$vevent, $view, $event) { + // Location is already set. + // Add GEO and STATUS. + if (!empty($event['geo'])) { + $vevent->setGeo($event['geo']['lat'], $event['geo']['lon']); + } + if (!empty($event['status'])) { + $vevent->setStatus($event['status']); + } }