1. Go to this page and download the library: Download vincenzoraco/recurrences library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
vincenzoraco / recurrences example snippets
use VincenzoRaco\Recurrences\Concerns\HasRecurrences;
use VincenzoRaco\Recurrences\Contracts\Recurrable;
use Illuminate\Database\Eloquent\Model;
class Event extends Model implements Recurrable
{
use HasRecurrences;
}
use Illuminate\Support\Carbon;
use VincenzoRaco\Recurrences\Enums\RecurringFrequency;
use VincenzoRaco\Recurrences\DataObjects\MultipleOccurrencesConditionDataObject;
use VincenzoRaco\Recurrences\DataObjects\EndingConditionUntilDataObject;
$event = Event::find(1);
$condition = new MultipleOccurrencesConditionDataObject(
start: Carbon::parse('2024-01-01'),
frequency: RecurringFrequency::WEEKLY,
interval: 1,
endingCondition: new EndingConditionUntilDataObject(
until: Carbon::parse('2024-03-31'),
),
byWeekDay: null,
);
app(\VincenzoRaco\Recurrences\RecurrencesService::class)
->createMultipleOccurrencesCondition($event, $condition);
use Illuminate\Support\Carbon;
use VincenzoRaco\Recurrences\Enums\RecurringFrequency;
use VincenzoRaco\Recurrences\Enums\RecurringWeekDay;
use VincenzoRaco\Recurrences\DataObjects\MultipleOccurrencesConditionDataObject;
use VincenzoRaco\Recurrences\DataObjects\NoEndingConditionDataObject;
$condition = new MultipleOccurrencesConditionDataObject(
start: Carbon::parse('2024-01-01'),
frequency: RecurringFrequency::WEEKLY,
interval: 1,
endingCondition: new NoEndingConditionDataObject,
byWeekDay: [RecurringWeekDay::MONDAY, RecurringWeekDay::WEDNESDAY, RecurringWeekDay::FRIDAY],
);
app(\VincenzoRaco\Recurrences\RecurrencesService::class)
->createMultipleOccurrencesCondition($event, $condition);
use Illuminate\Support\Carbon;
use VincenzoRaco\Recurrences\DataObjects\SingleOccurrenceConditionDataObject;
$event = Event::find(1);
$condition = new SingleOccurrenceConditionDataObject(
date: Carbon::parse('2024-02-14'),
);
app(\VincenzoRaco\Recurrences\RecurrencesService::class)
->createOneTimeOccurrenceCondition($event, $condition);
use Illuminate\Support\Carbon;
use VincenzoRaco\Recurrences\DataObjects\ExcludeOneTimeOccurrenceDataObject;
use VincenzoRaco\Recurrences\DataObjects\ExcludeOccurrencesRangeDataObject;
// Exclude a single date
$excludeSingle = new ExcludeOneTimeOccurrenceDataObject(
date: Carbon::parse('2024-02-14'),
);
app(\VincenzoRaco\Recurrences\RecurrencesService::class)
->createExcludeOneTimeOccurrenceCondition($event, $excludeSingle);
// Exclude a range of dates
$excludeRange = new ExcludeOccurrencesRangeDataObject(
startDate: Carbon::parse('2024-12-24'),
endDate: Carbon::parse('2024-12-26'),
frequency: RecurringFrequency::DAILY,
);
app(\VincenzoRaco\Recurrences\RecurrencesService::class)
->createExcludeOccurrencesRangeCondition($event, $excludeRange);
use Illuminate\Support\Carbon;
use RRule\RSet;
use VincenzoRaco\Recurrences\DataObjects\GetRSetOccurrencesBetweenDataObject;
$event = Event::find(1);
// Build the RSet from all recurrence conditions
$rset = app(\VincenzoRaco\Recurrences\RecurrencesService::class)
->getRSet($event->recurrenceConditions);
// Get occurrences within a date range
$dataObject = new GetRSetOccurrencesBetweenDataObject(
startDate: Carbon::parse('2024-01-01'),
endDate: Carbon::parse('2024-01-31'),
);
$occurrences = app(\VincenzoRaco\Recurrences\RecurrencesService::class)
->getRSetOccurrencesBetween($rset, $dataObject);
foreach ($occurrences->getOccurrences() as $occurrence) {
echo $occurrence->toDateString();
}
use Illuminate\Support\Carbon;
use VincenzoRaco\Recurrences\DataObjects\GetRSetOccurrencesBetweenDataObject;
$event = Event::find(1);
$dataObject = new GetRSetOccurrencesBetweenDataObject(
startDate: Carbon::parse('2024-01-01'),
endDate: Carbon::parse('2024-01-31'),
);
$occurrences = app(\VincenzoRaco\Recurrences\RecurrencesService::class)
->getOccurrencesBetween($event, $dataObject);