Skip to content

Commit

Permalink
Merge branch 'feature/nem-create-revisions-after-duplicate-event' int…
Browse files Browse the repository at this point in the history
…o 5.0
  • Loading branch information
brandonkelly committed Feb 6, 2024
2 parents 9de4fdc + bd98e1b commit 40a347f
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions src/elements/NestedElementManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,12 @@ class NestedElementManager extends Component
*/
public const EVENT_AFTER_DUPLICATE_NESTED_ELEMENTS = 'afterDuplicateNestedElements';

/**
* @event DuplicateNestedElementsEvent The event that is triggered after revisions are created for nested elements.
* @see createRevisions()
*/
public const EVENT_AFTER_CREATE_REVISIONS = 'afterCreateRevisions';

/**
* Constructor
*
Expand Down Expand Up @@ -1003,16 +1009,27 @@ private function createRevisions(ElementInterface $canonical, ElementInterface $

$revisionsService = Craft::$app->getRevisions();
$ownershipData = [];
$map = [];

foreach ($elements as $element) {
$elementRevisionId = $revisionsService->createRevision($element, null, null, [
'primaryOwnerId' => $revision->id,
'saveOwnership' => false,
]);
$ownershipData[] = [$elementRevisionId, $revision->id, $element->getSortOrder()];
$map[$element->id] = $elementRevisionId;
}

Db::batchInsert(Table::ELEMENTS_OWNERS, ['elementId', 'ownerId', 'sortOrder'], $ownershipData);

// Fire a 'afterDuplicateNestedElements' event
if (!empty($map) && $this->hasEventHandlers(self::EVENT_AFTER_CREATE_REVISIONS)) {
$this->trigger(self::EVENT_AFTER_CREATE_REVISIONS, new DuplicateNestedElementsEvent([
'source' => $canonical,
'target' => $revision,
'newElementIds' => $map,
]));
}
}

/**
Expand Down

0 comments on commit 40a347f

Please sign in to comment.