Skip to content

Component calendar

The calendar is basically a collection of events. A calendar can be represented as a .ical file.

Adding events

Events can be either added via the named constructor:

use OpenCal\iCal\Domain\Entity\Calendar;
use OpenCal\iCal\Domain\Entity\Event;

$events = [
    new Event(),
    new Event(),
];

$calendar = new Calendar($events);

or calling the addEvent method:

use OpenCal\iCal\Domain\Entity\Calendar;
use OpenCal\iCal\Domain\Entity\Event;

$calendar = new Calendar();
$calendar
    ->addEvent(new Event())
    ->addEvent(new Event());

or providing a generator, that creates events:

use OpenCal\iCal\Domain\Entity\Calendar;
use OpenCal\iCal\Domain\Entity\Event;

$eventGenerator = function(): Generator {
    yield new Event();
    yield new Event();
};

$calendar = new Calendar($eventGenerator());

Adding time zones

When working with local times, time zone definitions should be added:

use OpenCal\iCal\Domain\Entity\Calendar;
use OpenCal\iCal\Domain\Entity\TimeZone;
use DateTimeZone as PhpDateTimeZone;

$calendar = new Calendar();
$calendar
    ->addTimeZone(TimeZone::createFromPhpDateTimeZone(new PhpDateTimeZone('Europe/Berlin')))
    ->addTimeZone(TimeZone::createFromPhpDateTimeZone(new PhpDateTimeZone('Europe/London')))
;

Adding name and description

You can add a name and description to the Calendar:

use OpenCal\iCal\Domain\Entity\Calendar;

$calendar = new Calendar();
$calendar->setCalendarName('My Calendar');
$calendar->setCalendarDescription('Description my calendar');

This will add the following 2 rows when the calendar's rendering output:

...
X-WR-CALNAME:Test Calendar
X-WR-CALDESC:Description of the test calendar
...