Skip to content

Commit ee4143a

Browse files
authored
Merge branch 'master' into sualko-patch-1
2 parents ad33c88 + 52a2652 commit ee4143a

4 files changed

Lines changed: 86 additions & 3 deletions

File tree

src/Core/Attendee.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class Attendee
5858
/**
5959
* @var array
6060
*/
61-
private $customData;
61+
private $customData = [];
6262

6363
/**
6464
* @var string

src/Core/Meeting.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,36 @@ public function getAttendees()
379379
return $this->attendees;
380380
}
381381

382+
/**
383+
* Moderators of Meeting - Subset of Attendees
384+
* @return Attendee[]
385+
*/
386+
public function getModerators(): array
387+
{
388+
$attendees = $this->getAttendees();
389+
390+
$moderators = array_filter($attendees, function ($attendee) {
391+
return $attendee->getRole() === 'MODERATOR';
392+
});
393+
394+
return array_values($moderators);
395+
}
396+
397+
/**
398+
* Viewers of Meeting - Subset of Attendees
399+
* @return Attendee[]
400+
*/
401+
public function getViewers(): array
402+
{
403+
$attendees = $this->getAttendees();
404+
405+
$viewers = array_filter($attendees, function ($attendee) {
406+
return $attendee->getRole() === 'VIEWER';
407+
});
408+
409+
return array_values($viewers);
410+
}
411+
382412
/**
383413
* @return array
384414
*/

tests/fixtures/get_meeting_info.xml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,28 @@
5050
<customStyle>a:focus{color:#0181eb}</customStyle>
5151
</customdata>
5252
</attendee>
53+
<attendee>
54+
<userID>srfd2uad4x9s</userID>
55+
<fullName>Peter Parker</fullName>
56+
<role>VIEWER</role>
57+
<isPresenter>false</isPresenter>
58+
<isListeningOnly>false</isListeningOnly>
59+
<hasJoinedVoice>true</hasJoinedVoice>
60+
<hasVideo>true</hasVideo>
61+
<clientType>HTML5</clientType>
62+
<customdata></customdata>
63+
</attendee>
64+
<attendee>
65+
<userID>6ntb564ibhnq</userID>
66+
<fullName>Bruce Wayne</fullName>
67+
<role>VIEWER</role>
68+
<isPresenter>false</isPresenter>
69+
<isListeningOnly>true</isListeningOnly>
70+
<hasJoinedVoice>false</hasJoinedVoice>
71+
<hasVideo>false</hasVideo>
72+
<clientType>HTML5</clientType>
73+
<customdata></customdata>
74+
</attendee>
5375
</attendees>
5476
<isBreakout>true</isBreakout>
5577
<parentMeetingID>b97b512f2c92c0ffe7a3476152525807daa1c676-1524213151782</parentMeetingID>

tests/unit/Responses/GetMeetingInfoResponseTest.php

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public function setUp(): void
3636
public function testGetMeetingInfoResponseContent()
3737
{
3838
$this->assertInstanceOf('BigBlueButton\Core\Meeting', $this->meetingInfo->getMeeting());
39-
$this->assertCount(2, $this->meetingInfo->getMeeting()->getAttendees());
39+
$this->assertCount(4, $this->meetingInfo->getMeeting()->getAttendees());
4040
$this->assertEquals('SUCCESS', $this->meetingInfo->getReturnCode());
4141

4242
$info = $this->meetingInfo->getMeeting();
@@ -68,6 +68,8 @@ public function testGetMeetingInfoResponseContent()
6868

6969
public function testMeetingAttendeeContent()
7070
{
71+
$this->assertCount(4, $this->meetingInfo->getMeeting()->getAttendees());
72+
7173
$anAttendee = $this->meetingInfo->getMeeting()->getAttendees()[1];
7274

7375
$this->assertEquals('xi7y7gpmyq1g', $anAttendee->getUserId());
@@ -78,7 +80,6 @@ public function testMeetingAttendeeContent()
7880
$this->assertEquals(true, $anAttendee->hasJoinedVoice());
7981
$this->assertEquals(false, $anAttendee->hasVideo());
8082
$this->assertEquals('FLASH', $anAttendee->getClientType());
81-
$this->assertCount(2, $this->meetingInfo->getMeeting()->getAttendees());
8283

8384
$customData = $anAttendee->getCustomData();
8485
$this->assertEquals(3, sizeof($customData));
@@ -87,6 +88,36 @@ public function testMeetingAttendeeContent()
8788
$this->assertEquals('a:focus{color:#0181eb}', $customData['customStyle']);
8889
}
8990

91+
public function testMeetingModerators(): void
92+
{
93+
$moderators = $this->meetingInfo->getMeeting()->getModerators();
94+
95+
$this->assertCount(2, $moderators);
96+
97+
$firstModerator = $moderators[0];
98+
$this->assertEquals('Ernie Abernathy', $firstModerator->getFullName());
99+
$this->assertEquals('MODERATOR', $firstModerator->getRole());
100+
101+
$secondModerator = $moderators[1];
102+
$this->assertEquals('Barrett Kutch', $secondModerator->getFullName());
103+
$this->assertEquals('MODERATOR', $secondModerator->getRole());
104+
}
105+
106+
public function testMeetingViewers(): void
107+
{
108+
$viewers = $this->meetingInfo->getMeeting()->getViewers();
109+
110+
$this->assertCount(2, $viewers);
111+
112+
$firstViewer = $viewers[0];
113+
$this->assertEquals('Peter Parker', $firstViewer->getFullName());
114+
$this->assertEquals('VIEWER', $firstViewer->getRole());
115+
116+
$secondViewer = $viewers[1];
117+
$this->assertEquals('Bruce Wayne', $secondViewer->getFullName());
118+
$this->assertEquals('VIEWER', $secondViewer->getRole());
119+
}
120+
90121
public function testGetMeetingInfoResponseTypes()
91122
{
92123
$info = $this->meetingInfo->getMeeting();

0 commit comments

Comments
 (0)