diff --git a/plugins/calendar/calendar.php b/plugins/calendar/calendar.php index 53fa00a0..a24f3539 100644 --- a/plugins/calendar/calendar.php +++ b/plugins/calendar/calendar.php @@ -1975,8 +1975,8 @@ class calendar extends rcube_plugin private function write_preprocess(&$event, $action) { // convert dates into DateTime objects in user's current timezone - $event['start'] = new DateTime($event['start'], $this->timezone); - $event['end'] = new DateTime($event['end'], $this->timezone); + $event['start'] = new DateTime($event['start'], $this->timezone); + $event['end'] = new DateTime($event['end'], $this->timezone); $event['allday'] = (bool)$event['allday']; // start/end is all we need for 'move' action (#1480) @@ -2026,7 +2026,7 @@ class calendar extends rcube_plugin foreach ((array)$event['attendees'] as $i => $attendee) { if ($attendee['role'] == 'ORGANIZER') $organizer = $i; - if ($attendee['email'] == in_array(strtolower($attendee['email']), $emails)) + if ($attendee['email'] && in_array(strtolower($attendee['email']), $emails)) $owner = $i; if (!isset($attendee['rsvp'])) $event['attendees'][$i]['rsvp'] = true; diff --git a/plugins/calendar/drivers/kolab/kolab_calendar.php b/plugins/calendar/drivers/kolab/kolab_calendar.php index 107a764c..fe2ede53 100644 --- a/plugins/calendar/drivers/kolab/kolab_calendar.php +++ b/plugins/calendar/drivers/kolab/kolab_calendar.php @@ -763,11 +763,25 @@ class kolab_calendar extends kolab_storage_folder_api private function _from_driver_event($event, $old = array()) { // set current user as ORGANIZER - $identity = $this->cal->rc->user->list_emails(true); - if (empty($event['attendees']) && $identity['email']) - $event['attendees'] = array(array('role' => 'ORGANIZER', 'name' => $identity['name'], 'email' => $identity['email'])); + if ($identity = $this->cal->rc->user->list_emails(true)) { + $event['attendees'] = (array) $event['attendees']; + $found = false; - $event['_owner'] = $identity['email']; + // there can be only resources on attendees list (T1484) + // let's check the existence of an organizer + foreach ($event['attendees'] as $attendee) { + if ($attendee['role'] == 'ORGANIZER') { + $found = true; + break; + } + } + + if (!$found) { + $event['attendees'][] = array('role' => 'ORGANIZER', 'name' => $identity['name'], 'email' => $identity['email']); + } + + $event['_owner'] = $identity['email']; + } // remove EXDATE values if RDATE is given if (!empty($event['recurrence']['RDATE'])) { @@ -792,7 +806,6 @@ class kolab_calendar extends kolab_storage_folder_api }); } - // remove some internal properties which should not be saved unset($event['_savemode'], $event['_fromcalendar'], $event['_identity'], $event['_folder_id'], $event['recurrence_id'], $event['attachments'], $event['deleted_attachments'], $event['className']);