Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
d7099ed
Deprecate configToken
samuelwei Aug 30, 2023
519529d
Fix code style
samuelwei Aug 30, 2023
7ea8e13
Merge pull request #154 from littleredbutton/fix-code-style
samuelwei Aug 30, 2023
3d76cc4
Merge remote-tracking branch 'origin/master' into remove-configToken
samuelwei Aug 30, 2023
7efb21c
Updated PHPUnit to version 9 (fixes #89) (#158)
FelixJacobi Oct 7, 2023
eaafe11
Fix functional tests (#160)
samuelwei Oct 7, 2023
e231d4b
Implement breakout rooms groups in create API (#155)
samuelwei Oct 7, 2023
b55171b
Support multiple checksum algorithms (#147)
samuelwei Oct 7, 2023
addebc3
Merge branch 'master' of https://github.com/littleredbutton/bigbluebu…
samuelwei Oct 16, 2023
87e761a
Fix methods in wrong class
samuelwei Oct 16, 2023
5ce2e64
Add tests for config token
samuelwei Oct 16, 2023
3652993
Fix psalm error
samuelwei Oct 16, 2023
aaa2ff5
Fix cs
samuelwei Oct 16, 2023
11bf11b
Add psalm immutable annotation
samuelwei Oct 16, 2023
190bbbc
Merge branch 'master' into remove-configToken
samuelwei Oct 16, 2023
27253fc
Merge pull request #153 from littleredbutton/remove-configToken
samuelwei Oct 16, 2023
f1b66be
Deprecated password parameters (fixes #142) (#159)
FelixJacobi Oct 23, 2023
3d45f2a
Implement disabledFeatures in create API (#152)
samuelwei Nov 13, 2023
9c8f3b7
Implement API changes in BBB 2.4-2.6 (#156)
samuelwei Feb 9, 2024
c0ae493
Fix CI not running for experimental versions (#165)
samuelwei Feb 9, 2024
9b2af35
Fix missing docs for new methods (#167)
samuelwei Feb 9, 2024
acb0b42
Add new 2.7 features (#169)
samuelwei Feb 9, 2024
0ae92a0
Fix psalm composer script
samuelwei Feb 12, 2024
38f6554
Fix inconsistent features const casing (#170)
samuelwei Feb 12, 2024
19dede1
Deprecate password methods (#174)
samuelwei Feb 19, 2024
fc3e568
Bump minimum PHP version to 8.1 (#171)
samuelwei Feb 24, 2024
d4cc0c3
Bump symfony dependencies, remove EOL versions (#176)
samuelwei Feb 25, 2024
bcd5208
Revert "Bump symfony dependencies, remove EOL versions (#176)"
samuelwei Feb 26, 2024
dbca763
Bump symfony dependencies, remove EOL versions (#179)
samuelwei Feb 26, 2024
f217d82
Add missing tests (#182)
samuelwei Feb 27, 2024
2ee1140
Recording response errors (#181)
samuelwei Mar 3, 2024
06574cf
Update Webhook api calls (#184)
samuelwei Mar 3, 2024
6508e29
Merge branch 'master' into 6.0
FelixJacobi Mar 3, 2024
1392328
Merge remote-tracking branch 'origin/master' into 6.0
samuelwei Mar 11, 2024
ebff0b3
Change coveralls to codecov (#185)
samuelwei Mar 11, 2024
57ae98b
Merge branch 'master' of https://github.com/littleredbutton/bigbluebu…
samuelwei Mar 13, 2024
93c824d
Add tests (#187)
samuelwei Mar 14, 2024
1de69d7
Remove deprecations (#172)
samuelwei Mar 14, 2024
c730563
Merge branch 'master' of https://github.com/littleredbutton/bigbluebu…
samuelwei Mar 14, 2024
40494d0
Refactor using native ones (#186)
samuelwei Mar 14, 2024
027a140
Fix cs
samuelwei Mar 25, 2024
513a56a
Create dependabot.yml
samuelwei Mar 28, 2024
e62790a
Update psr/http-message requirement from ^1.0 to ^1.0 || ^2.0 (#196)
dependabot[bot] Apr 4, 2024
7e55854
Deprecate clientURL (#194)
samuelwei Apr 4, 2024
7f7320f
Deprecate not passing server base url and secret (#195)
samuelwei May 5, 2024
afee4cc
Getting of the parentMeetingID in the class Meeting (#200)
marineusde Jun 24, 2024
7761b10
Move all enums to BigBlueButton\Enum namespace (#197)
samuelwei Jun 24, 2024
1d2f423
Add new create meeting param allowPromoteGuestToModerator (#203)
samuelwei Jun 24, 2024
2dcecde
Merge remote-tracking branch 'origin/master' into 6.0
FelixJacobi Jul 26, 2024
cf2ff25
Converted native enums
FelixJacobi Jul 26, 2024
7d6d7ed
Improved code quality (#188)
FelixJacobi Aug 1, 2024
b2a7a0d
Removed deprecated setClientUrl / getClientUrl
FelixJacobi Aug 23, 2024
e0f653e
Fixed CS, removed obsolete test parts
FelixJacobi Aug 23, 2024
0a312c1
Removed wrong CS fix
FelixJacobi Aug 23, 2024
1db2fac
CI: Fully enabled PHP 8.3
FelixJacobi Aug 23, 2024
21f4e46
Update symfony/http-client-contracts requirement (#209)
dependabot[bot] Aug 23, 2024
672f881
getting the internal meeting-id from the meeting of the recording (#208)
marineusde Sep 13, 2024
13fabd0
- changed the type from string to integer for the setter und getter o…
marineusde Sep 13, 2024
3563503
Add sendchatmessage api endpoint (#204)
samuelwei Sep 17, 2024
0df16da
Add learningDashboardDownloadSessionData to Feature enum (#213)
samuelwei Sep 27, 2024
edfdd95
Add webcamBackgroundURL (#214)
samuelwei Sep 27, 2024
7d82f34
Add dark logo (#215)
samuelwei Sep 27, 2024
9a3bc94
Add infiniteWhiteboard to features enum (#220)
samuelwei Sep 28, 2024
7a7f832
Add enforce layout and new layout options (#219)
samuelwei Oct 4, 2024
49315e5
Add missing enforceLayout value 'MEDIA_ONLY'
samuelwei Apr 9, 2025
b56c4dc
Update type declarations of SymfonyHttpClientTransport constructor
samuelwei Apr 9, 2025
58f3d5e
Add new join parameter bot (#224)
samuelwei Apr 30, 2025
ec9c644
Update feature enum for BBB 3.0 (#225)
samuelwei Jul 5, 2025
1723270
Fix cs
samuelwei Jul 8, 2025
232213d
Add new create and join parameters (#226)
samuelwei Jul 8, 2025
f892715
Add BBB 3.0 client settings override (#227)
samuelwei Oct 1, 2025
9194583
Add QUIZZES to Feature enum
samuelwei Oct 28, 2025
a8c6b3c
Fix: Create meeting call is always a POST request (#230)
samuelwei Oct 28, 2025
0178d70
Fix: mis-spelled userReactions feature (#231)
gkralik Nov 17, 2025
ccdeb34
Fix code style
samuelwei Feb 18, 2026
846afb0
Adjust php-cs-fixer rules to perserve strict_types
samuelwei Apr 17, 2026
f611762
Add UNIFIED_LAYOUT case to MeetingLayout enum (#235)
samuelwei Apr 17, 2026
dfdd7d1
Add PLUGINS case to Feature enum
samuelwei Apr 28, 2026
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
12 changes: 12 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates

version: 2
updates:
# Maintain dependencies for Composer
- package-ecosystem: "composer"
directory: "/"
schedule:
interval: "daily"
29 changes: 16 additions & 13 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['7.4', '8.0']
php-versions: ['8.1', '8.2', '8.3']
experimental: [false]

steps:
Expand All @@ -30,19 +30,15 @@ jobs:
run: composer install --dev --no-interaction
- name: Execute tests without coverage
run: tools/phpunit --testsuite="BigBlueButton unit test suite,BigBlueButton integration test suite"

PHP:
name: PHP ${{ matrix.php-versions }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php-versions: ['7.4','8.0']
php-versions: ['8.1', '8.2', '8.3']
experimental: [false]
include:
- php-versions: '8.1'
experimental: true

steps:
- name: Checkout
uses: actions/checkout@v2
Expand All @@ -65,10 +61,17 @@ jobs:
tools/phpunit --coverage-clover=build/logs/coverage.xml --testsuite="BigBlueButton unit test suite,BigBlueButton integration test suite"
- name: Execute tests without coverage
if: ${{ matrix.experimental }}
run: tools/phpunit --testsuite="BigBlueButton test suite"
run: tools/phpunit --testsuite="BigBlueButton unit test suite,BigBlueButton integration test suite"
continue-on-error: true
- name: Coveralls
env:
COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
if: ${{ matrix.php-versions == '7.4' && env.COVERALLS_REPO_TOKEN != null }}
run: tools/php-coveralls --coverage_clover=build/logs/coverage.xml -v
- name: Upload coverage
if: ${{ matrix.php-versions == '8.1' }}
uses: codecov/codecov-action@v3
- name: Run rector
if: ${{ matrix.php-versions == '8.1' }}
run: tools/rector process --dry-run
- name: Run psalm
if: ${{ matrix.php-versions == '8.1' }}
run: tools/psalm
- name: Run phpstan
if: ${{ matrix.php-versions == '8.1' }}
run: tools/phpstan
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,5 @@ reports
#
# See https://github.com/littleredbutton/bigbluebutton-api-php/pull/115 for the discussion.
/composer.lock

/Makefile.iservmake
9 changes: 7 additions & 2 deletions .php-cs-fixer.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
$finder = \PhpCsFixer\Finder::create()
->files()
->name('*.php')
->in(__DIR__ . '/src')
->in(__DIR__ . '/tests');
->in(__DIR__.'/src')
->in(__DIR__.'/tests');

$config = new PhpCsFixer\Config();

Expand All @@ -18,6 +18,11 @@
'yoda_style' => false,
'single_line_throw' => false,
'increment_style' => false,
'modernize_strpos' => false,
'get_class_to_class_keyword' => false,
'declare_strict_types' => [
'strategy' => 'enforce'
]
])
->setRiskyAllowed(true)
->setFinder($finder);
19 changes: 8 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# :tada: Best BigBlueButton API for PHP

The unofficial and easiest to use **BigBlueButton API for PHP**, makes easy for
developers to use [BigBlueButton API] v2.2+ for **PHP 7.4+**.
developers to use [BigBlueButton API] v2.2+ for **PHP 8.1+**.

![Build Status](https://github.com/littleredbutton/bigbluebutton-api-php/workflows/CI/badge.svg)
[![Coverage Status](https://coveralls.io/repos/github/littleredbutton/bigbluebutton-api-php/badge.svg?branch=master)](https://coveralls.io/github/littleredbutton/bigbluebutton-api-php?branch=master)
Expand Down Expand Up @@ -56,15 +56,15 @@ following advantages:
- Development is simplified through git hooks and contributor guidelines
- Documentation is up-to-date and complete
- API is fixed and extended to exploit the full potential
- Require at least PHP 7.4, which allows to make the code more efficient and
- Require at least PHP 8.1, which allows to make the code more efficient and
readable

## :gear: Installation and usage
### Requirements
In order to use this library you have to make sure to meet the following
requirements:

- PHP 7.4 or above.
- PHP 8.1 or above.
- curl library installed.
- mbstring library installed.
- xml library installed.
Expand All @@ -89,7 +89,7 @@ $bbb = new BigBlueButton($apiUrl, $apiSecret);

If you didn't use composer before, make sure that you include `vendor/autoload.php`.

In general the usage is closly related to the official [API description](https://docs.bigbluebutton.org/dev/api.html). This means to create a room, you have to create a `CreateMeetingParameters` object and set all required parameters via the related setter method. This means to set the `attendeePW`, you have to call `setAttendeePW` and so on.
In general the usage is closly related to the official [API description](https://docs.bigbluebutton.org/dev/api.html). This means to create a room, you have to create a `CreateMeetingParameters` object and set all required parameters via the related setter method.

#### Test if API url and secret are valid
```php
Expand Down Expand Up @@ -126,8 +126,6 @@ $version = $bbb->getApiVersion()->getVersion();
use BigBlueButton\Parameters\CreateMeetingParameters;

$createMeetingParams = new CreateMeetingParameters($meetingID, $meetingName);
$createMeetingParams->setAttendeePW($attendee_password);
$createMeetingParams->setModeratorPW($moderator_password);

$createMeetingResponse = $bbb->createMeeting($createMeetingParams);

Expand Down Expand Up @@ -155,10 +153,10 @@ $createMeetingParams->setGuestPolicyAlwaysAcceptAuth();
#### Join a meeting
```php
use BigBlueButton\Parameters\JoinMeetingParameters;
use BigBlueButton\Enum\Role;

$joinMeetingParams = new JoinMeetingParameters($room->uid, $displayname, $password);
$joinMeetingParams = new JoinMeetingParameters($room->uid, $displayname, Role::VIEWER);
$joinMeetingParams->setCreateTime($createMeetingResponse->getCreationTime());
$joinMeetingParams->setJoinViaHtml5(true);
$joinMeetingParams->setRedirect(true);

$joinUrl = $bbb->getJoinMeetingURL($joinMeetingParams);
Expand All @@ -170,7 +168,7 @@ $joinUrl = $bbb->getJoinMeetingURL($joinMeetingParams);
```php
use BigBlueButton\Parameters\EndMeetingParameters;

$endMeetingParams = new EndMeetingParameters($meetingID, $moderator_password);
$endMeetingParams = new EndMeetingParameters($meetingID);
$response = $bbb->endMeeting($endMeetingParams);
```

Expand Down Expand Up @@ -206,7 +204,7 @@ if ($response->success() && $response->isRunning()) {
```php
use BigBlueButton\Parameters\GetMeetingInfoParameters;

$getMeetingInfoParams = new GetMeetingInfoParameters($meetingID, $moderator_password);
$getMeetingInfoParams = new GetMeetingInfoParameters($meetingID);

$response = $bbb->getMeetingInfo($getMeetingInfoParams);

Expand Down Expand Up @@ -483,4 +481,3 @@ composer test-integration
Bugs and feature request are tracked on [GitHub](https://github.com/littleredbutton/bigbluebutton-api-php/issues)

[BigBlueButton API]: https://docs.bigbluebutton.org/dev/api.html

46 changes: 31 additions & 15 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,11 +58,12 @@
"docs": "https://github.com/littleredbutton/bigbluebutton-api-php/blob/master/README.md"
},
"require": {
"php": ">=7.4",
"php": ">=8.1",
"ext-curl": "*",
"ext-simplexml": "*",
"ext-mbstring": "*",
"ext-json": "*"
"ext-json": "*",
"ext-dom": "*"
},
"suggest": {
"psr/http-client-implementation": "To use the PsrHttpClientTransport.",
Expand All @@ -74,11 +75,11 @@
"require-dev": {
"psr/http-client": "^1.0",
"psr/http-factory": "^1.0",
"psr/http-message": "^1.0",
"symfony/dotenv": "^3.4|^4.0|^5.0",
"symfony/http-client-contracts": "^1.1|^2.0",
"symfony/http-client": "^4.4|^5.0",
"symfony/process": "^3.4|^4.0|^5.0",
"psr/http-message": "^1.0 || ^2.0",
"symfony/dotenv": "^5.4|^6.4|^7.0",
"symfony/http-client-contracts": "^1.1|^2.0|^3.0",
"symfony/http-client": "^5.4|^6.4|^7.0",
"symfony/process": "^5.4|^6.4|^7.0",
"nyholm/psr7": "^1.4"
},
"autoload": {
Expand All @@ -91,8 +92,17 @@
},
"autoload-dev": {
"psr-4": {
"BigBlueButton\\Tests\\Common\\": [
"tests/common"
],
"BigBlueButton\\Tests\\Functional\\": [
"tests/functional"
],
"BigBlueButton\\Tests\\Integration\\": [
"tests/integration"
],
"BigBlueButton\\Tests\\Unit\\": [
"tests/unit"
]
}
},
Expand All @@ -102,9 +112,12 @@
"test-functional": "tools/phpunit --testsuite=\"BigBlueButton functional test suite\" --exclude-group=functional-legacy",
"cs-fix": "tools/php-cs-fixer fix --allow-risky=yes",
"cs-test": "tools/php-cs-fixer fix --dry-run --allow-risky=yes",
"psalm": "psalm --threads=1",
"psalm-clear": "psalm --clear-cache && psalm --clear-global-cache",
"psalm-fix": "psalm --alter --issues=InvalidReturnType,InvalidNullableReturnType,MissingParamType,InvalidFalsableReturnType",
"psalm": "tools/psalm --threads=1",
"psalm-clear": "tools/psalm --clear-cache && tools/psalm --clear-global-cache",
"psalm-fix": "tools/psalm --alter --issues=InvalidReturnType,InvalidNullableReturnType,MissingParamType,InvalidFalsableReturnType",
"phpstan": "tools/phpstan analyse",
"rector": "tools/rector process --dry-run src/ tests/",
"rector-fix": "tools/rector process src/ tests/",
"post-install-cmd": "tools/composer-git-hooks add --ignore-lock",
"post-update-cmd": "tools/composer-git-hooks update"
},
Expand All @@ -115,7 +128,9 @@
],
"pre-push": [
"tools/phpunit --testsuite=\"BigBlueButton unit test suite,BigBlueButton integration test suite\"",
"tools/psalm --threads=1"
"tools/psalm --threads=1",
"tools/phpstan analyse",
"tools/rector process --dry-run src/ tests/"
],
"post-merge": "composer install",
"post-checkout": "composer install"
Expand All @@ -124,13 +139,14 @@
"brainmaestro/composer-git-hooks": "^2.8",
"extensions": {
"phpunit/phpunit": {
"fakerphp/faker": "^1.14"
"fakerphp/faker": "1.20.*"
}
},
"friendsofphp/php-cs-fixer": "^3.3",
"php-coveralls/php-coveralls": "^2.4",
"phpunit/phpunit": "^8",
"vimeo/psalm": "^4.22"
"phpstan/phpstan": "^1.10",
"phpunit/phpunit": "^9",
"rector/rector": "^1.0",
"vimeo/psalm": "^5.23"
}
}
}
17 changes: 17 additions & 0 deletions phpstan.neon
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
parameters:
paths:
- src
- tests
parallel:
maximumNumberOfProcesses: 4
level: 6
inferPrivatePropertyTypeFromConstructor: true
bootstrapFiles:
- tools/bootstrap.php
ignoreErrors:
-
message: '#^Offset ''input'' does not exist on array\{\}\.$#'
path: tests/integration/Http/Transport/CurlTransportTest.php
-
message: '#^Offset ''vars'' does not exist on array\{\}\.$#'
path: tests/integration/Http/Transport/CurlTransportTest.php
19 changes: 19 additions & 0 deletions phpunit.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" backupGlobals="false" backupStaticAttributes="false" bootstrap="./tests/bootstrap.php" colors="true" convertDeprecationsToExceptions="false" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" stopOnFailure="false" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd">
<coverage processUncoveredFiles="true">
<include>
<directory suffix=".php">./src/</directory>
</include>
</coverage>
<testsuites>
<testsuite name="BigBlueButton unit test suite">
<directory>./tests/unit/</directory>
</testsuite>
<testsuite name="BigBlueButton integration test suite">
<directory>./tests/integration/</directory>
</testsuite>
<testsuite name="BigBlueButton functional test suite">
<directory>./tests/functional/</directory>
</testsuite>
</testsuites>
</phpunit>
33 changes: 0 additions & 33 deletions phpunit.xml.dist

This file was deleted.

34 changes: 34 additions & 0 deletions rector.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?php

declare(strict_types=1);

use Rector\Config\RectorConfig;
use Rector\DeadCode\Rector\Assign\RemoveUnusedVariableAssignRector;
use Rector\DeadCode\Rector\ClassMethod\RemoveUselessParamTagRector;
use Rector\DeadCode\Rector\ClassMethod\RemoveUselessReturnTagRector;
use Rector\Privatization\Rector\Class_\FinalizeTestCaseClassRector;
use Rector\TypeDeclaration\Rector\ClassMethod\AddVoidReturnTypeWhereNoReturnRector;
use Rector\TypeDeclaration\Rector\Property\TypedPropertyFromAssignsRector;
use Rector\TypeDeclaration\Rector\Property\TypedPropertyFromStrictConstructorRector;
use Rector\TypeDeclaration\Rector\Property\TypedPropertyFromStrictSetUpRector;
use Rector\TypeDeclaration\Rector\StmtsAwareInterface\DeclareStrictTypesRector;

return RectorConfig::configure()
->withPaths([
__DIR__.'/src',
__DIR__.'/tests',
])
->withPhpSets()
->withRules([
AddVoidReturnTypeWhereNoReturnRector::class,
DeclareStrictTypesRector::class,
FinalizeTestCaseClassRector::class,
RemoveUnusedVariableAssignRector::class,
RemoveUselessParamTagRector::class,
RemoveUselessReturnTagRector::class,
TypedPropertyFromAssignsRector::class,
TypedPropertyFromStrictConstructorRector::class,
TypedPropertyFromStrictSetUpRector::class,
])
->withImportNames(importShortClasses: false, removeUnusedImports: true)
;
Loading