Fix external RSVP responses through web interface

This commit is contained in:
Thomas Bruederli 2014-03-24 17:18:01 +01:00
parent 30327b4e47
commit c72d429872
3 changed files with 7 additions and 7 deletions

View file

@ -1675,7 +1675,7 @@ class calendar extends rcube_plugin
// send to every attendee // send to every attendee
$sent = 0; $current = array(); $sent = 0; $current = array();
foreach ((array)$event['attendees'] as $attendee) { foreach ((array)$event['attendees'] as $attendee) {
$current[] = $attendee['email']; $current[] = strtolower($attendee['email']);
// skip myself for obvious reasons // skip myself for obvious reasons
if (!$attendee['email'] || in_array(strtolower($attendee['email']), $emails)) if (!$attendee['email'] || in_array(strtolower($attendee['email']), $emails))
@ -2102,13 +2102,13 @@ class calendar extends rcube_plugin
// show message about cancellation // show message about cancellation
if ($invitation['cancelled']) { if ($invitation['cancelled']) {
$this->invitestatus = html::div('rsvp-status declined', $this->gettext('eventcancelled')); $this->invitestatus = html::div('rsvp-status declined', $itip->gettext('eventcancelled'));
} }
// save submitted RSVP status // save submitted RSVP status
else if (!empty($_POST['rsvp'])) { else if (!empty($_POST['rsvp'])) {
$status = null; $status = null;
foreach (array('accepted','tentative','declined') as $method) { foreach (array('accepted','tentative','declined') as $method) {
if ($_POST['rsvp'] == $this->gettext('itip' . $method)) { if ($_POST['rsvp'] == $itip->gettext('itip' . $method)) {
$status = $method; $status = $method;
break; break;
} }
@ -2116,7 +2116,7 @@ class calendar extends rcube_plugin
// send itip reply to organizer // send itip reply to organizer
if ($status && $itip->update_invitation($invitation, $invitation['attendee'], strtoupper($status))) { if ($status && $itip->update_invitation($invitation, $invitation['attendee'], strtoupper($status))) {
$this->invitestatus = html::div('rsvp-status ' . strtolower($status), $this->gettext('youhave'.strtolower($status))); $this->invitestatus = html::div('rsvp-status ' . strtolower($status), $itip->gettext('youhave'.strtolower($status)));
} }
else else
$this->rc->output->command('display_message', $this->gettext('errorsaving'), 'error', -1); $this->rc->output->command('display_message', $this->gettext('errorsaving'), 'error', -1);
@ -2141,7 +2141,7 @@ class calendar extends rcube_plugin
if (!$this->invitestatus) if (!$this->invitestatus)
$this->register_handler('plugin.event_rsvp_buttons', array($this->ui, 'event_rsvp_buttons')); $this->register_handler('plugin.event_rsvp_buttons', array($this->ui, 'event_rsvp_buttons'));
$this->rc->output->set_pagetitle($this->gettext('itipinvitation') . ' ' . $this->event['title']); $this->rc->output->set_pagetitle($itip->gettext('itipinvitation') . ' ' . $this->event['title']);
} }
else else
$this->rc->output->command('display_message', $this->gettext('itipinvalidrequest'), 'error', -1); $this->rc->output->command('display_message', $this->gettext('itipinvalidrequest'), 'error', -1);

View file

@ -144,7 +144,7 @@ class calendar_itip extends libcalendaring_itip
$event['uid'], $event['uid'],
$this->rc->user->ID, $this->rc->user->ID,
self::serialize_event($event), self::serialize_event($event),
date('Y-m-d H:i:s', $event['end'] + 86400 * 2) date('Y-m-d H:i:s', $event['end']->format('U') + 86400 * 2)
); );
if ($this->rc->db->affected_rows($query)) { if ($this->rc->db->affected_rows($query)) {

View file

@ -130,7 +130,7 @@ class libcalendaring_itip
'vars' => array('url' => $this->plugin->get_url(array('action' => 'attend', 't' => $token))), 'vars' => array('url' => $this->plugin->get_url(array('action' => 'attend', 't' => $token))),
)); ));
} }
else if ($method == 'CANCEL') { else if ($method == 'CANCEL' && $event['cancelled']) {
$this->cancel_itip_invitation($event); $this->cancel_itip_invitation($event);
} }