Skip to content

Commit

Permalink
[BigBlueButton] displays parent ws in administration
Browse files Browse the repository at this point in the history
  • Loading branch information
Elorfin committed Jan 11, 2021
1 parent 72dc6ce commit 7edb4b4
Show file tree
Hide file tree
Showing 5 changed files with 88 additions and 15 deletions.
20 changes: 20 additions & 0 deletions src/integration/big-blue-button/Finder/BBBFinder.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,31 @@

use Claroline\AppBundle\API\Finder\AbstractFinder;
use Claroline\BigBlueButtonBundle\Entity\BBB;
use Doctrine\ORM\QueryBuilder;

class BBBFinder extends AbstractFinder
{
public function getClass()
{
return BBB::class;
}

public function configureQueryBuilder(QueryBuilder $qb, array $searches = [], array $sortBy = null, array $options = ['count' => false, 'page' => 0, 'limit' => -1])
{
foreach ($searches as $filterName => $filterValue) {
switch ($filterName) {
case 'workspace':
$qb->leftJoin('obj.resourceNode', 'n');
$qb->leftJoin('n.workspace', 'w');
$qb->andWhere('w.uuid = :workspaceId');
$qb->setParameter('workspaceId', $filterValue);
break;

default:
$this->setDefaults($qb, $filterName, $filterValue);
}
}

return $qb;
}
}
21 changes: 21 additions & 0 deletions src/integration/big-blue-button/Finder/RecordingFinder.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,32 @@

use Claroline\AppBundle\API\Finder\AbstractFinder;
use Claroline\BigBlueButtonBundle\Entity\Recording;
use Doctrine\ORM\QueryBuilder;

class RecordingFinder extends AbstractFinder
{
public function getClass()
{
return Recording::class;
}

public function configureQueryBuilder(QueryBuilder $qb, array $searches = [], array $sortBy = null, array $options = ['count' => false, 'page' => 0, 'limit' => -1])
{
foreach ($searches as $filterName => $filterValue) {
switch ($filterName) {
case 'workspace':
$qb->leftJoin('obj.meeting', 'm');
$qb->leftJoin('m.resourceNode', 'n');
$qb->leftJoin('n.workspace', 'w');
$qb->andWhere('w.uuid = :workspaceId');
$qb->setParameter('workspaceId', $filterValue);
break;

default:
$this->setDefaults($qb, $filterName, $filterValue);
}
}

return $qb;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,14 @@ const BBBMeetings = (props) =>
displayed: true,
filterable: false,
sortable: false
}, {
name: 'node.workspace',
alias: 'workspace',
type: 'workspace',
label: trans('workspace'),
displayed: true,
filterable: true,
sortable: false
}, {
name: 'info.participantCount',
type: 'number',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,15 @@ const BBBRecordings = (props) =>
displayed: true,
primary: true,
order: 1
}, {
name: 'workspace',
alias: 'workspace',
type: 'workspace',
label: trans('workspace'),
displayed: true,
filterable: true,
sortable: false,
order: 2
}
]}
/>
Expand Down
45 changes: 30 additions & 15 deletions src/integration/big-blue-button/Serializer/RecordingSerializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,22 +16,37 @@ public function getClass(): string

public function serialize(Recording $recording, array $options = []): array
{
return [
'id' => $recording->getUuid(),
'recordId' => $recording->getRecordId(),
'startTime' => (int) $recording->getStartTime(),
'endTime' => (int) $recording->getEndTime(),
'status' => $recording->getStatus(),
'participants' => $recording->getParticipants(),
// this is to display a link to the resource in administration
// so I don't need much information
'meeting' => [
'id' => $recording->getMeeting()->getResourceNode()->getUuid(),
'slug' => $recording->getMeeting()->getResourceNode()->getSlug(),
'name' => $recording->getMeeting()->getResourceNode()->getName(),
],
'medias' => $recording->getMedias(),
$resourceNode = $recording->getMeeting()->getResourceNode();

$serialized = [
'id' => $recording->getUuid(),
'recordId' => $recording->getRecordId(),
'startTime' => (int) $recording->getStartTime(),
'endTime' => (int) $recording->getEndTime(),
'status' => $recording->getStatus(),
'participants' => $recording->getParticipants(),
// this is to display a link to the resource in administration
// so I don't need much information
'meeting' => [
'id' => $resourceNode->getUuid(),
'slug' => $resourceNode->getSlug(),
'name' => $resourceNode->getName(),
],
'medias' => $recording->getMedias(),
];

// this is to display a link to the workspace in administration
// so I don't need much information
$workspace = $resourceNode->getWorkspace();
if ($workspace) {
$serialized['workspace'] = [
'id' => $workspace->getUuid(),
'slug' => $workspace->getSlug(),
'name' => $workspace->getName(),
];
}

return $serialized;
}

public function deserialize(array $data, Recording $recording): Recording
Expand Down

0 comments on commit 7edb4b4

Please # to comment.