Do case-insensitive checks whether the current user is an event attendee or organizer (#1838)
This commit is contained in:
parent
d4e24304ad
commit
484e5ad498
2 changed files with 15 additions and 15 deletions
|
@ -676,7 +676,7 @@ class calendar extends rcube_plugin
|
|||
foreach ($old['attendees'] as $i => $attendee) {
|
||||
if ($attendee['role'] == 'ORGANIZER')
|
||||
$organizer = $attendee;
|
||||
else if ($attendee['email'] && in_array($attendee['email'], $emails)) {
|
||||
else if ($attendee['email'] && in_array(strtolower($attendee['email']), $emails)) {
|
||||
$old['attendees'][$i]['status'] = 'DECLINED';
|
||||
}
|
||||
}
|
||||
|
@ -713,7 +713,7 @@ class calendar extends rcube_plugin
|
|||
if ($existing = $this->driver->get_event($event, true, false, true)) {
|
||||
$emails = $this->get_user_emails();
|
||||
foreach ($existing['attendees'] as $i => $attendee) {
|
||||
if ($attendee['email'] && in_array($attendee['email'], $emails)) {
|
||||
if ($attendee['email'] && in_array(strtolower($attendee['email']), $emails)) {
|
||||
$status = $attendee['status'];
|
||||
break;
|
||||
}
|
||||
|
@ -1063,7 +1063,7 @@ class calendar extends rcube_plugin
|
|||
$settings['identities'][$rec['identity_id']] = $rec['email'];
|
||||
}
|
||||
$identity['emails'][] = $this->rc->user->get_username();
|
||||
$settings['identity'] = array('name' => $identity['name'], 'email' => $identity['email'], 'emails' => ';' . join(';', $identity['emails']));
|
||||
$settings['identity'] = array('name' => $identity['name'], 'email' => strtolower($identity['email']), 'emails' => ';' . strtolower(join(';', $identity['emails'])));
|
||||
}
|
||||
|
||||
return $settings;
|
||||
|
@ -1296,7 +1296,7 @@ class calendar extends rcube_plugin
|
|||
foreach ((array)$event['attendees'] as $i => $attendee) {
|
||||
if ($attendee['role'] == 'ORGANIZER')
|
||||
$organizer = $i;
|
||||
if ($attendee['email'] == in_array($attendee['email'], $emails))
|
||||
if ($attendee['email'] == in_array(strtolower($attendee['email']), $emails))
|
||||
$owner = $i;
|
||||
else if (!isset($attendee['rsvp']))
|
||||
$event['attendees'][$i]['rsvp'] = true;
|
||||
|
@ -1358,7 +1358,7 @@ class calendar extends rcube_plugin
|
|||
$sent = 0;
|
||||
foreach ((array)$event['attendees'] as $attendee) {
|
||||
// skip myself for obvious reasons
|
||||
if (!$attendee['email'] || in_array($attendee['email'], $emails))
|
||||
if (!$attendee['email'] || in_array(strtolower($attendee['email']), $emails))
|
||||
continue;
|
||||
|
||||
// which template to use for mail text
|
||||
|
@ -1747,7 +1747,7 @@ class calendar extends rcube_plugin
|
|||
// check my status
|
||||
$status = 'unknown';
|
||||
foreach ($event['attendees'] as $i => $attendee) {
|
||||
if ($attendee['email'] && in_array($attendee['email'], $emails)) {
|
||||
if ($attendee['email'] && in_array(strtolower($attendee['email']), $emails)) {
|
||||
$status = strtoupper($attendee['status']);
|
||||
break;
|
||||
}
|
||||
|
@ -1856,7 +1856,7 @@ class calendar extends rcube_plugin
|
|||
if ($attendee['role'] == 'ORGANIZER') {
|
||||
$organizer = $attendee;
|
||||
}
|
||||
else if ($attendee['email'] && in_array($attendee['email'], $emails)) {
|
||||
else if ($attendee['email'] && in_array(strtolower($attendee['email']), $emails)) {
|
||||
$event['attendees'][$i]['status'] = strtoupper($status);
|
||||
}
|
||||
}
|
||||
|
@ -1940,7 +1940,7 @@ class calendar extends rcube_plugin
|
|||
|
||||
|
||||
// send iTip reply
|
||||
if ($this->ical->method == 'REQUEST' && $organizer && !in_array($organizer['email'], $emails) && !$error_msg) {
|
||||
if ($this->ical->method == 'REQUEST' && $organizer && !in_array(strtolower($organizer['email']), $emails) && !$error_msg) {
|
||||
$itip = $this->load_itip();
|
||||
if ($itip->send_itip_message($event, 'REPLY', $organizer, 'itipsubject' . $status, 'itipmailbody' . $status))
|
||||
$this->rc->output->command('display_message', $this->gettext(array('name' => 'sentresponseto', 'vars' => array('mailto' => $organizer['name'] ? $organizer['name'] : $organizer['email']))), 'confirmation');
|
||||
|
@ -2037,7 +2037,7 @@ class calendar extends rcube_plugin
|
|||
{
|
||||
$emails = array();
|
||||
$plugin = $this->rc->plugins->exec_hook('calendar_user_emails', array('emails' => $emails));
|
||||
$emails = $plugin['emails'];
|
||||
$emails = array_map('strtolower', $plugin['emails']);
|
||||
|
||||
if ($plugin['abort']) {
|
||||
return $emails;
|
||||
|
@ -2045,7 +2045,7 @@ class calendar extends rcube_plugin
|
|||
|
||||
$emails[] = $this->rc->user->get_username();
|
||||
foreach ($this->rc->user->list_identities() as $identity)
|
||||
$emails[] = $identity['email'];
|
||||
$emails[] = strtolower($identity['email']);
|
||||
|
||||
return array_unique($emails);
|
||||
}
|
||||
|
|
|
@ -166,15 +166,15 @@ function rcube_calendar_ui(settings)
|
|||
// check if the event has 'real' attendees, excluding the current user
|
||||
var has_attendees = function(event)
|
||||
{
|
||||
return (event.attendees && event.attendees.length && (event.attendees.length > 1 || event.attendees[0].email != settings.identity.email));
|
||||
return (event.attendees && event.attendees.length && (event.attendees.length > 1 || String(event.attendees[0].email).toLowerCase() != settings.identity.email));
|
||||
};
|
||||
|
||||
// check if the current user is an attendee of this event
|
||||
var is_attendee = function(event, role, email)
|
||||
{
|
||||
var emails = email ? ';'+email : settings.identity.emails;
|
||||
var emails = email ? ';'+email.toLowerCase() : settings.identity.emails;
|
||||
for (var i=0; event.attendees && i < event.attendees.length; i++) {
|
||||
if ((!role || event.attendees[i].role == role) && event.attendees[i].email && emails.indexOf(';'+event.attendees[i].email) >= 0)
|
||||
if ((!role || event.attendees[i].role == role) && event.attendees[i].email && emails.indexOf(';'+event.attendees[i].email.toLowerCase()) >= 0)
|
||||
return event.attendees[i];
|
||||
}
|
||||
return false;
|
||||
|
@ -635,7 +635,7 @@ function rcube_calendar_ui(settings)
|
|||
data._identity = $('#edit-identities-list option:selected').val();
|
||||
|
||||
// don't submit attendees if only myself is added as organizer
|
||||
if (data.attendees.length == 1 && data.attendees[0].role == 'ORGANIZER' && data.attendees[0].email == settings.identity.email)
|
||||
if (data.attendees.length == 1 && data.attendees[0].role == 'ORGANIZER' && String(data.attendees[0].email).toLowerCase() == settings.identity.email)
|
||||
data.attendees = [];
|
||||
|
||||
// tell server to send notifications
|
||||
|
@ -1522,7 +1522,7 @@ function rcube_calendar_ui(settings)
|
|||
// update attendee status
|
||||
for (var data, i=0; i < me.selected_event.attendees.length; i++) {
|
||||
data = me.selected_event.attendees[i];
|
||||
if (settings.identity.emails.indexOf(';'+data.email) >= 0)
|
||||
if (settings.identity.emails.indexOf(';'+String(data.email).toLowerCase()) >= 0)
|
||||
data.status = response.toUpperCase();
|
||||
}
|
||||
event_show_dialog(me.selected_event);
|
||||
|
|
Loading…
Add table
Reference in a new issue