Hallo,
Und wenn du wieder, trotz Aufforderung, die relevanten Infos verweigerst, musst du doch ins Nachbarforum gehen, dann bin ich raus.
sorry, kenne kein Nachbarforum von Selfhtml.
wenn ich utf8_encode() weglasse fehlen mir die kompletten Umlaute, darauf kann ich nicht verzichten.
Die Funktion zur ermittlung des Description-Textes sieht so aus:
function getCalendarPostingBody($topic)
{
global $smcFunc;
$request = $smcFunc['db_query']('', '
SELECT body FROM {db_prefix}messages Where id_topic = ' . $topic . '
Order By id_msg ASC Limit 1'
);
$row = $smcFunc['db_fetch_assoc']($request);
$return_value = $row['body'];
$smcFunc['db_free_result']($request);
return $return_value;
}
Der Code welcher die ics-Datei erstellt sieht so aus (in wesentlichen Teilen)
$description = '';
$summary = '';
$location='';
if (isset($_REQUEST['topic']))
{
if (strlen($_REQUEST['topic'])>0)
{
$summary = utf8_encode(getCalendarPostingTitle($_REQUEST['topic']));
$description = utf8_encode(getCalendarPostingBody($_REQUEST['topic']));
$description = str_replace("<br />", "\n\n", $description);
}
$location = utf8_encode(getCalendarPostingLocation($_REQUEST['eventid']));
}
// This is what we will be sending later.
$filecontents = '';
$filecontents .= 'BEGIN:VCALENDAR' . "\n";
$filecontents .= 'VERSION:2.0' . "\n";
$filecontents .= 'PRODID:-//SimpleMachines//SMF ' . (empty($forum_version) ? 1.0 : strtr($forum_version, array('SMF ' => ''))) . '//EN' . "\n";
$filecontents .= 'BEGIN:VEVENT' . "\n";
$filecontents .= 'DTSTART:' . $date . "\n";
$filecontents .= 'DTEND:' . $date . "\n";
$filecontents .= 'LOCATION:'. $location . "\n";
$filecontents .= 'SUMMARY:' . (isset($_REQUEST['topic']) ? utf8_encode(implode('',$title)) : $summary) . "\n";
$filecontents .= 'DESCRIPTION:' . $description ."\n";
$filecontents .= 'END:VEVENT'."\n";
$filecontents .= 'END:VCALENDAR';
// Send some standard headers.
ob_end_clean();
if (!empty($modSettings['enableCompressedOutput']))
@ob_start('ob_gzhandler');
else
ob_start();
// Send the file headers
header('Pragma: ');
header('Cache-Control: no-cache');
if (!$context['browser']['is_gecko'])
header('Content-Transfer-Encoding: binary');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 525600 * 60) . ' GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', time()) . 'GMT');
header('Accept-Ranges: bytes');
header('Connection: close');
header('Content-Disposition: attachment; filename=' . $event['title'] . '.ics');
// How big is it?
if (empty($modSettings['enableCompressedOutput']))
header('Content-Length: ' . $smcFunc['strlen']($filecontents));
// This is a calendar item!
header('Content-Type: text/calendar; charset=UTF-8');
// Chuck out the card.
echo $filecontents;
// Off we pop - lovely!
obExit(false);
Lass ich die utf8_encode Funktion weg, ändert sich nichts. Scheinbar dient "\n" als Steuerzeichen, denn im Text der ical Datei sind diese nicht sichtbar, und wenn ich die Datei mit Outlook öffne bricht der Description-Text beim ersten "\n" ab.
Gruß Andreas