Skip to content
Open
Show file tree
Hide file tree
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
Original file line number Diff line number Diff line change
Expand Up @@ -11,27 +11,21 @@

namespace Claroline\BigBlueButtonBundle\Component\Resource;

use Claroline\AppBundle\API\Serializer\SerializerInterface;
use Claroline\AppBundle\API\SerializerProvider;
use Claroline\AppBundle\API\Utils\FileBag;
use Claroline\BigBlueButtonBundle\Entity\BBB;
use Claroline\BigBlueButtonBundle\Manager\BBBManager;
use Claroline\BigBlueButtonBundle\Manager\EvaluationManager;
use Claroline\CoreBundle\Component\Resource\ResourceComponent;
use Claroline\CoreBundle\Entity\Resource\AbstractResource;
use Claroline\CoreBundle\Entity\User;
use Claroline\CoreBundle\Library\Configuration\PlatformConfigurationHandler;
use Claroline\EvaluationBundle\Component\Resource\EvaluatedResourceInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;

final class BBBResource extends ResourceComponent implements EvaluatedResourceInterface
{
public function __construct(
private readonly TokenStorageInterface $tokenStorage,
private readonly PlatformConfigurationHandler $config,
private readonly SerializerProvider $serializer,
private readonly BBBManager $bbbManager,
private readonly EvaluationManager $evaluationManager
private readonly BBBManager $bbbManager
) {
}

Expand Down Expand Up @@ -71,15 +65,7 @@ public function open(AbstractResource $resource, bool $embedded = false): ?array
}
}

$userEvaluation = null;
if ($this->tokenStorage->getToken()?->getUser() instanceof User) {
$attempt = $this->evaluationManager->update($resource->getResourceNode(), $this->tokenStorage->getToken()?->getUser());
$userEvaluation = $attempt->getResourceUserEvaluation();
}

return [
'resource' => $this->serializer->serialize($resource),
'userEvaluation' => $this->serializer->serialize($userEvaluation, [SerializerInterface::SERIALIZE_MINIMAL]),
'servers' => $this->bbbManager->getServers(),
'allowRecords' => $allowRecords,
'canStart' => $canStart,
Expand All @@ -88,14 +74,6 @@ public function open(AbstractResource $resource, bool $embedded = false): ?array
];
}

/** @param BBB $resource */
public function update(AbstractResource $resource, array $data, array $previousData): ?array
{
return [
'resource' => $this->serializer->serialize($resource),
];
}

/** @param BBB $resource */
public function delete(AbstractResource $resource, FileBag $fileBag, bool $softDelete = true): bool
{
Expand Down
10 changes: 10 additions & 0 deletions src/integration/big-blue-button/Controller/BBBController.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
use Claroline\BigBlueButtonBundle\Entity\BBB;
use Claroline\BigBlueButtonBundle\Entity\Recording;
use Claroline\BigBlueButtonBundle\Manager\BBBManager;
use Claroline\BigBlueButtonBundle\Manager\EvaluationManager;
use Claroline\CoreBundle\Entity\User;
use Claroline\CoreBundle\Library\RoutingHelper;
use Claroline\CoreBundle\Security\PermissionCheckerTrait;
use Symfony\Bridge\Doctrine\Attribute\MapEntity;
Expand All @@ -29,6 +31,7 @@
use Symfony\Component\HttpKernel\Attribute\MapQueryString;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;

#[Route(path: '/bbb/{id}')]
Expand All @@ -39,9 +42,11 @@ class BBBController

public function __construct(
AuthorizationCheckerInterface $authorization,
private readonly TokenStorageInterface $tokenStorage,
private readonly ObjectManager $om,
private readonly Crud $crud,
private readonly BBBManager $bbbManager,
private readonly EvaluationManager $evaluationManager,
private readonly UrlGeneratorInterface $router,
private readonly RoutingHelper $routingHelper
) {
Expand Down Expand Up @@ -74,6 +79,11 @@ public function joinMeetingAction(#[MapEntity(mapping: ['id' => 'uuid'])] BBB $b
if (empty($errors)) {
$url = $this->bbbManager->getMeetingUrl($bbb, $moderator, $username);
if ($url) {
$user = $this->tokenStorage->getToken()?->getUser();
if ($user instanceof User) {
$this->evaluationManager->update($bbb->getResourceNode(), $user);
}

return new RedirectResponse($url);
}
}
Expand Down
6 changes: 6 additions & 0 deletions src/integration/big-blue-button/Manager/EvaluationManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use Claroline\CoreBundle\Entity\Resource\ResourceNode;
use Claroline\CoreBundle\Entity\User;
use Claroline\EvaluationBundle\Entity\UserEvaluation\ResourceAttempt;
use Claroline\EvaluationBundle\Entity\UserEvaluation\ResourceEvaluation;
use Claroline\EvaluationBundle\Library\EvaluationStatus;
use Claroline\EvaluationBundle\Manager\ResourceEvaluationManager;
use Claroline\EvaluationBundle\Repository\UserEvaluation\ResourceAttemptRepository;
Expand All @@ -21,6 +22,11 @@ public function __construct(
$this->attemptRepository = $om->getRepository(ResourceAttempt::class);
}

public function getResourceUserEvaluation(ResourceNode $node, User $user): ?ResourceEvaluation
{
return $this->resourceEvalManager->getUserEvaluation($node, $user);
}

/**
* Marks the BBB evaluation as participated.
* Called when a user opens a BBB.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ services:
Claroline\BigBlueButtonBundle\Component\Resource\BBBResource:
tags: ['claroline.component.resource', 'kernel.event_subscriber']
arguments:
- '@security.token_storage'
- '@Claroline\CoreBundle\Library\Configuration\PlatformConfigurationHandler'
- '@Claroline\AppBundle\API\SerializerProvider'
- '@Claroline\BigBlueButtonBundle\Manager\BBBManager'
- '@Claroline\BigBlueButtonBundle\Manager\EvaluationManager'
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,10 @@ services:
Claroline\BigBlueButtonBundle\Controller\BBBController:
arguments:
- '@security.authorization_checker'
- '@security.token_storage'
- '@Claroline\AppBundle\Persistence\ObjectManager'
- '@Claroline\AppBundle\API\Crud'
- '@Claroline\BigBlueButtonBundle\Manager\BBBManager'
- '@Claroline\BigBlueButtonBundle\Manager\EvaluationManager'
- '@router'
- '@Claroline\CoreBundle\Library\RoutingHelper'
26 changes: 1 addition & 25 deletions src/integration/peertube/Component/Resource/VideoResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,19 @@

namespace Claroline\PeerTubeBundle\Component\Resource;

use Claroline\AppBundle\API\Serializer\SerializerInterface;
use Claroline\AppBundle\API\SerializerProvider;
use Claroline\CoreBundle\Component\Resource\ResourceComponent;
use Claroline\CoreBundle\Component\Resource\UrlAdapterInterface;
use Claroline\CoreBundle\Entity\Resource\AbstractResource;
use Claroline\CoreBundle\Entity\User;
use Claroline\CoreBundle\Event\Resource\EmbedResourceEvent;
use Claroline\EvaluationBundle\Component\Resource\EvaluatedResourceInterface;
use Claroline\PeerTubeBundle\Entity\Video;
use Claroline\PeerTubeBundle\Manager\EvaluationManager;
use Claroline\PeerTubeBundle\Manager\PeerTubeManager;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Twig\Environment;

final class VideoResource extends ResourceComponent implements UrlAdapterInterface, EvaluatedResourceInterface
{
public function __construct(
private readonly TokenStorageInterface $tokenStorage,
private readonly Environment $templating,
private readonly SerializerProvider $serializer,
private readonly EvaluationManager $evaluationManager,
private readonly PeerTubeManager $peerTubeManager
) {
}
Expand All @@ -49,20 +41,6 @@ public static function getSubscribedEvents(): array
]);
}

/** @param Video $resource */
public function open(AbstractResource $resource, bool $embedded = false): ?array
{
$user = $this->tokenStorage->getToken()?->getUser();

return [
'resource' => $this->serializer->serialize($resource),
'userEvaluation' => $user instanceof User ? $this->serializer->serialize(
$this->evaluationManager->getResourceUserEvaluation($resource->getResourceNode(), $user),
[SerializerInterface::SERIALIZE_MINIMAL]
) : null,
];
}

/** @param Video $resource */
public function create(AbstractResource $resource, array $data): void
{
Expand All @@ -74,9 +52,7 @@ public function update(AbstractResource $resource, array $data, array $previousD
{
$this->peerTubeManager->handleThumbnailForVideo($resource);

return [
'resource' => $this->serializer->serialize($resource),
];
return [];
}

public function onEmbed(EmbedResourceEvent $event): void
Expand Down
6 changes: 3 additions & 3 deletions src/integration/peertube/Manager/EvaluationManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
namespace Claroline\PeerTubeBundle\Manager;

use Claroline\AppBundle\Persistence\ObjectManager;
use Claroline\EvaluationBundle\Entity\UserEvaluation\ResourceAttempt;
use Claroline\CoreBundle\Entity\Resource\ResourceNode;
use Claroline\EvaluationBundle\Entity\UserEvaluation\ResourceEvaluation;
use Claroline\CoreBundle\Entity\User;
use Claroline\EvaluationBundle\Entity\UserEvaluation\ResourceAttempt;
use Claroline\EvaluationBundle\Entity\UserEvaluation\ResourceEvaluation;
use Claroline\EvaluationBundle\Library\EvaluationStatus;
use Claroline\EvaluationBundle\Manager\ResourceEvaluationManager;
use Claroline\EvaluationBundle\Repository\UserEvaluation\ResourceAttemptRepository;
Expand All @@ -27,7 +27,7 @@ public function __construct(
/**
* Fetch or create resource user evaluation.
*/
public function getResourceUserEvaluation(ResourceNode $node, User $user): ResourceEvaluation
public function getResourceUserEvaluation(ResourceNode $node, User $user): ?ResourceEvaluation
{
return $this->resourceEvalManager->getUserEvaluation($node, $user);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,5 @@ services:
Claroline\PeerTubeBundle\Component\Resource\VideoResource:
tags: ['claroline.component.resource', 'kernel.event_subscriber']
arguments:
- '@security.token_storage'
- '@twig'
- '@Claroline\AppBundle\API\SerializerProvider'
- '@Claroline\PeerTubeBundle\Manager\EvaluationManager'
- '@Claroline\PeerTubeBundle\Manager\PeerTubeManager'
26 changes: 1 addition & 25 deletions src/integration/youtube/Component/Resource/VideoResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,16 @@

namespace Claroline\YouTubeBundle\Component\Resource;

use Claroline\AppBundle\API\Serializer\SerializerInterface;
use Claroline\AppBundle\API\SerializerProvider;
use Claroline\CoreBundle\Component\Resource\ResourceComponent;
use Claroline\CoreBundle\Component\Resource\UrlAdapterInterface;
use Claroline\CoreBundle\Entity\Resource\AbstractResource;
use Claroline\CoreBundle\Entity\User;
use Claroline\EvaluationBundle\Component\Resource\EvaluatedResourceInterface;
use Claroline\YouTubeBundle\Entity\Video;
use Claroline\YouTubeBundle\Manager\EvaluationManager;
use Claroline\YouTubeBundle\Manager\YouTubeManager;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;

final class VideoResource extends ResourceComponent implements EvaluatedResourceInterface, UrlAdapterInterface
{
public function __construct(
private readonly TokenStorageInterface $tokenStorage,
private readonly SerializerProvider $serializer,
private readonly EvaluationManager $evaluationManager,
private readonly YouTubeManager $youtubeManager
) {
}
Expand Down Expand Up @@ -60,20 +52,6 @@ public function fromUrl(string $url): ?array
];
}

/** @param Video $resource */
public function open(AbstractResource $resource, bool $embedded = false): ?array
{
$user = $this->tokenStorage->getToken()?->getUser();

return [
'resource' => $this->serializer->serialize($resource),
'userEvaluation' => $user instanceof User ? $this->serializer->serialize(
$this->evaluationManager->getResourceUserEvaluation($resource->getResourceNode(), $user),
[SerializerInterface::SERIALIZE_MINIMAL]
) : null,
];
}

/** @param Video $resource */
public function create(AbstractResource $resource, array $data): void
{
Expand All @@ -85,9 +63,7 @@ public function update(AbstractResource $resource, array $data, array $previousD
{
$this->youtubeManager->handleThumbnailForVideo($resource);

return [
'resource' => $this->serializer->serialize($resource),
];
return [];
}

public function requireAdapter(): bool
Expand Down
6 changes: 3 additions & 3 deletions src/integration/youtube/Manager/EvaluationManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
namespace Claroline\YouTubeBundle\Manager;

use Claroline\AppBundle\Persistence\ObjectManager;
use Claroline\EvaluationBundle\Entity\UserEvaluation\ResourceAttempt;
use Claroline\CoreBundle\Entity\Resource\ResourceNode;
use Claroline\EvaluationBundle\Entity\UserEvaluation\ResourceEvaluation;
use Claroline\CoreBundle\Entity\User;
use Claroline\EvaluationBundle\Entity\UserEvaluation\ResourceAttempt;
use Claroline\EvaluationBundle\Entity\UserEvaluation\ResourceEvaluation;
use Claroline\EvaluationBundle\Library\EvaluationStatus;
use Claroline\EvaluationBundle\Manager\ResourceEvaluationManager;
use Claroline\EvaluationBundle\Repository\UserEvaluation\ResourceAttemptRepository;
Expand All @@ -25,7 +25,7 @@ public function __construct(
$this->resourceEvalRepo = $om->getRepository(ResourceAttempt::class);
}

public function getResourceUserEvaluation(ResourceNode $node, User $user): ResourceEvaluation
public function getResourceUserEvaluation(ResourceNode $node, User $user): ?ResourceEvaluation
{
return $this->resourceEvalManager->getUserEvaluation($node, $user);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,4 @@ services:
Claroline\YouTubeBundle\Component\Resource\VideoResource:
tags: ['claroline.component.resource', 'kernel.event_subscriber']
arguments:
- '@security.token_storage'
- '@Claroline\AppBundle\API\SerializerProvider'
- '@Claroline\YouTubeBundle\Manager\EvaluationManager'
- '@Claroline\YouTubeBundle\Manager\YouTubeManager'
4 changes: 2 additions & 2 deletions src/main/app/Event/Crud/CrudEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class CrudEvent extends Event
private bool $block = false;

public function __construct(
private readonly mixed $object,
private readonly object $object,
private readonly array $options = []
) {
}
Expand All @@ -34,7 +34,7 @@ public function getClass(): string
get_class($this->object);
}

public function getObject(): mixed
public function getObject(): object
{
return $this->object;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ const FormContent = (props) => {
level={props.level}
displayLevel={props.displayLevel}
className={primarySection.className}
icon={primarySection.icon}
title={primarySection.title}
hideTitle={(0 === index && undefined === primarySection.hideTitle) || primarySection.hideTitle}
description={primarySection.description}
Expand All @@ -65,6 +66,7 @@ const FormContent = (props) => {
level={props.level}
displayLevel={props.displayLevel}
className={primarySection.className}
icon={primarySection.icon}
title={primarySection.title}
description={primarySection.description}
actions={primarySection.actions}
Expand Down
Loading
Loading