Fix possible "Call to a member function format() on a non-object" when
invitation event does not define 'changed' datetime object (Bug #2633)
This commit is contained in:
parent
f1dce1f5b9
commit
bcd865a8e5
1 changed files with 33 additions and 16 deletions
|
@ -1922,11 +1922,12 @@ class calendar extends rcube_plugin
|
||||||
|
|
||||||
$html = '';
|
$html = '';
|
||||||
foreach ($this->ics_parts as $mime_id) {
|
foreach ($this->ics_parts as $mime_id) {
|
||||||
$part = $this->message->mime_parts[$mime_id];
|
$part = $this->message->mime_parts[$mime_id];
|
||||||
$charset = $part->ctype_parameters['charset'] ? $part->ctype_parameters['charset'] : RCMAIL_CHARSET;
|
$charset = $part->ctype_parameters['charset'] ? $part->ctype_parameters['charset'] : RCMAIL_CHARSET;
|
||||||
$events = $this->ical->import($this->message->get_part_content($mime_id), $charset);
|
$events = $this->ical->import($this->message->get_part_content($mime_id), $charset);
|
||||||
$title = $this->gettext('title');
|
$title = $this->gettext('title');
|
||||||
|
$date = rcube_utils::anytodatetime($this->message->headers->date);
|
||||||
|
|
||||||
// successfully parsed events?
|
// successfully parsed events?
|
||||||
if (empty($events))
|
if (empty($events))
|
||||||
continue;
|
continue;
|
||||||
|
@ -1971,13 +1972,21 @@ class calendar extends rcube_plugin
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$dom_id = asciiwords($event['uid'], true);
|
$dom_id = asciiwords($event['uid'], true);
|
||||||
$buttons = html::div(array('id' => 'rsvp-'.$dom_id, 'style' => 'display:none'), $rsvp_buttons);
|
$buttons = html::div(array('id' => 'rsvp-'.$dom_id, 'style' => 'display:none'), $rsvp_buttons);
|
||||||
$buttons .= html::div(array('id' => 'import-'.$dom_id, 'style' => 'display:none'), $import_button);
|
$buttons .= html::div(array('id' => 'import-'.$dom_id, 'style' => 'display:none'), $import_button);
|
||||||
$buttons_pre = html::div(array('id' => 'loading-'.$dom_id, 'class' => 'rsvp-status loading'), $this->gettext('loading'));
|
$buttons_pre = html::div(array('id' => 'loading-'.$dom_id, 'class' => 'rsvp-status loading'), $this->gettext('loading'));
|
||||||
|
$changed = is_object($event['changed']) ? $event['changed'] : $date;
|
||||||
$this->rc->output->add_script('rcube_calendar.fetch_event_rsvp_status(' . json_serialize(array('uid' => $event['uid'], 'changed' => $event['changed']->format('U'), 'sequence' => intval($event['sequence']), 'fallback' => $status)) . ')', 'docready');
|
|
||||||
|
$script = json_serialize(array(
|
||||||
|
'uid' => $event['uid'],
|
||||||
|
'changed' => $changed ? $changed->format('U') : 0,
|
||||||
|
'sequence' => intval($event['sequence']),
|
||||||
|
'fallback' => $status,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->rc->output->add_script("rcube_calendar.fetch_event_rsvp_status($script)", 'docready');
|
||||||
}
|
}
|
||||||
else if ($this->ical->method == 'CANCEL') {
|
else if ($this->ical->method == 'CANCEL') {
|
||||||
$title = $this->gettext('itipcancellation');
|
$title = $this->gettext('itipcancellation');
|
||||||
|
@ -1995,13 +2004,21 @@ class calendar extends rcube_plugin
|
||||||
'onclick' => "rcube_calendar.remove_event_from_mail('" . JQ($event['uid']) . "', '" . JQ($event['title']) . "')",
|
'onclick' => "rcube_calendar.remove_event_from_mail('" . JQ($event['uid']) . "', '" . JQ($event['title']) . "')",
|
||||||
'value' => $this->gettext('removefromcalendar'),
|
'value' => $this->gettext('removefromcalendar'),
|
||||||
));
|
));
|
||||||
|
|
||||||
$dom_id = asciiwords($event['uid'], true);
|
$dom_id = asciiwords($event['uid'], true);
|
||||||
$buttons = html::div(array('id' => 'rsvp-'.$dom_id, 'style' => 'display:none'), $button_remove);
|
$buttons = html::div(array('id' => 'rsvp-'.$dom_id, 'style' => 'display:none'), $button_remove);
|
||||||
$buttons .= html::div(array('id' => 'import-'.$dom_id, 'style' => 'display:none'), $button_import);
|
$buttons .= html::div(array('id' => 'import-'.$dom_id, 'style' => 'display:none'), $button_import);
|
||||||
$buttons_pre = html::div(array('id' => 'loading-'.$dom_id, 'class' => 'rsvp-status loading'), $this->gettext('loading'));
|
$buttons_pre = html::div(array('id' => 'loading-'.$dom_id, 'class' => 'rsvp-status loading'), $this->gettext('loading'));
|
||||||
|
$changed = is_object($event['changed']) ? $event['changed'] : $date;
|
||||||
$this->rc->output->add_script('rcube_calendar.fetch_event_rsvp_status(' . json_serialize(array('uid' => $event['uid'], 'changed' => $event['changed']->format('U'), 'sequence' => intval($event['sequence']), 'fallback' => 'CANCELLED')) . ')', 'docready');
|
|
||||||
|
$script = json_serialize(array(
|
||||||
|
'uid' => $event['uid'],
|
||||||
|
'changed' => $changed ? $changed->format('U') : 0,
|
||||||
|
'sequence' => intval($event['sequence']),
|
||||||
|
'fallback' => 'CANCELLED',
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->rc->output->add_script("rcube_calendar.fetch_event_rsvp_status($script)", 'docready');
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$buttons = html::tag('input', array(
|
$buttons = html::tag('input', array(
|
||||||
|
|
Loading…
Add table
Reference in a new issue