Changeset View
Changeset View
Standalone View
Standalone View
plugins/tasklist/tasklist.php
Show First 20 Lines • Show All 1,908 Lines • ▼ Show 20 Lines | // $headers = $imap->get_message_headers($uid); | ||||
* Handler for POST request to import an event attached to a mail message | * Handler for POST request to import an event attached to a mail message | ||||
*/ | */ | ||||
public function mail_import_itip() | public function mail_import_itip() | ||||
{ | { | ||||
$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); | ||||
$status = rcube_utils::get_input_value('_status', rcube_utils::INPUT_POST); | $status = rcube_utils::get_input_value('_status', rcube_utils::INPUT_POST); | ||||
$comment = rcube_utils::get_input_value('_comment', 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)) || $status == 'needs-action'; | $noreply = intval(rcube_utils::get_input_value('_noreply', rcube_utils::INPUT_POST)) || $status == 'needs-action'; | ||||
$error_msg = $this->gettext('errorimportingtask'); | $error_msg = $this->gettext('errorimportingtask'); | ||||
$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->gettext('libcalendaring.delegateinvalidaddress'), 'error'); | ||||
return; | return; | ||||
} | } | ||||
} | } | ||||
// successfully parsed tasks? | // successfully parsed tasks? | ||||
if ($task = $this->lib->mail_get_itip_object($mbox, $uid, $mime_id, 'task')) { | if ($task = $this->lib->mail_get_itip_object($mbox, $uid, $mime_id, 'task')) { | ||||
$task = $this->from_ical($task); | $task = $this->from_ical($task); | ||||
// forward iTip request to delegatee | // forward iTip request to delegatee | ||||
if ($delegate) { | if ($delegate) { | ||||
$rsvpme = intval(rcube_utils::get_input_value('_rsvp', rcube_utils::INPUT_POST)); | $rsvpme = rcube_utils::get_input_value('_rsvp', rcube_utils::INPUT_POST); | ||||
$itip = $this->load_itip(); | $itip = $this->load_itip(); | ||||
if ($itip->delegate_to($task, $delegate, $rsvpme ? true : false)) { | |||||
$task['comment'] = $comment; | |||||
if ($itip->delegate_to($task, $delegate, !empty($rsvpme))) { | |||||
$this->rc->output->show_message('tasklist.itipsendsuccess', 'confirmation'); | $this->rc->output->show_message('tasklist.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($task['comment']); | |||||
} | } | ||||
// find writeable list to store the task | // find writeable list to store the task | ||||
$list_id = !empty($_REQUEST['_folder']) ? rcube_utils::get_input_value('_folder', rcube_utils::INPUT_POST) : null; | $list_id = !empty($_REQUEST['_folder']) ? rcube_utils::get_input_value('_folder', rcube_utils::INPUT_POST) : null; | ||||
$lists = $this->driver->get_lists(); | $lists = $this->driver->get_lists(); | ||||
$list = $lists[$list_id]; | $list = $lists[$list_id]; | ||||
$dontsave = ($_REQUEST['_folder'] === '' && $task['_method'] == 'REQUEST'); | $dontsave = ($_REQUEST['_folder'] === '' && $task['_method'] == 'REQUEST'); | ||||
▲ Show 20 Lines • Show All 180 Lines • ▼ Show 20 Lines | public function mail_import_itip() | ||||
$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 ($task['_method'] == 'REQUEST' && $organizer && !$noreply && !in_array(strtolower($organizer['email']), $emails) && !$error_msg) { | if ($task['_method'] == 'REQUEST' && $organizer && !$noreply && !in_array(strtolower($organizer['email']), $emails) && !$error_msg) { | ||||
$task['comment'] = rcube_utils::get_input_value('_comment', rcube_utils::INPUT_POST); | $task['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($this->to_libcal($task), 'REPLY', $organizer, 'itipsubject' . $status, 'itipmailbody' . $status)) | if ($itip->send_itip_message($this->to_libcal($task), 'REPLY', $organizer, 'itipsubject' . $status, 'itipmailbody' . $status)) | ||||
$this->rc->output->command('display_message', $this->gettext(array('name' => 'sentresponseto', 'vars' => array('mailto' => $organizer['name'] ?: $organizer['email']))), 'confirmation'); | $this->rc->output->command('display_message', $this->gettext(array('name' => 'sentresponseto', 'vars' => array('mailto' => $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'); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 186 Lines • Show Last 20 Lines |