PHPackages                             jmbtechnologylimited/rruleunravel - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. jmbtechnologylimited/rruleunravel

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

jmbtechnologylimited/rruleunravel
=================================

Unravels a ICAL RRULE. STILL IN DEVELOPMENT.

v0.4.0(10y ago)23.8k1[39 issues](https://github.com/JMB-Technology-Limited/RRuleUnravel/issues)BSDPHPPHP &gt;=5.3.0

Since Dec 9Pushed 8y ago2 watchersCompare

[ Source](https://github.com/JMB-Technology-Limited/RRuleUnravel)[ Packagist](https://packagist.org/packages/jmbtechnologylimited/rruleunravel)[ Docs](https://github.com/JMB-Technology-Limited/RRuleUnravel)[ RSS](/packages/jmbtechnologylimited-rruleunravel/feed)WikiDiscussions master Synced yesterday

READMEChangelog (5)DependenciesVersions (6)Used By (0)

RRuleUnravel PHP Composer Library
=================================

[](#rruleunravel-php-composer-library)

Takes an iCal/ics RRULE (and associated data) and returns you all the occurrences of that Rule.

Version &amp; State
-------------------

[](#version--state)

It is marked pre version 1 as it does not deal will all parts of the iCal/ics RRULE spec yet, only some parts. It will not be marked v1.0 until it deals will all the commonly used parts.

Use
---

[](#use)

### Set up Data

[](#set-up-data)

The ICalData object should be set up with all needed info. This includes the timezone, start and end and RRULE.

```
$icalData = new ICalData(
    new \DateTime("2014-11-19 08:00:00", new \DateTimeZone("Europe/London")),
    new \DateTime("2014-11-19 08:00:00", new \DateTimeZone("Europe/London")),
    "FREQ=MONTHLY;BYMONTHDAY=19",
	new \DateTimeZone("Europe/London"));

```

You can also pass EXDATE lines here.

```
$icaldata->addExDateByString("20150226T090000","TZID=Europe/London");

```

### Set up worker class

[](#set-up-worker-class)

```
$unraveler = new Unraveler($icalData);

```

### Set up options (Optional)

[](#set-up-options-optional)

```
$unraveler->setIncludeOriginalEvent(false);
$unraveler->setResultsCountLimit(1);

```

The ResultFilterAfterDateTime and ResultFilterBeforeDateTime allow you to control which events you get back.

```
$unraveler->addResultFilter(new ResultFilterAfterDateTime(new \DateTime('2016-01-01 00:00:00', new \DateTimeZone("Europe/London"))));

```

### Process and get results

[](#process-and-get-results)

```
$unraveler->process();
$results = $unraveler->getResults();

```

The results are an array of UnravelerResult classes, which has methods to get the start and the end.

- getStart()
- getEnd()

More
----

[](#more)

See  for more.

###  Health Score

23

—

LowBetter than 26% of packages

Maintenance0

Infrequent updates — may be unmaintained

Popularity20

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~97 days

Total

5

Last Release

3836d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/43e89eaec930cc5d0b361e600224be601f103e76b5d1463e21d31c78e95304d2?d=identicon)[jarofgreen](/maintainers/jarofgreen)

![](https://www.gravatar.com/avatar/c67fb5728b12a437aad45dc2b739ab6b7b2e43607552684ca1c93cd9d2f0adf8?d=identicon)[jmbtech](/maintainers/jmbtech)

---

Top Contributors

[![jarofgreen](https://avatars.githubusercontent.com/u/85656?v=4)](https://github.com/jarofgreen "jarofgreen (42 commits)")

---

Tags

rruleical

### Embed Badge

![Health badge](/badges/jmbtechnologylimited-rruleunravel/health.svg)

```
[![Health](https://phpackages.com/badges/jmbtechnologylimited-rruleunravel/health.svg)](https://phpackages.com/packages/jmbtechnologylimited-rruleunravel)
```

###  Alternatives

[rlanvin/php-rrule

Lightweight and fast recurrence rules for PHP (RFC 5545)

70011.9M60](/packages/rlanvin-php-rrule)[simshaun/recurr

PHP library for working with recurrence rules

1.6k17.2M53](/packages/simshaun-recurr)[eluceo/ical

The eluceo/iCal package offers an abstraction layer for creating iCalendars. You can easily create iCal files by using PHP objects instead of typing your \*.ics file by hand. The output will follow RFC 5545 as best as possible.

1.2k18.7M61](/packages/eluceo-ical)[spatie/icalendar-generator

Build calendars in the iCalendar format

6878.7M19](/packages/spatie-icalendar-generator)[kigkonsult/icalcreator

iCalcreator is the PHP implementation of rfc2445/rfc5545 and rfc updates, management of calendar information

2482.8M20](/packages/kigkonsult-icalcreator)[jsvrcek/ics

abstraction layer for creating multi-byte safe RFC 5545 compliant .ics files

2232.0M12](/packages/jsvrcek-ics)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
