2010-10-25 134 views
1

我正在使用iCalCreator类创建用于加载到其个人日历中的事件。以下是不熟悉的信息:http://www.kigkonsult.se/iCalcreator/在不创建日历的情况下创建iCal事件

使用文档,在主页上,我可以创建一个事件并将其输出到浏览器。没问题。问题在于,当它被导入时(我正在测试Outlook,但我期望这会持续到其他日历软件),它会导入为新日历,并带有一个事件。我希望事件能够直接进入常规日历。

有没有人有经验的iCalCreator,并知道我可以做到这一点?

感谢

回答

1

你可以尝试更换Line方法:与方法发布:请求。这是我对RFC2446中的调度协议的理解(当然是模糊的,未经测试),那么这是一个邀请,Outlook可能会要求用户接受(并进入日历)或拒绝它。 它似乎与TB /闪电一起工作。

3

由于您使用的是PHP,所以您只需将一个文件写成一个文件并将其保存在服务器上即可。 ical事件本质上是一个文本文件。您只需更新名称,唯一ID并更新时间以匹配您的活动。这样你所做的只是创建一个文本文件并将其命名为.ics。希望能帮助到你。

BEGIN:VCALENDAR 
CALSCALE:GREGORIAN 
VERSION:2.0 
X-WR-CALNAME:Test making a generic ical event 
METHOD:PUBLISH 
PRODID:-//angelfilm entertainment LLC//EN 
BEGIN:VTIMEZONE 
TZID:America/Los_Angeles 
BEGIN:DAYLIGHT 
TZOFFSETFROM:-0800 
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU 
DTSTART:20070311T020000 
TZNAME:PDT 
TZOFFSETTO:-0700 
END:DAYLIGHT 
BEGIN:STANDARD 
TZOFFSETFROM:-0700 
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU 
DTSTART:20071104T020000 
TZNAME:PST 
TZOFFSETTO:-0800 
END:STANDARD 
END:VTIMEZONE 
BEGIN:VEVENT 
CREATED:20110720T173758Z 
UID:6asdf9-asdfkjasdf-asd-asdf-sdaf33FE 
DTEND;TZID=America/Los_Angeles:20110908T120000 
TRANSP:OPAQUE 
SUMMARY:Test making a generic ical event 
DTSTART;TZID=America/Los_Angeles:20110908T110000 
DTSTAMP:20110808T174507Z 
SEQUENCE:3 
BEGIN:VALARM 
X-WR-ALARMUID:6asdf9-asdfkjasdf-asd-asdf-sdaf33Fa 
TRIGGER;VALUE=DATE-TIME:20110908T105100 
ATTACH;VALUE=URI:Basso 
ACTION:AUDIO 
END:VALARM 
END:VEVENT 
END:VCALENDAR 

保存上述文本字符串

$myFile = "myIcalEvent.ics"; 
$fh = fopen($myFile, 'w') or die("can't open file"); 
$stringData = "THE ABOVE ICAL TEXT COULD BE SAVED TO THIS VARIABLE"; 
fwrite($fh, $stringData); 
fclose($fh); 

然后你就可以有一个下载该文件

<?php 
// We'll be outputting a ICS 
header('Content-type: text/calendar'); 

// It will be called downloaded.ics 
header('Content-Disposition: attachment; filename="downloaded.ics"'); 

// The PDF source is in myIcalEvent.ics 
readfile('myIcalEvent.ics'); 
?> 
0

试试这个(从https://gist.github.com/jakebellacera/635416

<?php 
// Fetch vars 
$event = array(
    'id' => $_GET['id'], 
    'title' => $_GET['title'], 
     'address' => $_GET['address'], 
    'description' => $_GET['description'], 
    'datestart' => $_GET['datestart'], 
    'dateend' => $_GET['dateend'], 
    'address' => $_GET['stage'] 
); 

// iCal date format: yyyymmddThhiissZ 
// PHP equiv format: Ymd\This 

// The Function 

function dateToCal($time) { 
    return date('Ymd\This', $time) . 'Z'; 
} 

// Build the ics file 
$ical = 'BEGIN:VCALENDAR 
VERSION:2.0 
PRODID:-//hacksw/handcal//NONSGML v1.0//EN 
CALSCALE:GREGORIAN 
BEGIN:VEVENT 
DTEND:' . dateToCal($event['dateend']) . ' 
UID:' . md5($event['title']) . ' 
DTSTAMP:' . time() . ' 
LOCATION:' . addslashes($event['address']) . ' 
DESCRIPTION:' . addslashes($event['description']) . ' 
URL;VALUE=URI:http://mohawkaustin.com/events/' . $event['id'] . ' 
SUMMARY:' . addslashes($event['title']) . ' 
DTSTART:' . dateToCal($event['datestart']) . ' 
END:VEVENT 
END:VCALENDAR'; 

//set correct content-type-header 
if($event['id']){ 
    header('Content-type: text/calendar; charset=utf-8'); 
    header('Content-Disposition: attachment; filename=mohawk-event.ics'); 
    echo $ical; 
} else { 
    // If $id isn't set, then kick the user back to home. Do not pass go, and do not collect $200. 
    header('Location: /'); 
} 
?> 
页面