milan-mimra / ics
用于创建多字节安全、符合RFC 5545规范的.ics文件的抽象层
0.7.1
2019-03-07 12:29 UTC
Requires
- php: ^7.1
- simshaun/recurr: ^3.0
Requires (Dev)
- phpunit/phpunit: ^4.8 || ^5.5
README
ICS
面向对象的PHP库,用于创建(并最终读取).ics iCal文件。
- 该项目尚未支持所有.ics格式功能。
1. 基本用法
use Jsvrcek\ICS\Model\Calendar; use Jsvrcek\ICS\Model\CalendarEvent; use Jsvrcek\ICS\Model\Relationship\Attendee; use Jsvrcek\ICS\Model\Relationship\Organizer; use Jsvrcek\ICS\Utility\Formatter; use Jsvrcek\ICS\CalendarStream; use Jsvrcek\ICS\CalendarExport; //setup an event $eventOne = new CalendarEvent(); $eventOne->setStart(new \DateTime()) ->setSummary('Family reunion') ->setUid('event-uid'); //add an Attendee $attendee = new Attendee(new Formatter()); $attendee->setValue('moe@example.com') ->setName('Moe Smith'); $eventOne->addAttendee($attendee); //set the Organizer $organizer = new Organizer(new Formatter()); $organizer->setValue('heidi@example.com') ->setName('Heidi Merkell') ->setLanguage('de'); $eventOne->setOrganizer($organizer); //new event $eventTwo = new CalendarEvent(); $eventTwo->setStart(new \DateTime()) ->setSummary('Dentist Appointment') ->setUid('event-uid'); //setup calendar $calendar = new Calendar(); $calendar->setProdId('-//My Company//Cool Calendar App//EN') ->addEvent($eventOne) ->addEvent($eventTwo); //setup exporter $calendarExport = new CalendarExport(new CalendarStream, new Formatter()); $calendarExport->addCalendar($calendar); //output .ics formatted text echo $calendarExport->getStream();
2. 批量事件提供者
基本用法示例将在内存中构建完整的.ics字符串,然后一次性输出。对于大型日历,这将会消耗大量内存。以下示例展示了如何使CalendarExport::getStream()输出ics文件生成的每一行,以及如何在导出期间分批设置构建日历事件列表的提供者。
use Jsvrcek\ICS\Model\Calendar; use Jsvrcek\ICS\Model\CalendarEvent; use Jsvrcek\ICS\Utility\Formatter; use Jsvrcek\ICS\CalendarStream; use Jsvrcek\ICS\CalendarExport; //setup calendar $calendar = new Calendar(); $calendar->setProdId('-//My Company//Cool Calendar App//EN'); //setup event provider to add events in batches during event iteration in $calendarExport->getStream() $calendar->setEventsProvider(function ($startKey) use ($myDatabase) { //pseudo-code to get a batch of events from database $eventDataArray = $myDatabase->getEventsBatch($startKey); $events = array(); foreach ($eventDataArray as $row) { $event = new CalendarEvent(); $event->setStart($row['start_date']) ->setSummary($row['summary']) ->setUid($row['event_uid']); $events[] = $event; } return $events; }); //setup exporter $calendarExport = new CalendarExport(new CalendarStream, new Formatter()); $calendarExport->addCalendar($calendar); //set exporter to send items directly to output instead of storing in memory $calendarExport->getStreamObject()->setDoImmediateOutput(true); //output .ics formatted text echo $calendarExport->getStream();
待办事项
- Jsvrcek\ICS\Model\CalendarTodo
参考
致谢
许可证
MIT许可证(MIT)
版权所有 (c) 2013 Justin Svrcek
特此授予任何人免费获得本软件及其相关文档文件(“软件”)副本的权利,无限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向软件提供副本的个人这样做,但受以下条件的约束
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是基于合同、侵权或其他方式,是否因软件或其使用或其他方式而产生的。