diff --git a/plugins/libkolab/lib/kolab_format_event.php b/plugins/libkolab/lib/kolab_format_event.php index 33ed5af3..90bfea3d 100644 --- a/plugins/libkolab/lib/kolab_format_event.php +++ b/plugins/libkolab/lib/kolab_format_event.php @@ -143,14 +143,14 @@ class kolab_format_event extends kolab_format_xcal $attach = $vattach->get($i); // skip cid: attachments which are mime message parts handled by kolab_storage_folder - if (substr($attach->uri(), 0, 4) != 'cid') { + if (substr($attach->uri(), 0, 4) != 'cid:') { $name = $attach->label(); $data = $attach->data(); $object['_attachments'][$name] = array( - 'name' => $name, + 'name' => $name, 'mimetype' => $attach->mimetype(), - 'size' => strlen($data), - 'content' => $data, + 'size' => strlen($data), + 'content' => $data, ); } } diff --git a/plugins/libkolab/lib/kolab_storage_folder.php b/plugins/libkolab/lib/kolab_storage_folder.php index 08bf6690..461125b3 100644 --- a/plugins/libkolab/lib/kolab_storage_folder.php +++ b/plugins/libkolab/lib/kolab_storage_folder.php @@ -445,12 +445,23 @@ class kolab_storage_folder $xml = $part->body ? $part->body : $message->get_part_content($part->mime_id); } else if ($part->filename || $part->content_id) { - $key = $part->content_id ? trim($part->content_id, '<>') : $part->filename; + $key = $part->content_id ? trim($part->content_id, '<>') : $part->filename; + $size = null; + + // Use Content-Disposition 'size' as for the Kolab Format spec. + if (isset($part->d_parameters['size'])) { + $size = $part->d_parameters['size']; + } + // we can trust part size only if it's not encoded + else if ($part->encoding == 'binary' || $part->encoding == '7bit' || $part->encoding == '8bit') { + $size = $part->size; + } + $attachments[$key] = array( - 'id' => $part->mime_id, - 'name' => $part->filename, + 'id' => $part->mime_id, + 'name' => $part->filename, 'mimetype' => $part->mimetype, - 'size' => $part->size, + 'size' => $size, ); } }