Symfony Bundle to manage .ics iCal file (creating and eventually reading)
use of the library: https://github.com/jasvrcek/ICS
Add bundle to your project:
composer require welp/ical-bundle
Add Welp\IcalBundle\WelpIcalBundle
to your AppKernel.php
:
$bundles = [
// ...
new Welp\IcalBundle\WelpIcalBundle(),
];
In your config.yml
:
welp_ical:
default_timezone: "Europe/Paris"
default_prodid: "-//WelpIcalBundle//Calendar App//FR"
<?php
...
/**
* Generate calendar event ICAL for welpAction
* @Config\Route("/ical", name="app_ical")
*/
public function icalAction()
{
$icalFactory = $this->get('welp_ical.factory');
//Create a calendar
$calendar = $icalFactory->createCalendar();
//Create an event
$eventOne = $icalFactory->createCalendarEvent();
$eventOne->setStart(new \DateTime())
->setSummary('Family reunion')
->setUid('event-uid');
//add an Attendee
$attendee = $icalFactory->createAttendee();
$attendee->setValue('[email protected]')
->setName('Moe Smith');
$eventOne->addAttendee($attendee);
//set the Organizer
$organizer = $icalFactory->createOrganizer();
$organizer->setValue('[email protected]')
->setName('Titouan BENOIT')
->setLanguage('fr');
$eventOne->setOrganizer($organizer);
//new event
$eventTwo = $icalFactory->createCalendarEvent();
$eventTwo->setStart(new \DateTime())
->setSummary('Dentist Appointment')
->setUid('event-uid');
$calendar
->addEvent($eventOne)
->addEvent($eventTwo);
$headers = array();
$calendarResponse = new Welp\IcalBundle\Response\CalendarResponse($calendar, 200, $headers);
return $calendarResponse;
}