Ben planlanan fotoğraf çekimleri izler bir tablo ile PHP 5 ve MySQL bir site kurdu. Ben bir iCal dosyası içine bu planlanan "olayların" bir yem dışarı itmek istiyor.
Ben aslında asked this question ve iyi bir cevabı var S. Gehrig. Ben örnek bir iCal dosyası, çalışma ve elle Dreamweaver dosyayı düzeltilmiş zaman Google Takvim'de düzenli olarak güncellenmesi var. Ancak, şimdi ben veritabanından çekerek dinamik PHP ekledim ki, bu iş olmaz.
İşte PHP bulunuyor:
<?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;
?>
Bu dosyanın çıktısı kadarıyla söyleyebilirim, çalışma var manuel, kodlanmış sürüm tam olarak aynıdır. Bu neden çalışmadığını kimse görebilir miyim??
PS burada çalışıyor dosyasının kodu - Ben sadece benim sunucuda yayınlanan ve Google Takvim'de URL yoluyla abone. Ben 2. olay kodlanmış zaman, kendi üzerinde Google Takvim ile kısa bir süre geldi.
<?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;
?>
YARDIM!
Bir yorumcu ben başlıklarını kaldırılması ve $ ical VAR yankılanan tarafından testi önerdi. İşte o testin sonuçları size kolaylık sağlamak için eklenen satır sonları ile, şunlardır:
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
Teşekkürler!