The Element Status Events extension provides events that are triggered whenever an element’s status changes. It is intended to be used a helper component for other Craft modules and plugins.
To get an understanding of how the module works, read the Challenge #6 – The Chicken or the Egg solution.
This extension requires Craft CMS 3.0.0 or later.
Install it manually using composer or add it as a dependency to your plugin.
composer require putyourlightson/craft-element-status-events
If you work with scheduled Entries (future published or expired), make sure to set up cron that calls:
php craft element-status-events/scheduled
Whenever an element’s status is changed, ElementStatusEvents::EVENT_STATUS_CHANGED
is fired. The StatusChangeEvent
object provides information about the change.
use putyourlightson\elementstatusevents\ElementStatusEvents;
use putyourlightson\elementstatusevents\events\StatusChangeEvent;
// ...
Event::on(
ElementStatusEvents::class,
ElementStatusEvents::EVENT_STATUS_CHANGED,
function(StatusChangeEvent $event) {
$oldStatus = $event->statusBeforeSave;
$newStatus = $event->element->getStatus();
$isLive = $event->changedToPublished();
$isDeath = $event->changedToUnpublished();
$isScheduled = $event->changedTo('pending');
}
);
This extension is licensed for free under the MIT License.
Created by PutYourLightsOn in cooperation with Oliver Stark