Skip to content

acrnogor/ical-exporter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 

Repository files navigation

Simple ICal Exporter library

requires Twig templating engine to render ICS files.

Installation:

composer require acrnogor/ical-exporter

Usage:

// first, we need Twig environement
$loader = new Twig_Loader_Filesystem();
$twig   = new Twig_Environment($loader, [
    'cache' => __DIR__ . '/var/cache',
]);

// now create new ICalExporter object and download event items as ICS file
$filename = 'this-is-my-calendar.ics';
$icalExporter = new ICalExporter($twig);
$ice->downloadAsICal($items, $filename);

Or, if you just want ICS body as string/text:

// you an either repeat Twig part or just use Dependency Injection (i.e. in Symfony) to inject twig to the class, then fetch it as a service
...

// now create new ICalExporter object and download event items as ICS file
$icalExporter = new ICalExporter($twig);
$icsText = $ice->getICalDataAsString($items);
echo $icsText;

Symfony 3.0+ usage

Add ICalExporter to your Symfony project via composer install. Then, define a Symfony service in your services.yml:

ical_exporter:
    class: Acrnogor\ICalExporter\ICalExporter
    arguments: ["@twig"]

and then register template path in twig configuration in config.yml:

twig:
    paths:
        '%kernel.root_dir%/../vendor/acrnogor/ical-exporter/src/View/': ~

then you can use this service in your controller like zis:

$icalExporter = $this->get('ical_exporter');
$icalExporter->downloadAsICal($events, 'give-some-filename.ics');

Todo:

  • maybe implement a non twig version? Meh...

On packagist:

https://packagist.org/packages/acrnogor/ical-exporter