Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 31 additions & 13 deletions src/CoreBundle/Entity/Listener/ResourceListener.php
Original file line number Diff line number Diff line change
Expand Up @@ -84,26 +84,47 @@ public function prePersist(AbstractResource $resource, PrePersistEventArgs $even
}

// 2. Set creator.
// Check if creator was set with $resource->setCreator()
// Priority order:
// 1) Resource node creator (if explicitly provided)
// 2) Resource creator (set via $resource->setCreator())
// 3) Current authenticated user (Security token)
// Then normalize to a managed reference to avoid duplicate INSERT on user.username.
$creator = $resource->getResourceNodeCreator();
if (!$creator instanceof User) {
$creator = null;
}

if (null === $creator) {
$explicitCreator = $resource->getCreator();
if ($explicitCreator instanceof User) {
$creator = $explicitCreator;
}
}

$currentUser = null;
if (null === $creator) {
// Get the creator from the current request.
/** @var User|null $currentUser */
$currentUser = $this->security->getUser();
if (null !== $currentUser) {
if ($currentUser instanceof User) {
$creator = $currentUser;
}
}

// Check if user has a resource node.
if ($resource->hasResourceNode() && null !== $resource->getCreator()) {
$creator = $resource->getCreator();
if (!$creator instanceof User) {
throw new UserNotFoundException('User creator not found, use $resource->setCreator();');
}

// Ensure creator is managed by this EntityManager.
if (!$em->contains($creator)) {
$creatorId = $creator->getId();
if (null === $creatorId) {
throw new UserNotFoundException('Invalid creator user entity (missing ID).');
}

$creator = $em->getReference(User::class, (int) $creatorId);
}

if (null === $creator) {
throw new UserNotFoundException('User creator not found, use $resource->setCreator();');
// Ensure the resource itself has creator set (not only the ResourceNode).
if (null === $resource->getCreator()) {
$resource->setCreator($creator);
}

// 3. Set ResourceType.
Expand Down Expand Up @@ -341,9 +362,6 @@ public function updateResourceName(AbstractResource $resource): void
if (empty($extension)) {
// $slug = $this->slugify->slugify($resourceName);
}
/*$originalExtension = pathinfo($resourceName, PATHINFO_EXTENSION);
$originalBasename = \basename($resourceName, $originalExtension);
$slug = sprintf('%s.%s', $this->slugify->slugify($originalBasename), $originalExtension);*/
$resource->getResourceNode()->setTitle($resourceName);
}

Expand Down
Loading