koertho / contao-advanced-repeating-events-bundle
Add advanced repeat event options to contao calendar.
Package info
github.com/koertho/contao-advanced-repeating-events
Type:contao-bundle
pkg:composer/koertho/contao-advanced-repeating-events-bundle
Requires
- php: ^8.4
- contao/calendar-bundle: ^5.6
- contao/core-bundle: ^5.6
- doctrine/dbal: ^3.10 || ^4.0
- simshaun/recurr: ^6.0
- symfony/console: ^6.4 || ^7.0
- symfony/http-kernel: ^6.4 || ^7.0
Requires (Dev)
- contao/core-bundle: 5.6.*
- symfony/http-kernel: ^6.4
This package is auto-updated.
Last update: 2026-03-13 21:40:31 UTC
README
This bundles replaces the contao build in recurrence handling with a more powerful implementation. Technically, it uses rrule-based recurrence definitions.
Features
- allow advanced recurring rule like nth weekday of the month or weekday selection
- Migration command for existing recurring events
- Support for import event from
cgoit/contao-calendar-ical-bundle
Requirements
- PHP
^8.4 - Contao
^5.6
Installation
Install via Composer:
composer require koertho/contao-advanced-repeating-events-bundle
Then update the database schema in the Contao install tool or via console.
Usage
In the backend, you'll find a new field for activating recurrences replacing the old field. After activating it, you'll see the recurrence widget.
In frontend, you can use the normal event list module, but the bundles reader module for output.
Migrating Existing Recurring Events
If you already use Contao's legacy recurring event fields, you can migrate them to RRULE format:
php vendor/bin/contao-console are:migrate-recurrences
Options:
--dry-runshows what would be written without changing data--overwrite-existingreplaces already stored RRULE values--limit=50restricts how many records are processed
Example:
php vendor/bin/contao-console are:migrate-recurrences --dry-run
iCal Import
If cgoit/contao-calendar-ical-bundle is installed, imported RRULE values are copied into the advanced recurrence fields automatically.
Advances usage
Recurrence calculator
You can use the RecurrenceCalculator to calculate the occurrences of an event.
use Koertho\AdvancedRepeatingEventsBundle\Recurrence\RecurrenceCalculatorFactory; function (RecurrenceCalculatorFactory $factory) { $calculator = $factory->createForEvent($event); $occurrences = $calculator->listOccurrencesInRange(rangeStart: new \DateTime('2024-01-01'), rangeEnd: new \DateTime('2024-12-31'), limit: 12, excludeOriginal: false); // Returns an array of start and end dates like [['start' => 1711922400, 'end' => 1711926000], ...] $next = $calculator->resolveCurrentOrUpcomingOccurrence(); // Returns the next occurrence as array with start and end timestamps like ['start' => 1711922400, 'end' => 1711926000] $description = $calculator->toText(); }
Notes
- The recurrence logic is based on
simshaun/recurr. - Parts of this extension are created with AI
