mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-06-24 11:51:43 +02:00
multiple fixes around managed attachments and new Horde_Icalendar:
- no longer decodes base64 automatic - size param have to be string due to bug in handling of integers in Horde_Icalendar - allow stripping of non-binary (eg. text/plain) inline attachments - only add X-EGROUPWARE-ATTACH-INCLUDED, if we have a real managed attachment - store external / url attachments as other unsupported attributes
This commit is contained in:
parent
2156013454
commit
4c21f5b19e
@ -2978,6 +2978,9 @@ class calendar_ical extends calendar_boupdate
|
|||||||
case 'X-LIC-ERROR': // parse errors from libical, makes no sense to store them
|
case 'X-LIC-ERROR': // parse errors from libical, makes no sense to store them
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'ATTACH':
|
||||||
|
if ($attributes['params'] && !empty($attributes['params']['FMTTYPE'])) break; // handeled by managed attachment code
|
||||||
|
// fall throught to store external attachment url
|
||||||
default: // X- attribute or other by EGroupware unsupported property
|
default: // X- attribute or other by EGroupware unsupported property
|
||||||
//error_log(__METHOD__."() $attributes[name] = ".array2string($attributes));
|
//error_log(__METHOD__."() $attributes[name] = ".array2string($attributes));
|
||||||
// for attributes with multiple values in multiple lines, merge the values
|
// for attributes with multiple values in multiple lines, merge the values
|
||||||
|
@ -1382,10 +1382,11 @@ class groupdav extends HTTP_WebDAV_Server
|
|||||||
// turn inline attachments into managed ones
|
// turn inline attachments into managed ones
|
||||||
foreach($attach as $key => $attr)
|
foreach($attach as $key => $attr)
|
||||||
{
|
{
|
||||||
if ($attr['params']['VALUE'] === 'BINARY')
|
if (!empty($attr['params']['FMTTYPE']))
|
||||||
{
|
{
|
||||||
if (!($to = self::fopen_attachment($app, $id, $filename=$attr['params']['FILENAME'], $attr['params']['FMTTYPE'], $path)) ||
|
if (!($to = self::fopen_attachment($app, $id, $filename=$attr['params']['FILENAME'], $attr['params']['FMTTYPE'], $path)) ||
|
||||||
($copied=fwrite($to, $attr['value'])) === false)
|
// Horde Icalendar does NOT decode automatic
|
||||||
|
($copied=fwrite($to, $attr['params']['ENCODING'] == 'BASE64' ? base64_decode($attr['value']) : $attr['value'])) === false)
|
||||||
{
|
{
|
||||||
error_log(__METHOD__."('$app', $id, ...) failed to add attachment ".array2string($attr).") ");
|
error_log(__METHOD__."('$app', $id, ...) failed to add attachment ".array2string($attr).") ");
|
||||||
continue;
|
continue;
|
||||||
@ -1484,13 +1485,13 @@ class groupdav extends HTTP_WebDAV_Server
|
|||||||
$parameters['ATTACH'][] = array(
|
$parameters['ATTACH'][] = array(
|
||||||
'MANAGED-ID' => groupdav::path2managed_id($path),
|
'MANAGED-ID' => groupdav::path2managed_id($path),
|
||||||
'FMTTYPE' => $stat['mime'],
|
'FMTTYPE' => $stat['mime'],
|
||||||
'SIZE' => $stat['size'],
|
'SIZE' => (string)$stat['size'], // Horde_Icalendar renders int as empty string
|
||||||
'FILENAME' => egw_vfs::basename($path),
|
'FILENAME' => egw_vfs::basename($path),
|
||||||
);
|
);
|
||||||
}
|
|
||||||
// if we have attachments, set X-attribute to enable deleting them by put
|
// if we have attachments, set X-attribute to enable deleting them by put
|
||||||
// (works around events synced before without ATTACH attributes)
|
// (works around events synced before without ATTACH attributes)
|
||||||
if ($attributes['ATTACH']) $attributes['X-EGROUPWARE-ATTACH-INCLUDED'] = 'TRUE';
|
$attributes['X-EGROUPWARE-ATTACH-INCLUDED'] = 'TRUE';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user