Files
afup/sources/AppBundle/Calendar/IcsPLanningGenerator.php

64 lines
1.6 KiB
PHP

<?php
namespace AppBundle\Calendar;
use AppBundle\Event\Model\Event;
use AppBundle\Event\Model\Planning;
use AppBundle\Event\Model\Repository\TalkRepository;
use AppBundle\Event\Model\Room;
use AppBundle\Event\Model\Talk;
use Sabre\VObject\Component\VCalendar;
class IcsPLanningGenerator
{
/**
* @var TalkRepository
*/
private $talkRepository;
public function __construct(TalkRepository $talkRepository)
{
$this->talkRepository = $talkRepository;
}
/**
* @param Event $event
* @return string
*/
public function generateForEvent(Event $event)
{
$talks = $this->talkRepository->getByEventWithSpeakers($event);
$events = [];
$vcalendar = new VCalendar($events);
$vcalendar->add('X-WR-CALNAME', $event->getTitle());
foreach ($talks as $talkWithData) {
/**
* @var $talk Talk
*/
$talk = $talkWithData['talk'];
/**
* @var $planning Planning
*/
$planning = $talkWithData['planning'];
/**
* @var $room Room
*/
$room = $talkWithData['room'];
$vcalendar->add('VEVENT', [
'SUMMARY' => $talk->getTitle(),
'DTSTART' => $planning->getStart(),
'DTEND' => $planning->getEnd(),
'DESCRIPTION' => strip_tags(html_entity_decode($talk->getAbstract())),
'LOCATION' => $room->getName(),
]);
}
return $vcalendar->serialize();
}
}