renfordt/ICStorm

View on GitHub
README.md

Summary

Maintainability
Test Coverage
<h1 align="center"> ICStorm</h1>

<div align="center">

<strong>A package for creating and importing iCalendar/ICS files with one or multiple events.</strong>

[![Badge](http://img.shields.io/badge/source-renfordt/ICStorm-blue.svg)](https://github.com/renfordt/ICStorm)
[![Packagist Version](https://img.shields.io/packagist/v/renfordt/icstorm?include_prereleases)](https://packagist.org/packages/renfordt/icstorm/)
![Packagist PHP Version](https://img.shields.io/packagist/dependency-v/renfordt/icstorm/php)
![GitHub License](https://img.shields.io/github/license/renfordt/ICStorm)
![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/renfordt/ICStorm/php.yml?logo=github)
[![Code Climate coverage](https://img.shields.io/codeclimate/coverage/renfordt/ICStorm?logo=codeclimate)](https://codeclimate.com/github/renfordt/ICStorm/test_coverage)
[![Code Climate maintainability](https://img.shields.io/codeclimate/maintainability/renfordt/ICStorm?logo=codeclimate)](https://codeclimate.com/github/renfordt/ICStorm/maintainability)
</div>

## Installation

The recommended way to install this package is using [Composer](https://getcomposer.org/). Execute the following
command. This will not only install
the package but also add it to your project's composer.json file as a dependency.

```
composer require renfordt/icstorm
```

## Usage

### Create Events

The PHP code below is used to create a new event.

The variables at the
beginning (`title`, `summary`, `description`, `startDate`, `endDate`, `classification`, `transparency`, and `location`)
represent different details of the event:

- `title`: The title of the event.
- `summary`: A brief overview of the event.
- `description`: Detailed information about the event.
- `startDate` and `endDate`: The start and end dates of the event and are mandatory.
- `classification`: The visibility of the event, indicating whether it's private or public.
- `transparency`: Indicates whether the time of the event is blocked or free.
- `location`: Location of the event.

These details are collected together into an associative array using the `compact` function. This array is then passed
as an argument to the `Event::createEvent` function, which generates an instance of an event with these details.

```php
$title = 'Test Event';
$summary = 'Test Event';
$description = 'This is a test event';
$startDate = '2024-10-15 18:15:00';
$endDate = '2024-10-15 18:45:00';
$classification = EventClassification::private;
$transparency = EventTransparency::opaque;
$location = 'Test Location';

$event = Event::create(
    compact('title',
        'summary',
        'description',
        'startDate',
        'endDate',
        'classification',
        'transparency',
        'location'));
```

### Create an iCalendar

To create an iCalendar/ICS file you can use the following code.

First create a new Calendar instance and add all required Events to it. After that you can generate the ICS string or
the file with the functions.

```php
$calendar = new Calendar();
$calendar->addEvent($event);

$ics = $calendar->generateICS(); // generates a ICS string
$icsFile = $calendar->generateICSFile(); // generates a ICS file
```