relaxsd/php-icalendar

PHP的流畅iCalendar创建器

v0.8.0 2020-05-11 20:50 UTC

This package is auto-updated.

Last update: 2024-09-12 06:29:30 UTC


README

PHP的流畅iCalendar创建器

关于RFC,请参阅 https://www.ietf.org/rfc/rfc2445.txt

当前状态

  • RFC覆盖率:80%(支持所有组件,除VTIMEZONE外)
  • 流畅接口:70%(正在改进)
  • 测试案例:10%(仅测试了RFC中的某些示例,见下文。)

RFC中的示例

事件

以下是一个使用“VEVENT”日历组件表示的会议示例,此会议对于忙碌时间搜索也是不可见的

 BEGIN:VEVENT
 UID:19970901T130000Z-123401@host.com
 DTSTAMP:19970901T1300Z
 DTSTART:19970903T163000Z
 DTEND:19970903T190000Z
 SUMMARY:Annual Employee Review
 CLASS:PRIVATE
 CATEGORIES:BUSINESS,HUMAN RESOURCES
 END:VEVENT

在PHP中创建此事件

$event  = new Event('19970901T130000Z-123401@host.com')
            ->setDateTimeStamp('1997-09-01 13:00 UTC')
            ->setDateTimeStart('1997-09-03 16:30 UTC')
            ->setDateTimeEnd('1997-09-03 19:00 UTC')
            ->setSummary('Annual Employee Review')
            ->setClassification(Classification::CLASSIFICATION_PRIVATE)
            ->setCategories(['BUSINESS', 'HUMAN RESOURCES']);

音频闹钟

以下是一个“VALARM”日历组件的示例,它指定了一个在特定时间响起并重复4次,每次间隔15分钟的音频闹钟

 BEGIN:VALARM
 TRIGGER;VALUE=DATE-TIME:19970317T133000Z
 REPEAT:4
 DURATION:PT15M
 ACTION:AUDIO
 ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud
 END:VALARM

在PHP中创建此事件

$audioAlarm = new AudioAlarm()
    ->setTrigger('1997-03-17 13:30 UTC')
    ->setRepeatCount(4)
    ->setAttachment(UriAttachment::forAudioUrl('ftp://host.com/pub/sounds/bell-01.aud'))
    ->setDuration(Duration::forMinutes(15));

音频闹钟

以下是一个“VALARM”日历组件的示例,它指定了一个在特定时间响起并重复4次,每次间隔15分钟的音频闹钟

 BEGIN:VALARM
 TRIGGER;VALUE=DATE-TIME:19970317T133000Z
 REPEAT:4
 DURATION:PT15M
 ACTION:AUDIO
 ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud
 END:VALARM

在PHP中创建此事件

$audioAlarm = new AudioAlarm()
    ->setTrigger('1997-03-17 13:30 UTC')
    ->setRepeatCount(4)
    ->setAttachment(UriAttachment::forAudioUrl('ftp://host.com/pub/sounds/bell-01.aud'))
    ->setDuration(Duration::forMinutes(15));

待办事项

以下是一个“VTODO”日历组件的示例

 BEGIN:VTODO
 UID:19970901T130000Z-123404@host.com
 DTSTAMP:19970901T1300Z
 DTSTART:19970415T133000Z
 DUE:19970416T045959Z
 SUMMARY:1996 Income Tax Preparation
 CLASS:CONFIDENTIAL
 CATEGORIES:FAMILY,FINANCE
 PRIORITY:1
 STATUS:NEEDS-ACTION
 END:VTODO

在PHP中创建此事件

$todo = new Todo()
    ->setUniqueIdentifier('19970901T130000Z-123404@host.com')
    ->setDateTimeStamp('1997-09-01 13:00 UTC')
    ->setDateTimeStart('1997-04-15 13:30 UTC')
    ->setDateTimeDue('1997-04-16 04:59:59 UTC')
    ->setSummary('1996 Income Tax Preparation')
    ->setClassification(Classification::CLASSIFICATION_CONFIDENTIAL)
    ->setCategories(['FAMILY', 'FINANCE'])
    ->setPriority(1)
    ->setStatus(Status::STATUS_NEEDS_ACTION);