-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
85 changed files
with
19,845 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,232 @@ | ||
# iCalcreator | ||
|
||
###### Demo usage | ||
|
||
``` php | ||
<?php | ||
|
||
use DateTime; | ||
use DateTimezone; | ||
use Kigkonsult\Icalcreator\Vcalendar; | ||
|
||
// create a new calendar | ||
$vcalendar = Vcalendar::factory( [ Vcalendar::UNIQUE_ID => "kigkonsult.se", ] ) | ||
|
||
// with calendaring info | ||
->setMethod( Vcalendar::PUBLISH ) | ||
->setXprop( Vcalendar::X_WR_CALNAME, "Calendar Sample" ) | ||
->setXprop( Vcalendar::X_WR_CALDESC, "This is a demo calendar" ) | ||
->setXprop( Vcalendar::X_WR_RELCALID, "3E26604A-50F4-4449-8B3E-E4F4932D05B5" ) | ||
->setXprop( Vcalendar::X_WR_TIMEZONE, "Europe/Stockholm" ); | ||
|
||
// create a new event | ||
$event1 = $vcalendar->newVevent() | ||
->setTransp( Vcalendar::OPAQUE ) | ||
->setClass( Vcalendar::P_BLIC ) | ||
->setSequence( 1 ) | ||
// describe the event | ||
->setSummary( 'Scheduled meeting with five occurrences' ) | ||
->setDescription( | ||
'Agenda for the the meeting...', | ||
[ Vcalendar::ALTREP => 'CID:<FFFF__=[email protected]>' ] | ||
) | ||
->setComment( 'It\'s going to be fun..' ) | ||
// place the event | ||
->setLocation( 'Kafé Ekorren Stockholm' ) | ||
->setGeo( '59.32206', '18.12485' ) | ||
// set the time | ||
->setDtstart( | ||
new DateTime( | ||
'20190421T090000', | ||
new DateTimezone( 'Europe/Stockholm' ) | ||
) | ||
) | ||
->setDtend( | ||
new DateTime( | ||
'20190421T100000', | ||
new DateTimezone( 'Europe/Stockholm' ) | ||
) | ||
) | ||
// with recurrence rule | ||
->setRrule( | ||
[ | ||
Vcalendar::FREQ => Vcalendar::WEEKLY, | ||
Vcalendar::COUNT => 5, | ||
] | ||
) | ||
// and set another on a specific date | ||
->setRdate( | ||
[ | ||
new DateTime( | ||
'20190609T090000', | ||
new DateTimezone( 'Europe/Stockholm' ) | ||
), | ||
new DateTime( | ||
'20190609T110000', | ||
new DateTimezone( 'Europe/Stockholm' ) | ||
), | ||
], | ||
[ Vcalendar::VALUE => Vcalendar::PERIOD ] | ||
) | ||
// and revoke a recurrence date | ||
->setExdate( | ||
new DateTime( | ||
'2019-05-12 09:00:00', | ||
new DateTimezone( 'Europe/Stockholm' ) | ||
) | ||
) | ||
// organizer, chair and some participants | ||
->setOrganizer( | ||
'[email protected]', | ||
[ Vcalendar::CN => 'Secretary CoffeeBean' ] | ||
) | ||
->setAttendee( | ||
'[email protected]', | ||
[ | ||
Vcalendar::ROLE => Vcalendar::CHAIR, | ||
Vcalendar::PARTSTAT => Vcalendar::ACCEPTED, | ||
Vcalendar::RSVP => Vcalendar::FALSE, | ||
Vcalendar::CN => 'President CoffeeBean', | ||
] | ||
) | ||
->setAttendee( | ||
'[email protected]', | ||
[ | ||
Vcalendar::ROLE => Vcalendar::REQ_PARTICIPANT, | ||
Vcalendar::PARTSTAT => Vcalendar::NEEDS_ACTION, | ||
Vcalendar::RSVP => Vcalendar::TRUE, | ||
Vcalendar::CN => 'Participant1 CoffeeBean', | ||
] | ||
) | ||
->setAttendee( | ||
'[email protected]', | ||
[ | ||
Vcalendar::ROLE => Vcalendar::REQ_PARTICIPANT, | ||
Vcalendar::PARTSTAT => Vcalendar::NEEDS_ACTION, | ||
Vcalendar::RSVP => Vcalendar::TRUE, | ||
Vcalendar::CN => 'Participant2 CoffeeBean', | ||
] | ||
); | ||
|
||
// add alarm for the event | ||
$alarm = $event1->newValarm() | ||
->setAction( Vcalendar::DISPLAY ) | ||
// copy description from event | ||
->setDescription( $event1->getDescription()) | ||
// fire off the alarm one day before | ||
->setTrigger( '-P1D' ); | ||
|
||
// alter day and time for one event in recurrence set | ||
$event2 = $vcalendar->newVevent() | ||
->setTransp( Vcalendar::OPAQUE ) | ||
->setClass( Vcalendar::P_BLIC ) | ||
// reference to event in recurrence set | ||
->setUid( $event1->getUid()) | ||
->setSequence( 2 ) | ||
// pointer to event in the recurrence set | ||
->setRecurrenceid( '20190505T090000 Europe/Stockholm' ) | ||
// reason text | ||
->setDescription( | ||
'Altered day and time for event 2019-05-05', | ||
[ | ||
Vcalendar::ALTREP =>'CID:<FFFF__=[email protected]>' | ||
] | ||
) | ||
->setComment( 'Now we are working hard for two hours' ) | ||
// the altered day and time with duration | ||
->setDtstart( | ||
new DateTime( | ||
'20190504T100000', | ||
new DateTimezone( 'Europe/Stockholm' ) | ||
) | ||
) | ||
->setDuration( 'PT2H' ) | ||
// add alarm (copy from event1) | ||
->setComponent( $event1->getComponent( Vcalendar::VALARM )); | ||
|
||
$vcalendarString = | ||
// apply appropriate Vtimezone with Standard/DayLight components | ||
$vcalendar->vtimezonePopulate() | ||
// and create the (string) calendar | ||
->createCalendar(); | ||
``` | ||
|
||
And the content of the ```$vcalendarString``` : | ||
|
||
``` | ||
BEGIN:VCALENDAR | ||
VERSION:2.0 | ||
PRODID:-//kigkonsult.se//NONSGML kigkonsult.se iCalcreator 2.41.74// | ||
METHOD:PUBLISH | ||
X-WR-CALNAME:Calendar Sample | ||
X-WR-CALDESC:This is a demo calendar | ||
X-WR-RELCALID:3E26604A-50F4-4449-8B3E-E4F4932D05B5 | ||
X-WR-TIMEZONE:Europe/Stockholm | ||
BEGIN:VTIMEZONE | ||
TZID:Europe/Stockholm | ||
BEGIN:STANDARD | ||
TZNAME:CET | ||
DTSTART:20181028T030000 | ||
TZOFFSETFROM:+0200 | ||
TZOFFSETTO:+0100 | ||
RDATE:20191027T030000 | ||
RDATE:20201025T030000 | ||
END:STANDARD | ||
BEGIN:DAYLIGHT | ||
TZNAME:CEST | ||
DTSTART:20190331T020000 | ||
TZOFFSETFROM:+0100 | ||
TZOFFSETTO:+0200 | ||
RDATE:20200329T020000 | ||
END:DAYLIGHT | ||
END:VTIMEZONE | ||
BEGIN:VEVENT | ||
UID:[email protected] | ||
DTSTAMP:20190312T184303Z | ||
ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=President CoffeeBean:MAILTO:presid | ||
[email protected] | ||
ATTENDEE;RSVP=TRUE;CN=Participant1 CoffeeBean:MAILTO:participant1@coffeebea | ||
n.com | ||
ATTENDEE;RSVP=TRUE;CN=Participant2 CoffeeBean:MAILTO:participant2@coffeebea | ||
n.com | ||
COMMENT:It's going to be fun.. | ||
CLASS:PUBLIC | ||
DESCRIPTION;ALTREP="CID:<[email protected]>": | ||
Agenda for the the meeting... | ||
DTSTART;TZID=Europe/Stockholm:20190421T090000 | ||
DTEND;TZID=Europe/Stockholm:20190421T100000 | ||
EXDATE;TZID=Europe/Stockholm:20190512T090000 | ||
GEO:+59.32206;+18.12485 | ||
LOCATION:Kafé Ekorren Stockholm | ||
ORGANIZER;CN=Secretary CoffeeBean:MAILTO:[email protected] | ||
RDATE;VALUE=PERIOD;TZID=Europe/Stockholm:20190609T090000/20190609T110000 | ||
RRULE:FREQ=WEEKLY;COUNT=5 | ||
SEQUENCE:1 | ||
SUMMARY:Scheduled meeting with six occurrences | ||
TRANSP:OPAQUE | ||
BEGIN:VALARM | ||
ACTION:DISPLAY | ||
DESCRIPTION:Agenda for the the meeting... | ||
TRIGGER:-P1D | ||
END:VALARM | ||
END:VEVENT | ||
BEGIN:VEVENT | ||
UID:[email protected] | ||
DTSTAMP:20190312T184303Z | ||
COMMENT:Now we are working hard for two hours | ||
CLASS:PUBLIC | ||
DESCRIPTION;ALTREP="CID:<[email protected]>": | ||
Altered day and time for event 2019-05-05 | ||
DTSTART;TZID=Europe/Stockholm:20190504T100000 | ||
DURATION:PT2H | ||
RECURRENCE-ID;TZID=Europe/Stockholm:20190505T090000 | ||
SEQUENCE:2 | ||
TRANSP:OPAQUE | ||
BEGIN:VALARM | ||
ACTION:DISPLAY | ||
DESCRIPTION:Agenda for the the meeting... | ||
TRIGGER:-P1D | ||
END:VALARM | ||
END:VEVENT | ||
END:VCALENDAR | ||
``` |
Oops, something went wrong.