Skip to content

Commit

Permalink
Switch from afterSaveElement event to afterPropagate to prevent l…
Browse files Browse the repository at this point in the history
…oss of matrix blocks in certain cases

ref: craftcms/cms#7455 (comment)

Closes #64, closes #70, closes #71, closes #72, closes #73
  • Loading branch information
jalendport committed Jul 2, 2021
1 parent d7a3127 commit 861741c
Showing 1 changed file with 14 additions and 12 deletions.
26 changes: 14 additions & 12 deletions src/PreparseField.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
use craft\base\Plugin;
use craft\elements\Asset;
use craft\events\ElementEvent;
use craft\events\ModelEvent;
use craft\events\MoveElementEvent;
use craft\helpers\FileHelper;
use craft\services\Elements;
Expand Down Expand Up @@ -62,7 +63,7 @@ public function init()

$this->preparsedElements = [
'onBeforeSave' => [],
'onSave' => [],
'onPropagate' => [],
'onMoveElement' => [],
];

Expand Down Expand Up @@ -103,23 +104,24 @@ function (ElementEvent $event) {
}
);

// After save element event handler
// After propagate element event handler
Event::on(
Elements::class,
Elements::EVENT_AFTER_SAVE_ELEMENT,
function (ElementEvent $event) {
if ($event->element->getIsRevision()) {
Element::class,
Element::EVENT_AFTER_PROPAGATE,
function (ModelEvent $event) {
/** @var Element $element */
$element = $event->sender;

if ($element->getIsRevision()) {
return;
}

/** @var Element $element */
$element = $event->element;
$key = $element->id . '__' . $element->siteId;

if (!isset($this->preparsedElements['onSave'][$key])) {
$this->preparsedElements['onSave'][$key] = true;
if (!isset($this->preparsedElements['onPropagate'][$key])) {
$this->preparsedElements['onPropagate'][$key] = true;

$content = self::$plugin->preparseFieldService->getPreparseFieldsContent($element, 'onSave');
$content = self::$plugin->preparseFieldService->getPreparseFieldsContent($element, 'onPropagate');

if (!empty($content)) {
$this->resetUploads();
Expand All @@ -137,7 +139,7 @@ function (ElementEvent $event) {
}
}

unset($this->preparsedElements['onSave'][$key]);
unset($this->preparsedElements['onPropagate'][$key]);
}
}
);
Expand Down

0 comments on commit 861741c

Please sign in to comment.