スケジュールされた写真撮影を追跡するテーブルを使用して、PHP5とMySQLでサイトを構築しました。スケジュールされた「イベント」のフィードをicalファイルにプッシュしたいと思います。
私はもともとこの質問をし、 S。Gehrigから良い答えを得ました。サンプルのicalファイルが機能し、Dreamweaverでファイルを手動で調整するたびにGoogleカレンダーで定期的に更新されました。ただし、データベースから動的PHPプルを追加したため、機能しません。
PHPは次のとおりです。
<?php
require_once('../../_includes/initialize.php');
$ical = " BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN ";
$slots = Slot::find_all();
foreach($slots as $slot) {
$job = Job::find_by_id($slot->job_id);
$start_stamp = strtotime($slot->start);
$end_stamp = strtotime($slot->endtime);
$dtstart = gmdate('Ymd', $start_stamp).'T'. gmdate('His', $start_stamp) . "Z"; // converts to UTC time
$dtend = gmdate('Ymd', $end_stamp).'T'. gmdate('His', $end_stamp) . "Z"; // converts to UTC time
$summary = $job->title;
$ical .= " BEGIN:VEVENT
UID:" . $slot->id . "@homewoodphoto.jhu.edu
DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z
DTSTART:" . $dtstart . "
DTEND:" . $dtend . "
SUMMARY:" . $summary . "
END:VEVENT ";
}
$ical .= " END:VCALENDAR";
//set correct content-type-header
header('Content-type: text/calendar; charset=utf-8');
header('Content-Disposition: inline; filename=homewoodphoto_master.ics');
echo $ical;
exit;
?>
このファイルの出力は、私が知る限り、私が作業している手動のハードコードされたバージョンとまったく同じです。なぜこれが機能しないのか誰かがわかりますか????
PSこれが機能しているファイルのコードです-私はちょうどそれを私のサーバーに投稿し、GoogleカレンダーのURLを介してサブスクライブしました。2番目のイベントでハードコーディングしたとき、それはまもなくGoogleカレンダーに表示されました。
<?php
$ical = "BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:" . md5(uniqid(mt_rand(), true)); . "@yourhost.test
DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z
DTSTART:20090925T170000Z
DTEND:20090928T035959Z
SUMMARY:Bastille Day Party
END:VEVENT
BEGIN:VEVENT
UID:" . md5(uniqid(mt_rand(), true)); . "@yourhost.test
DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z
DTSTART:20090929T170000Z
DTEND:20090930T035959Z
SUMMARY:Camping Trip
END:VEVENT
END:VCALENDAR";
//set correct content-type-header
header('Content-type: text/calendar; charset=utf-8');
header('Content-Disposition: inline; filename=calendar.ics');
echo $ical;
exit;
?>
ヘルプ!
コメント投稿者は、ヘッダーを削除して$icalvarをエコーすることでテストすることを提案しました。そのテストの結果は次のとおりです。便宜上、改行が追加されています。
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:21@homewoodphoto.jhu.edu
DTSTAMP:20090929T212141Z
DTSTART:20091001T230000Z
DTEND:20091001T230000Z
SUMMARY:little title
END:VEVENT
BEGIN:VEVENT
UID:22@homewoodphoto.jhu.edu
DTSTAMP:20090929T212141Z
DTSTART:20090926T230000Z
DTEND:20090927T010000Z
SUMMARY:A big photo shoot
END:VEVENT
BEGIN:VEVENT
UID:23@homewoodphoto.jhu.edu
DTSTAMP:20090929T212141Z
DTSTART:20091003T230000Z
DTEND:20091004T010000Z
SUMMARY:A big photo shoot
END:VEVENT
END:VCALENDAR
ありがとう!