dyvelop/icalcreator-bundle

Symfony bundle for creating iCal formatted files

Installs: 6 536

Dependents: 0

Suggesters: 0

Security: 0

Stars: 2

Watchers: 2

Forks: 0

Open Issues: 2

Type:symfony-bundle

v1.1.0-beta1 2018-12-22 11:33 UTC

README

Build Status

Dyvelop iCalcreator Bundle

This bundle provides some utilities for using the iCalcreator PHP library (http://kigkonsult.se/iCalcreator/index.php) in Symfony.

Installation

Step 1: Download

Download via Composer

composer require dyvelop/icalcreator-bundle

This project requires the packagist distribution from https://github.com/iCalcreator/iCalcreator in version 2.22.

Step 2: Enable Bundle

Enable the Bundle in the app/AppKernel.php file in your Symfony project:

// File: app/AppKernel.php
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...
            new \Dyvelop\ICalCreatorBundle\DyvelopICalCreatorBundle(),
        );
        
        // ...
        
        return $bundles;
    }
    
    // ...
}

Configuration

Unique ID

You can change the default unique ID for calendars with following configuration.

dyvelop_icalcreator:
    default_unique_id: DyvelopICalCreatorBundle

Timezone

If you want to create calendar events in a timezone with daylight saving time (or summer time), you can set a default timezone globally via config:

dyvelop_icalcreator:
    default_timezone: Europe/Berlin

Usage

Basic usage

Create a new calendar:

$config = array(
    'unique_id' => 'My unique calendar name',
    'format'    => 'ical',            // or 'xcal'
    'filename'  => 'my-calendar.ics'  // or 'my-calendar.xml'
);
$calendar = $this->get('dyvelop_icalcreator.factory')->create($config);

Create a new calendar event:

$event = $calendar->newEvent();
$event->setUid('foo');
$event->setSummary('Bar');
$event->setDtstart(2016, 10, 6, 20);
$event->setDtend(2016, 10, 6, 21);

See http://kigkonsult.se/iCalcreator/docs/using.html for detailed documentation of the iCalcreate PHP library.

Render calendar via controller

After creating a calendar you can use the CalendarResponse to render the file in your Symfony controller.

namespace AppBundle/Controller;

use Dyvelop\ICalCreatorBundle\Response\CalendarResponse;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class DefaultController extends Controller
{
    public function indexAction()
    {
        $calendar = $this->get('dyvelop_icalcreator.factory')->create();
        
        // add events to calendar etc.
        // ...
        
        return new CalendarResponse($calendar);
    }
}

Attach calender file in mails

Using the CalendarAttachment class you can attach your calendar file in a Swiftmailer mail message.

use  Dyvelop\ICalCreatorBundle\Mailer\CalendarAttachment;

// create a new mail message via Swiftmailer
$mailer = $this->get('mailer');
$message = $mailer->createMessage();

// create calendar
$calendar = $this->get('dyvelop_icalcreator.factory')->create();

// add events to calendar etc.
// ...

// add calender attachment
$attachment = new CalendarAttachment($calendar);
$message->attach($attachment);

// add other message configurations like subject or body
// ...

$mailer->send($message);