putyourlightson/craft-element-status-events

Element status events extension for Craft CMS.

Maintainers

👁 putyourlightson

Package info

github.com/putyourlightson/craft-element-status-events

Documentation

Type:yii2-extension

pkg:composer/putyourlightson/craft-element-status-events

Statistics

Installs: 1 029

Dependents: 0

Suggesters: 0

Stars: 12

Open Issues: 0

2.0.1 2022-04-26 12:40 UTC

Requires

Requires (Dev)

None

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 6e6efd13b665f47dc96d1ded720782c59b6d7752

cmseventselementstatusCraftcraftcms

This package is auto-updated.

Last update: 2026-06-26 22:40:25 UTC


README

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.

Requirements

This extension requires Craft CMS 3.0.0 or later.

Usage

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

Events

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');
 }
);

License

This extension is licensed for free under the MIT License.

Created by PutYourLightsOn in cooperation with Oliver Stark