stephane-monnot/laravel-scheduled-changes

A powerful and flexible package to schedule and execute future changes or events in your Laravel application. Manage tasks like content publication, data updates, unpublishing, and more with an easy-to-use interface and robust API support.

dev-main 2024-12-19 06:08 UTC

This package is auto-updated.

Last update: 2024-12-19 06:08:59 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

A powerful and flexible package to schedule and execute future changes or events in your Laravel application. Manage tasks like content publication, data updates, unpublishing, and more with an easy-to-use interface and robust API support.

Installation

You can install the package via composer:

composer require stephane-monnot/laravel-scheduled-changes

You can publish and run the migrations with:

php artisan vendor:publish --tag="scheduled-changes-migrations"
php artisan migrate

You can publish the config file with:

php artisan vendor:publish --tag="scheduled-changes-config"

This is the contents of the published config file:

return [
    'models' => [
        'schedule_change' => StephaneMonnot\LaravelScheduledChanges\Models\ScheduleChange::class,
        'scheduled_unit' => StephaneMonnot\LaravelScheduledChanges\Models\ScheduledUnit::class,
    ],
    'table_names' => [
        'schedule_changes' => 'schedule_changes',
        'scheduled_units' => 'scheduled_units',
    ],
];

Usage

use StephaneMonnot\LaravelScheduledChanges\Models\ScheduleChange;

// Create a article or something else
$article = Article::create([
    'title' => 'New article',
    'content' => 'This is a new article',
    'published' => false,
]);

// Create a new scheduled change
$scheduleChange = ScheduleChange::create([
    'type' => 'change_model_value',
    'payload' => [
        'attribute' => 'published',
        'value' => true,
    ],
    'scheduled_at' => now()->addDays(2),
]);

// Create a new scheduled unit
$scheduledUnit = $scheduleChange->units()->create();
$scheduledUnit->schedulable()->associate($article);

// Add to your scheduler the following command to execute the scheduled changes:
Schedule::command('scheduled-changes:process --dispatch')->everyMinute();

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.