From a5be96e6421416932be20ef6c913cca772a971bf Mon Sep 17 00:00:00 2001 From: KarinG Date: Sun, 29 Mar 2020 11:43:49 -0600 Subject: [PATCH] provide Calendar module with end_date when duration is provided --squashed --- .../views/plugins/calendar_plugin_row_civicrm.inc | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/modules/views/plugins/calendar_plugin_row_civicrm.inc b/modules/views/plugins/calendar_plugin_row_civicrm.inc index baa0d5464..e2d8e4b15 100644 --- a/modules/views/plugins/calendar_plugin_row_civicrm.inc +++ b/modules/views/plugins/calendar_plugin_row_civicrm.inc @@ -190,8 +190,19 @@ class calendar_plugin_row_civicrm extends calendar_plugin_row { } elseif (!$is_field && !empty($item)) { $item_start_date = new dateObject($item, $db_tz); - $item_end_date = $item_start_date; - $node->date_id = array('calendar.' . $node->id . '.' . $field_name . '.0'); + $node->date_id = array('calendar.' . $node->id . '.' . $field_name . '.0'); + // If we have a civicrm_activity_duration let's use it! + // Calculate the end_date so that the calendar item can have the correct height in the week and day displays. + // NOTE: imported views can have a bug that causes $view->style_options['groupby_times'] not to be set. + // Solution (for each display/page): go into the View -> Calendar -> Settings: Time Grouping -> save; + if (isset($row->civicrm_activity_duration)) { + $duration = $row->civicrm_activity_duration; + $item_value2 = date("Y-m-d H:i:s", strtotime($item . '+' . $duration . 'minutes')); + $item_end_date = new dateObject($item_value2, $db_tz); + } + else { + $item_end_date = $item_start_date; + } } // If we don't have date value, go no further.