Skip to content

Commit 5ef4eff

Browse files
authored
Merge pull request #248 from DigitalTimK/enhancement/nativeEnums
Intoduce native php enums
2 parents 15d87af + bfb057b commit 5ef4eff

46 files changed

Lines changed: 400 additions & 209 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

composer.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@
3232
"ext-curl": "*",
3333
"ext-json": "*",
3434
"ext-mbstring": "*",
35-
"ext-simplexml": "*",
36-
"marc-mabe/php-enum": "^v4.7.0"
35+
"ext-simplexml": "*"
3736
},
3837
"require-dev": {
3938
"bmitch/churn-php": "^1.7",

phpunit.xml.dist

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@
2222
<directory>tests</directory>
2323
</testsuite>
2424
</testsuites>
25+
<groups>
26+
<exclude>
27+
<group>ignore</group>
28+
</exclude>
29+
</groups>
2530
<source>
2631
<include>
2732
<directory suffix=".php">src</directory>

src/BigBlueButton.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ class BigBlueButton
7676
* @deprecated This property has been replaced by property in UrlBuilder-class.
7777
* User property via $this->getUrlBuilder()->setHashingAlgorithm() and $this->getUrlBuilder()->getHashingAlgorithm().
7878
*/
79-
protected string $hashingAlgorithm;
79+
protected HashingAlgorithm $hashingAlgorithm;
8080

8181
/**
8282
* @var array<int, mixed>
@@ -487,13 +487,13 @@ public function setTimeOut(int $TimeOutInSeconds): self
487487
return $this;
488488
}
489489

490-
public function setHashingAlgorithm(string $hashingAlgorithm): void
490+
public function setHashingAlgorithm(HashingAlgorithm $hashingAlgorithm): void
491491
{
492492
$this->hashingAlgorithm = $hashingAlgorithm;
493493
$this->getUrlBuilder()->setHashingAlgorithm($hashingAlgorithm);
494494
}
495495

496-
public function getHashingAlgorithm(string $hashingAlgorithm): string
496+
public function getHashingAlgorithm(): HashingAlgorithm
497497
{
498498
$this->hashingAlgorithm = $this->getUrlBuilder()->getHashingAlgorithm();
499499

src/Core/Attendee.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,15 @@
2020

2121
namespace BigBlueButton\Core;
2222

23+
use BigBlueButton\Enum\Role;
24+
2325
class Attendee
2426
{
2527
private string $userId;
2628

2729
private string $fullName;
2830

29-
private string $role;
31+
private Role $role;
3032

3133
private bool $isPresenter;
3234

@@ -47,7 +49,7 @@ public function __construct(\SimpleXMLElement $xml)
4749
{
4850
$this->userId = $xml->userID->__toString();
4951
$this->fullName = $xml->fullName->__toString();
50-
$this->role = $xml->role->__toString();
52+
$this->role = Role::from($xml->role->__toString());
5153
$this->isPresenter = 'true' === $xml->isPresenter->__toString();
5254
$this->isListeningOnly = 'true' === $xml->isListeningOnly->__toString();
5355
$this->hasJoinedVoice = 'true' === $xml->hasJoinedVoice->__toString();
@@ -71,7 +73,7 @@ public function getFullName(): string
7173
return $this->fullName;
7274
}
7375

74-
public function getRole(): string
76+
public function getRole(): Role
7577
{
7678
return $this->role;
7779
}

src/Enum/Feature.php

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -20,30 +20,28 @@
2020

2121
namespace BigBlueButton\Enum;
2222

23-
use MabeEnum\Enum;
24-
25-
class Feature extends Enum
23+
enum Feature: string
2624
{
27-
public const BREAKOUT_ROOMS = 'breakoutRooms';
28-
public const CAMERA_AS_CONTENT = 'cameraAsContent';
29-
public const CAPTIONS = 'captions';
30-
public const CHAT = 'chat';
31-
public const CUSTOM_VIRTUAL_BACKGROUNDS = 'customVirtualBackgrounds';
32-
public const DOWNLOAD_PRESENTATION_CONVERTED_TO_PDF = 'downloadPresentationConvertedToPdf';
33-
public const DOWNLOAD_PRESENTATION_ORIGINAL_FILE = 'downloadPresentationOriginalFile';
34-
public const DOWNLOAD_PRESENTATION_WITH_ANNOTATIONS = 'downloadPresentationWithAnnotations';
35-
public const EXTERNAL_VIDEOS = 'externalVideos';
36-
public const IMPORT_PRESENTATION_WITH_ANNOTATIONS_FROM_BREAKOUT_ROOMS = 'importPresentationWithAnnotationsFromBreakoutRooms';
37-
public const IMPORT_SHARED_NOTES_FROM_BREAKOUT_ROOMS = 'importSharedNotesFromBreakoutRooms';
38-
public const LAYOUTS = 'layouts';
39-
public const LEARNING_DASHBOARD = 'learningDashboard';
40-
public const LEARNING_DASHBOARD_DOWNLOAD_SESSION_DATA = 'learningDashboardDownloadSessionData';
41-
public const LIVE_TRANSCRIPTION = 'liveTranscription';
42-
public const POLLS = 'polls';
43-
public const PRESENTATION = 'presentation';
44-
public const SCREENSHARE = 'screenshare';
45-
public const SHARED_NOTES = 'sharedNotes';
46-
public const SNAPSHOT_OF_CURRENT_SLIDE = 'snapshotOfCurrentSlide';
47-
public const TIMER = 'timer';
48-
public const VIRTUAL_BACKGROUNDS = 'virtualBackgrounds';
25+
case BREAKOUT_ROOMS = 'breakoutRooms';
26+
case CAMERA_AS_CONTENT = 'cameraAsContent';
27+
case CAPTIONS = 'captions';
28+
case CHAT = 'chat';
29+
case CUSTOM_VIRTUAL_BACKGROUNDS = 'customVirtualBackgrounds';
30+
case DOWNLOAD_PRESENTATION_CONVERTED_TO_PDF = 'downloadPresentationConvertedToPdf';
31+
case DOWNLOAD_PRESENTATION_ORIGINAL_FILE = 'downloadPresentationOriginalFile';
32+
case DOWNLOAD_PRESENTATION_WITH_ANNOTATIONS = 'downloadPresentationWithAnnotations';
33+
case EXTERNAL_VIDEOS = 'externalVideos';
34+
case IMPORT_PRESENTATION_WITH_ANNOTATIONS_FROM_BREAKOUT_ROOMS = 'importPresentationWithAnnotationsFromBreakoutRooms';
35+
case IMPORT_SHARED_NOTES_FROM_BREAKOUT_ROOMS = 'importSharedNotesFromBreakoutRooms';
36+
case LAYOUTS = 'layouts';
37+
case LEARNING_DASHBOARD = 'learningDashboard';
38+
case LEARNING_DASHBOARD_DOWNLOAD_SESSION_DATA = 'learningDashboardDownloadSessionData';
39+
case LIVE_TRANSCRIPTION = 'liveTranscription';
40+
case POLLS = 'polls';
41+
case PRESENTATION = 'presentation';
42+
case SCREENSHARE = 'screenshare';
43+
case SHARED_NOTES = 'sharedNotes';
44+
case SNAPSHOT_OF_CURRENT_SLIDE = 'snapshotOfCurrentSlide';
45+
case TIMER = 'timer';
46+
case VIRTUAL_BACKGROUNDS = 'virtualBackgrounds';
4947
}

src/Enum/GuestPolicy.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@
2020

2121
namespace BigBlueButton\Enum;
2222

23-
use MabeEnum\Enum;
24-
25-
// @ref : https://github.com/bigbluebutton/bigbluebutton/blob/5189abb225247290d1954e10827853d5fc022b66/bbb-common-web/src/main/java/org/bigbluebutton/api/domain/GuestPolicy.java
26-
class GuestPolicy extends Enum
23+
/**
24+
* @ref : https://github.com/bigbluebutton/bigbluebutton/blob/5189abb225247290d1954e10827853d5fc022b66/bbb-common-web/src/main/java/org/bigbluebutton/api/domain/GuestPolicy.java
25+
*/
26+
enum GuestPolicy: string
2727
{
28-
public const ALWAYS_ACCEPT = 'ALWAYS_ACCEPT';
29-
public const ALWAYS_DENY = 'ALWAYS_DENY';
30-
public const ASK_MODERATOR = 'ASK_MODERATOR';
31-
public const ALWAYS_ACCEPT_AUTH = 'ALWAYS_ACCEPT_AUTH';
28+
case ALWAYS_ACCEPT = 'ALWAYS_ACCEPT';
29+
case ALWAYS_DENY = 'ALWAYS_DENY';
30+
case ASK_MODERATOR = 'ASK_MODERATOR';
31+
case ALWAYS_ACCEPT_AUTH = 'ALWAYS_ACCEPT_AUTH';
3232
}

src/Enum/HashingAlgorithm.php

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,10 @@
2020

2121
namespace BigBlueButton\Enum;
2222

23-
use MabeEnum\Enum;
24-
25-
class HashingAlgorithm extends Enum
23+
enum HashingAlgorithm: string
2624
{
27-
public const SHA_1 = 'sha1';
28-
public const SHA_256 = 'sha256';
29-
public const SHA_512 = 'sha512';
30-
public const SHA_384 = 'sha384';
25+
case SHA_1 = 'sha1';
26+
case SHA_256 = 'sha256';
27+
case SHA_384 = 'sha384';
28+
case SHA_512 = 'sha512';
3129
}

src/Enum/MeetingLayout.php

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,10 @@
2020

2121
namespace BigBlueButton\Enum;
2222

23-
use MabeEnum\Enum;
24-
25-
class MeetingLayout extends Enum
23+
enum MeetingLayout: string
2624
{
27-
public const CUSTOM_LAYOUT = 'CUSTOM_LAYOUT';
28-
public const SMART_LAYOUT = 'SMART_LAYOUT';
29-
public const PRESENTATION_FOCUS = 'PRESENTATION_FOCUS';
30-
public const VIDEO_FOCUS = 'VIDEO_FOCUS';
25+
case CUSTOM_LAYOUT = 'CUSTOM_LAYOUT';
26+
case SMART_LAYOUT = 'SMART_LAYOUT';
27+
case PRESENTATION_FOCUS = 'PRESENTATION_FOCUS';
28+
case VIDEO_FOCUS = 'VIDEO_FOCUS';
3129
}

src/Enum/Role.php

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,8 @@
2020

2121
namespace BigBlueButton\Enum;
2222

23-
use MabeEnum\Enum;
24-
25-
class Role extends Enum
23+
enum Role: string
2624
{
27-
public const MODERATOR = 'MODERATOR';
28-
public const VIEWER = 'VIEWER';
25+
case MODERATOR = 'MODERATOR';
26+
case VIEWER = 'VIEWER';
2927
}

src/Enum/UserData.php

Lines changed: 35 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -20,57 +20,55 @@
2020

2121
namespace BigBlueButton\Enum;
2222

23-
use MabeEnum\Enum;
24-
25-
class UserData extends Enum
23+
enum UserData: string
2624
{
2725
// Application settings
28-
public const ASK_FOR_FEEDBACK_ON_LOGOUT = 'bbb_ask_for_feedback_on_logout';
29-
public const AUTO_JOIN_AUDIO = 'bbb_auto_join_audio';
30-
public const CLIENT_TITLE = 'bbb_client_title';
31-
public const FORCE_LISTEN_ONLY = 'bbb_force_listen_only';
32-
public const LISTEN_ONLY_MODE = 'bbb_listen_only_mode';
33-
public const SKIP_CHECK_AUDIO = 'bbb_skip_check_audio';
34-
public const SKIP_CHECK_AUDIO_ON_FIRST_JOIN = 'bbb_skip_check_audio_on_first_join';
35-
public const OVERRIDE_DEFAULT_LOCALE = 'bbb_override_default_locale';
36-
public const HIDE_PRESENTATION_ON_JOIN = 'bbb_hide_presentation_on_join';
37-
public const DIRECT_LEAVE_BUTTON = 'bbb_direct_leave_button';
26+
case ASK_FOR_FEEDBACK_ON_LOGOUT = 'bbb_ask_for_feedback_on_logout';
27+
case AUTO_JOIN_AUDIO = 'bbb_auto_join_audio';
28+
case CLIENT_TITLE = 'bbb_client_title';
29+
case FORCE_LISTEN_ONLY = 'bbb_force_listen_only';
30+
case LISTEN_ONLY_MODE = 'bbb_listen_only_mode';
31+
case SKIP_CHECK_AUDIO = 'bbb_skip_check_audio';
32+
case SKIP_CHECK_AUDIO_ON_FIRST_JOIN = 'bbb_skip_check_audio_on_first_join';
33+
case OVERRIDE_DEFAULT_LOCALE = 'bbb_override_default_locale';
34+
case HIDE_PRESENTATION_ON_JOIN = 'bbb_hide_presentation_on_join';
35+
case DIRECT_LEAVE_BUTTON = 'bbb_direct_leave_button';
3836

3937
// Branding settings
40-
public const DISPLAY_BRANDING_AREA = 'bbb_display_branding_area';
38+
case DISPLAY_BRANDING_AREA = 'bbb_display_branding_area';
4139

4240
// Shortcut settings
43-
public const SHORTCUTS = 'bbb_shortcuts';
41+
case SHORTCUTS = 'bbb_shortcuts';
4442

4543
// Kurento settings (WebRTC media server)
46-
public const AUTO_SHARE_WEBCAM = 'bbb_auto_share_webcam';
47-
public const PREFERRED_CAMERA_PROFILE = 'bbb_preferred_camera_profile';
48-
public const ENABLE_VIDEO = 'bbb_enable_video';
49-
public const RECORD_VIDEO = 'bbb_record_video';
50-
public const SKIP_VIDEO_PREVIEW = 'bbb_skip_video_preview';
51-
public const SKIP_VIDEO_PREVIEW_ON_FIRST_JOIN = 'bbb_skip_video_preview_on_first_join';
52-
public const MIRROR_OWN_WEBCAM = 'bbb_mirror_own_webcam';
53-
public const FULLAUDIO_BRIDGE = 'bbb_fullaudio_bridge';
54-
public const TRANSPARENT_LISTEN_ONLY = 'bbb_transparent_listen_only';
44+
case AUTO_SHARE_WEBCAM = 'bbb_auto_share_webcam';
45+
case PREFERRED_CAMERA_PROFILE = 'bbb_preferred_camera_profile';
46+
case ENABLE_VIDEO = 'bbb_enable_video';
47+
case RECORD_VIDEO = 'bbb_record_video';
48+
case SKIP_VIDEO_PREVIEW = 'bbb_skip_video_preview';
49+
case SKIP_VIDEO_PREVIEW_ON_FIRST_JOIN = 'bbb_skip_video_preview_on_first_join';
50+
case MIRROR_OWN_WEBCAM = 'bbb_mirror_own_webcam';
51+
case FULLAUDIO_BRIDGE = 'bbb_fullaudio_bridge';
52+
case TRANSPARENT_LISTEN_ONLY = 'bbb_transparent_listen_only';
5553

5654
// Presentation settings
57-
public const FORCE_RESTORE_PRESENTATION_ON_NEW_EVENTS = 'bbb_force_restore_presentation_on_new_events';
55+
case FORCE_RESTORE_PRESENTATION_ON_NEW_EVENTS = 'bbb_force_restore_presentation_on_new_events';
5856

5957
// Whiteboard settings
60-
public const MULTI_USER_PEN_ONLY = 'bbb_multi_user_pen_only';
61-
public const PRESENTER_TOOLS = 'bbb_presenter_tools';
62-
public const MULTI_USER_TOOLS = 'bbb_multi_user_tools';
58+
case MULTI_USER_PEN_ONLY = 'bbb_multi_user_pen_only';
59+
case PRESENTER_TOOLS = 'bbb_presenter_tools';
60+
case MULTI_USER_TOOLS = 'bbb_multi_user_tools';
6361

6462
// Theming & Styling settings
65-
public const CUSTOM_STYLE = 'bbb_custom_style';
66-
public const CUSTOM_STYLE_URL = 'bbb_custom_style_url';
63+
case CUSTOM_STYLE = 'bbb_custom_style';
64+
case CUSTOM_STYLE_URL = 'bbb_custom_style_url';
6765

6866
// Layout settings
69-
public const AUTO_SWAP_LAYOUT = 'bbb_auto_swap_layout';
70-
public const HIDE_PRESENTATION = 'bbb_hide_presentation';
71-
public const SHOW_PARTICIPANTS_ON_LOGIN = 'bbb_show_participants_on_login';
72-
public const SHOW_PUBLIC_CHAT_ON_LOGIN = 'bbb_show_public_chat_on_login';
73-
public const HIDE_NAV_BAR = 'bbb_hide_nav_bar';
74-
public const HIDE_ACTIONS_BAR = 'bbb_hide_actions_bar';
75-
public const DEFAULT_LAYOUT = 'bbb_default_layout';
67+
case AUTO_SWAP_LAYOUT = 'bbb_auto_swap_layout';
68+
case HIDE_PRESENTATION = 'bbb_hide_presentation';
69+
case SHOW_PARTICIPANTS_ON_LOGIN = 'bbb_show_participants_on_login';
70+
case SHOW_PUBLIC_CHAT_ON_LOGIN = 'bbb_show_public_chat_on_login';
71+
case HIDE_NAV_BAR = 'bbb_hide_nav_bar';
72+
case HIDE_ACTIONS_BAR = 'bbb_hide_actions_bar';
73+
case DEFAULT_LAYOUT = 'bbb_default_layout';
7674
}

0 commit comments

Comments
 (0)