Commit a9d432c3 authored by Manfred Kutas's avatar Manfred Kutas

ZP-1180 Implement plain streams for CalDav and CardDav backends.

Released under the Affero GNU General Public License (AGPL) version 3.
parent 122e59ad
...@@ -704,15 +704,18 @@ class BackendCalDAV extends BackendDiff { ...@@ -704,15 +704,18 @@ class BackendCalDAV extends BackendDiff {
case "DESCRIPTION": case "DESCRIPTION":
if (Request::GetProtocolVersion() >= 12.0) { if (Request::GetProtocolVersion() >= 12.0) {
$message->asbody = new SyncBaseBody(); $message->asbody = new SyncBaseBody();
$message->asbody->data = str_replace("\n","\r\n", str_replace("\r","",Utils::ConvertHtmlToText($property->Value()))); $data = str_replace("\n","\r\n", str_replace("\r","",Utils::ConvertHtmlToText($property->Value())));
// truncate body, if requested // truncate body, if requested
if (strlen($message->asbody->data) > $truncsize) { if (strlen($data) > $truncsize) {
$message->asbody->truncated = 1; $message->asbody->truncated = 1;
$message->asbody->data = Utils::Utf8_truncate($message->asbody->data, $truncsize); $data = Utils::Utf8_truncate($data, $truncsize);
} }
else { else {
$message->asbody->truncated = 0; $message->asbody->truncated = 0;
} }
$message->asbody->data = StringStreamWrapper::Open($data);
$message->asbody->estimatedDataSize = strlen($data);
unset($data);
$message->nativebodytype = SYNC_BODYPREFERENCE_PLAIN; $message->nativebodytype = SYNC_BODYPREFERENCE_PLAIN;
} }
else { else {
...@@ -1067,7 +1070,7 @@ class BackendCalDAV extends BackendDiff { ...@@ -1067,7 +1070,7 @@ class BackendCalDAV extends BackendDiff {
$vevent->AddProperty("DESCRIPTION", $data->body); $vevent->AddProperty("DESCRIPTION", $data->body);
} }
if (isset($data->asbody->data)) { if (isset($data->asbody->data)) {
$vevent->AddProperty("DESCRIPTION", $data->asbody->data); $vevent->AddProperty("DESCRIPTION", stream_get_contents($data->asbody->data));
} }
if (isset($data->categories) && is_array($data->categories)) { if (isset($data->categories) && is_array($data->categories)) {
$vevent->AddProperty("CATEGORIES", implode(",", $data->categories)); $vevent->AddProperty("CATEGORIES", implode(",", $data->categories));
...@@ -1336,13 +1339,13 @@ class BackendCalDAV extends BackendDiff { ...@@ -1336,13 +1339,13 @@ class BackendCalDAV extends BackendDiff {
if (isset($data->asbody->data)) { if (isset($data->asbody->data)) {
if (isset($data->nativebodytype) && $data->nativebodytype == SYNC_BODYPREFERENCE_RTF) { if (isset($data->nativebodytype) && $data->nativebodytype == SYNC_BODYPREFERENCE_RTF) {
$rtfparser = new rtf(); $rtfparser = new rtf();
$rtfparser->loadrtf(base64_decode($data->asbody->data)); $rtfparser->loadrtf(base64_decode(stream_get_contents($data->asbody->data)));
$rtfparser->output("ascii"); $rtfparser->output("ascii");
$rtfparser->parse(); $rtfparser->parse();
$vtodo->AddProperty("DESCRIPTION", $rtfparser->out); $vtodo->AddProperty("DESCRIPTION", $rtfparser->out);
} }
else { else {
$vtodo->AddProperty("DESCRIPTION", $data->asbody->data); $vtodo->AddProperty("DESCRIPTION", stream_get_contents($data->asbody->data));
} }
} }
if (isset($data->complete)) { if (isset($data->complete)) {
......
...@@ -1177,16 +1177,17 @@ class BackendCardDAV extends BackendDiff implements ISearchProvider { ...@@ -1177,16 +1177,17 @@ class BackendCardDAV extends BackendDiff implements ISearchProvider {
if (Request::GetProtocolVersion() >= 12.0) { if (Request::GetProtocolVersion() >= 12.0) {
$message->asbody = new SyncBaseBody(); $message->asbody = new SyncBaseBody();
$message->asbody->type = SYNC_BODYPREFERENCE_PLAIN; $message->asbody->type = SYNC_BODYPREFERENCE_PLAIN;
$message->asbody->data = $vcard['note'][0]['val'][0]; $data = $vcard['note'][0]['val'][0];
if ($truncsize > 0 && $truncsize < strlen($message->asbody->data)) { if ($truncsize > 0 && $truncsize < strlen($data)) {
$message->asbody->truncated = 1; $message->asbody->truncated = 1;
$message->asbody->data = Utils::Utf8_truncate($message->asbody->data, $truncsize); $data = Utils::Utf8_truncate($data, $truncsize);
} }
else { else {
$message->asbody->truncated = 0; $message->asbody->truncated = 0;
} }
$message->asbody->data = StringStreamWrapper::Open($data);
$message->asbody->estimatedDataSize = strlen($message->asbody->data); $message->asbody->estimatedDataSize = strlen($data);
unset($data);
} }
else { else {
$message->body = $vcard['note'][0]['val'][0]; $message->body = $vcard['note'][0]['val'][0];
...@@ -1261,7 +1262,7 @@ class BackendCardDAV extends BackendDiff implements ISearchProvider { ...@@ -1261,7 +1262,7 @@ class BackendCardDAV extends BackendDiff implements ISearchProvider {
$val.=';'; $val.=';';
} }
if ($k == 'body' && isset($message->asbody)) { if ($k == 'body' && isset($message->asbody)) {
$val = $message->asbody->data; $val = stream_get_contents($message->asbody->data);
} }
if (empty($val) || preg_match('/^(\;)+$/', $val) == 1) if (empty($val) || preg_match('/^(\;)+$/', $val) == 1)
continue; continue;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment