Changeset View
Changeset View
Standalone View
Standalone View
plugins/calendar/calendar.php
Show First 20 Lines • Show All 2,815 Lines • ▼ Show 20 Lines | public function mail_import_itip() | ||||
$mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST); | $mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST); | ||||
$mime_id = rcube_utils::get_input_value('_part', rcube_utils::INPUT_POST); | $mime_id = rcube_utils::get_input_value('_part', rcube_utils::INPUT_POST); | ||||
$status = rcube_utils::get_input_value('_status', rcube_utils::INPUT_POST); | $status = rcube_utils::get_input_value('_status', rcube_utils::INPUT_POST); | ||||
$delete = intval(rcube_utils::get_input_value('_del', rcube_utils::INPUT_POST)); | $delete = intval(rcube_utils::get_input_value('_del', rcube_utils::INPUT_POST)); | ||||
$noreply = intval(rcube_utils::get_input_value('_noreply', rcube_utils::INPUT_POST)); | $noreply = intval(rcube_utils::get_input_value('_noreply', rcube_utils::INPUT_POST)); | ||||
$noreply = $noreply || $status == 'needs-action' || $itip_sending === 0; | $noreply = $noreply || $status == 'needs-action' || $itip_sending === 0; | ||||
$instance = rcube_utils::get_input_value('_instance', rcube_utils::INPUT_POST); | $instance = rcube_utils::get_input_value('_instance', rcube_utils::INPUT_POST); | ||||
$savemode = rcube_utils::get_input_value('_savemode', rcube_utils::INPUT_POST); | $savemode = rcube_utils::get_input_value('_savemode', rcube_utils::INPUT_POST); | ||||
$comment = rcube_utils::get_input_value('_comment', rcube_utils::INPUT_POST); | |||||
$error_msg = $this->gettext('errorimportingevent'); | $error_msg = $this->gettext('errorimportingevent'); | ||||
$success = false; | $success = false; | ||||
$delegate = null; | |||||
if ($status == 'delegated') { | if ($status == 'delegated') { | ||||
$delegates = rcube_mime::decode_address_list(rcube_utils::get_input_value('_to', rcube_utils::INPUT_POST, true), 1, false); | $delegates = rcube_mime::decode_address_list(rcube_utils::get_input_value('_to', rcube_utils::INPUT_POST, true), 1, false); | ||||
$delegate = reset($delegates); | $delegate = reset($delegates); | ||||
if (empty($delegate) || empty($delegate['mailto'])) { | if (empty($delegate) || empty($delegate['mailto'])) { | ||||
$this->rc->output->command('display_message', $this->gettext('libcalendaring.delegateinvalidaddress'), 'error'); | $this->rc->output->command('display_message', $this->rc->gettext('libcalendaring.delegateinvalidaddress'), 'error'); | ||||
return; | return; | ||||
} | } | ||||
} | } | ||||
// successfully parsed events? | // successfully parsed events? | ||||
if ($event = $this->lib->mail_get_itip_object($mbox, $uid, $mime_id, 'event')) { | if ($event = $this->lib->mail_get_itip_object($mbox, $uid, $mime_id, 'event')) { | ||||
// forward iTip request to delegatee | // forward iTip request to delegatee | ||||
if ($delegate) { | if ($delegate) { | ||||
$rsvpme = (bool) intval(rcube_utils::get_input_value('_rsvp', rcube_utils::INPUT_POST)); | $rsvpme = rcube_utils::get_input_value('_rsvp', rcube_utils::INPUT_POST); | ||||
$comment = rcube_utils::get_input_value('_comment', rcube_utils::INPUT_POST); | |||||
$d_event = $comment ? array_merge($event, array('comment' => $comment)) : $event; | |||||
$itip = $this->load_itip(); | $itip = $this->load_itip(); | ||||
if ($itip->delegate_to($d_event, $delegate, $rsvpme)) { | $event['comment'] = $comment; | ||||
if ($itip->delegate_to($event, $delegate, !empty($rsvpme))) { | |||||
$this->rc->output->show_message('calendar.itipsendsuccess', 'confirmation'); | $this->rc->output->show_message('calendar.itipsendsuccess', 'confirmation'); | ||||
} | } | ||||
else { | else { | ||||
$this->rc->output->command('display_message', $this->gettext('itipresponseerror'), 'error'); | $this->rc->output->command('display_message', $this->gettext('itipresponseerror'), 'error'); | ||||
} | } | ||||
unset($event['comment']); | |||||
// the delegator is set to non-participant, thus save as non-blocking | // the delegator is set to non-participant, thus save as non-blocking | ||||
$event['free_busy'] = 'free'; | $event['free_busy'] = 'free'; | ||||
} | } | ||||
// find writeable calendar to store event | // find writeable calendar to store event | ||||
$cal_id = !empty($_REQUEST['_folder']) ? rcube_utils::get_input_value('_folder', rcube_utils::INPUT_POST) : null; | $cal_id = !empty($_REQUEST['_folder']) ? rcube_utils::get_input_value('_folder', rcube_utils::INPUT_POST) : null; | ||||
$dontsave = ($_REQUEST['_folder'] === '' && $event['_method'] == 'REQUEST'); | $dontsave = ($_REQUEST['_folder'] === '' && $event['_method'] == 'REQUEST'); | ||||
$calendars = $this->driver->list_calendars(calendar_driver::FILTER_PERSONAL); | $calendars = $this->driver->list_calendars(calendar_driver::FILTER_PERSONAL); | ||||
▲ Show 20 Lines • Show All 219 Lines • ▼ Show 20 Lines | if ($success || $dontsave) { | ||||
$error_msg = null; | $error_msg = null; | ||||
} | } | ||||
else if ($error_msg) { | else if ($error_msg) { | ||||
$this->rc->output->command('display_message', $error_msg, 'error'); | $this->rc->output->command('display_message', $error_msg, 'error'); | ||||
} | } | ||||
// send iTip reply | // send iTip reply | ||||
if ($event['_method'] == 'REQUEST' && $organizer && !$noreply && !in_array(strtolower($organizer['email']), $emails) && !$error_msg) { | if ($event['_method'] == 'REQUEST' && $organizer && !$noreply && !in_array(strtolower($organizer['email']), $emails) && !$error_msg) { | ||||
$event['comment'] = rcube_utils::get_input_value('_comment', rcube_utils::INPUT_POST); | $event['comment'] = $comment; | ||||
$itip = $this->load_itip(); | $itip = $this->load_itip(); | ||||
$itip->set_sender_email($reply_sender); | $itip->set_sender_email($reply_sender); | ||||
if ($itip->send_itip_message($event, 'REPLY', $organizer, 'itipsubject' . $status, 'itipmailbody' . $status)) | 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'); | $this->rc->output->command('display_message', $this->gettext(array('name' => 'sentresponseto', 'vars' => array('mailto' => $organizer['name'] ? $organizer['name'] : $organizer['email']))), 'confirmation'); | ||||
else | else | ||||
$this->rc->output->command('display_message', $this->gettext('itipresponseerror'), 'error'); | $this->rc->output->command('display_message', $this->gettext('itipresponseerror'), 'error'); | ||||
} | } | ||||
$this->rc->output->send(); | $this->rc->output->send(); | ||||
} | } | ||||
/** | /** | ||||
* Handler for calendar/itip-remove requests | * Handler for calendar/itip-remove requests | ||||
*/ | */ | ||||
function mail_itip_decline_reply() | function mail_itip_decline_reply() | ||||
{ | { | ||||
$uid = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_POST); | $uid = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_POST); | ||||
$mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST); | $mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST); | ||||
$mime_id = rcube_utils::get_input_value('_part', rcube_utils::INPUT_POST); | $mime_id = rcube_utils::get_input_value('_part', rcube_utils::INPUT_POST); | ||||
▲ Show 20 Lines • Show All 255 Lines • Show Last 20 Lines |