recurr/README.md
2014-03-16 05:53:28 -04:00

2.5 KiB

Recurr Build Status

Recurr is a PHP library for working with recurrence rules (RRULE) and converting them in to DateTime objects.

Recurr was developed as a precursor for a calendar with recurring events, and is heavily inspired by rrule.js.

Installation

Recurr is hosted on packagist, meaning you can install it with Composer.

Create a composer.json file

{
    "require": {
        "simshaun/recurr": "dev-master"
    }
}

Install composer and run it

wget http://getcomposer.org/composer.phar
php composer.phar install

(Optional) Autoload Recurr

require 'vendor/autoload.php';

Demo

$timezone    = 'America/New_York';
$startDate   = new \DateTime('2013-06-12 20:00:00', new \DateTimeZone($timezone));
$rule        = new \Recurr\Rule('FREQ=MONTHLY;COUNT=5', $startDate, $timezone);
$transformer = new \Recurr\RuleTransformer($rule);

print_r($transformer->getComputedArray());

Converting to Text

Recurr supports converting some recurrence rules in to human readable text. This feature is still in beta and only support yearly, monthly, weekly, and daily frequencies.

$rule = new Rule('FREQ=YEARLY;INTERVAL=2;COUNT=3;', new \DateTime());

$textTransformer = new TextTransformer();
echo $textTransformer->transform($rule);

Warnings

  • Monthly recurring rules: If your start date is on the 29th, 30th, or 31st, Recurr will skip the months that have less than that number of days. This behavior is configurable:
$timezone    = 'America/New_York';
$startDate   = new \DateTime('2013-01-31 20:00:00', new \DateTimeZone($timezone));
$rule        = new \Recurr\Rule('FREQ=MONTHLY;COUNT=5', $startDate, $timezone);
$transformer = new \Recurr\RuleTransformer($rule);

$transformerConfig = new \Recurr\RuleTransformerConfig();
$transformerConfig->enableLastDayOfMonthFix();
$transformer->setConfig($transformerConfig);

print_r($transformer->getComputedArray());

/* Outputs:
 * 2013-01-31
 * 2013-02-28
 * 2013-03-31
 * 2013-04-30
 * 2013-05-31
 */

Contribute

Recurr is still in beta, and is most likely not 100% free of bugs. Feel free to comment or make pull requests. Please include tests with PRs.

License

Recurr is licensed under the MIT License. See the LICENSE file for details.