Aleksander Machniak
2015-12-18 3b36bcfb68476c83cecfdb6e765c014bbdbd5134
program/steps/mail/func.inc
@@ -168,7 +168,7 @@
    // race condition and unintentional page overwrite in session
    if ($RCMAIL->action == 'list' || $RCMAIL->action == 'getunread') {
        if (!($page = intval($_GET['_page']))) {
            $page = $_SESSION['page'] ? $_SESSION['page'] : 1;
            $page = $_SESSION['page'] ?: 1;
        }
        $_SESSION['page'] = $page;
@@ -179,7 +179,7 @@
    // set default sort col/order to session
    if (!isset($_SESSION['sort_col'])) {
        $_SESSION['sort_col'] = $message_sort_col ? $message_sort_col : '';
        $_SESSION['sort_col'] = $message_sort_col ?: '';
    }
    if (!isset($_SESSION['sort_order'])) {
        $_SESSION['sort_order'] = strtoupper($message_sort_order) == 'ASC' ? 'ASC' : 'DESC';
@@ -1233,15 +1233,6 @@
                // fetch part body
                $body = $MESSAGE->get_part_body($part->mime_id, true);
                // extract headers from message/rfc822 parts
                if ($part->mimetype == 'message/rfc822') {
                    $msgpart = rcube_mime::parse_message($body);
                    if (!empty($msgpart->headers)) {
                        $part = $msgpart;
                        $out .= html::div('message-partheaders', rcmail_message_headers(sizeof($header_attrib) ? $header_attrib : null, $part->headers));
                    }
                }
                // message is cached but not exists (#1485443), or other error
                if ($body === false) {
                    rcmail_message_error($MESSAGE->uid);
@@ -1634,7 +1625,7 @@
                    $content = rcube::Q($name ? sprintf('%s <%s>', $name, $mailto) : $mailto);
                }
                else {
                    $content = rcube::Q($name ? $name : $mailto);
                    $content = rcube::Q($name ?: $mailto);
                    $attrs['title'] = $mailto;
                }
@@ -1642,7 +1633,7 @@
            }
            else {
                $address = html::span(array('title' => $mailto, 'class' => "rcmContactAddress"),
                    rcube::Q($name ? $name : $mailto));
                    rcube::Q($name ?: $mailto));
            }
            if ($addicon && $_SESSION['writeable_abook']) {
@@ -2212,6 +2203,8 @@
function rcmail_save_attachment($message, $pid, $compose_id, $params = array())
{
    global $COMPOSE;
    $rcmail  = rcmail::get_instance();
    $storage = $rcmail->get_storage();
@@ -2274,7 +2267,21 @@
    if ($attachment['status']) {
        unset($attachment['data'], $attachment['status'], $attachment['content_id'], $attachment['abort']);
        $rcmail->session->append('compose_data_' . $compose_id . '.attachments', $attachment['id'], $attachment);
        // rcube_session::append() replaces current session data with the old values
        // (in rcube_session::reload()). This is a problem in 'compose' action, because before
        // the first append() use we set some important data in the session.
        // It also overwrites attachments list. Fixing reload() is not so simple if possible
        // as we don't really know what has been added and what removed in meantime.
        // So, for now we'll do not use append() on 'compose' action (#1490608).
        if ($rcmail->action == 'compose') {
            $COMPOSE['attachments'][$attachment['id']] = $attachment;
        }
        else {
            $rcmail->session->append('compose_data_' . $compose_id . '.attachments', $attachment['id'], $attachment);
        }
        return $attachment;
    }
    else if ($path) {