RetryableTransaction::
retryable($this->connection,
function D
) use ($obsoleted,
$insertQuery,
$foreignKeys,
$updatedFks,
$salesChannelId): void
{ $this->
obsoleteIds($obsoleted,
$salesChannelId);
$insertQuery->
execute();
$deletedIds =
array_diff($foreignKeys,
$updatedFks);
$notDeletedIds =
array_unique(array_intersect($foreignKeys,
$updatedFks));
$this->
markAsDeleted(true,
$deletedIds,
$salesChannelId);
$this->
markAsDeleted(false,
$notDeletedIds,
$salesChannelId);
});
$this->eventDispatcher->
dispatch(new SeoUrlUpdateEvent($updates));
} /**
* @param array{isModified: bool, seoPathInfo: string, salesChannelId: string} $existing
* @param array{isModified: bool, seoPathInfo: string, salesChannelId: string} $seoUrl
*/
private function skipUpdate(array
$existing, array
$seoUrl): bool
{ if ($existing['isModified'
] && !
($seoUrl['isModified'
] ?? false
) &&
trim($seoUrl['seoPathInfo'
]) !== ''
) { return true;
}