mirror of https://github.com/sualko/cloud_bbb
Compare commits
11 Commits
bacd491526
...
506658597d
Author | SHA1 | Date |
---|---|---|
Jonas | 506658597d | |
Baptiste Fotia | c2e61304c1 | |
Sébastien Marinier | c5f8eab5e5 | |
Sebastien Marinier | 632ea4a0f5 | |
Sébastien Marinier | e70ddcc322 | |
Sebastien Marinier | 6226921652 | |
Sebastien Marinier | bbf0abfa75 | |
Sebastien Marinier | 63982ac2e7 | |
Sebastien Marinier | 9f2d820d63 | |
Sebastien Marinier | 9fd051ac3b | |
brtbr | 668a711dfa |
|
@ -12,7 +12,10 @@ jobs:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
php-versions: ['8.0', '8.1', '8.2']
|
php-versions: ['8.0', '8.1', '8.2']
|
||||||
nextcloud-versions: ['stable26', 'stable27', 'stable28']
|
nextcloud-versions: ['stable26', 'stable27', 'stable28', 'stable29', 'stable30']
|
||||||
|
exclude:
|
||||||
|
- php-versions: '8.0'
|
||||||
|
nextcloud-versions: 'stable30'
|
||||||
name: php${{ matrix.php-versions }} on ${{ matrix.nextcloud-versions }} unit tests
|
name: php${{ matrix.php-versions }} on ${{ matrix.nextcloud-versions }} unit tests
|
||||||
env:
|
env:
|
||||||
CI: true
|
CI: true
|
||||||
|
|
|
@ -6,7 +6,11 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
ocp-version: [ '^28', '^27', '^26']
|
ocp-version: [ "^30", "^29", '^28', '^27', '^26']
|
||||||
|
include:
|
||||||
|
- psrcontainer: "psr/container"
|
||||||
|
- psrcontainer: "psr/container:^1.1.2"
|
||||||
|
ocp-version: '^26'
|
||||||
name: Nextcloud ${{ matrix.ocp-version }}
|
name: Nextcloud ${{ matrix.ocp-version }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
|
@ -21,7 +25,7 @@ jobs:
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: composer i
|
run: composer i
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: composer require --dev nextcloud/ocp:${{ matrix.ocp-version }} symfony/service-contracts
|
run: composer require --dev nextcloud/ocp:${{ matrix.ocp-version }} ${{ matrix.psrcontainer }} symfony/service-contracts
|
||||||
- name: Run coding standards check
|
- name: Run coding standards check
|
||||||
run: composer run psalm
|
run: composer run psalm
|
||||||
|
|
||||||
|
|
|
@ -77,6 +77,7 @@ Key | Description
|
||||||
`app.shortener` | Value of your shortener service. Should start with `https://` and contain `{token}`.
|
`app.shortener` | Value of your shortener service. Should start with `https://` and contain `{token}`.
|
||||||
`avatar.path` | Absolute path to an optional avatar cache directory.
|
`avatar.path` | Absolute path to an optional avatar cache directory.
|
||||||
`avatar.url` | URL which serves `avatar.path` to be used as avatar cache.
|
`avatar.url` | URL which serves `avatar.path` to be used as avatar cache.
|
||||||
|
`avatar.enabled` | Set to `false` if you want to disable the use of Nextcloud avatars in BBB rooms.
|
||||||
|
|
||||||
### Avatar cache (v2.2+)
|
### Avatar cache (v2.2+)
|
||||||
The generation of avatars puts a high load on your Nextcloud instance, since the
|
The generation of avatars puts a high load on your Nextcloud instance, since the
|
||||||
|
@ -111,8 +112,8 @@ For additional security, we recommend to disable directory listing, symlinks and
|
||||||
any language interpreter such as php for the cache directory.
|
any language interpreter such as php for the cache directory.
|
||||||
|
|
||||||
Cached avatars are usually deleted as soon as the meeting ends. In cases the BBB
|
Cached avatars are usually deleted as soon as the meeting ends. In cases the BBB
|
||||||
server shuts down unexpected, we provide the `bbb:clear-avatar-cache` occ
|
server shuts down unexpected or you set `avatar.enabled` to `false` (via gui or manually) while a meeting was running,
|
||||||
command (example use: `./occ bbb:clear-avatar-cache`).
|
we provide the `bbb:clear-avatar-cache` occ command (example use: `./occ bbb:clear-avatar-cache`).
|
||||||
|
|
||||||
|
|
||||||
## :bowtie: User guide
|
## :bowtie: User guide
|
||||||
|
|
|
@ -22,7 +22,7 @@ Contributors are welcome! If you have time it would be awesome if you could help
|
||||||
|
|
||||||
*This app integrates BigBlueButton and is not endorsed or certified by BigBlueButton Inc. BigBlueButton and the BigBlueButton Logo are trademarks of BigBlueButton Inc.*
|
*This app integrates BigBlueButton and is not endorsed or certified by BigBlueButton Inc. BigBlueButton and the BigBlueButton Logo are trademarks of BigBlueButton Inc.*
|
||||||
]]></description>
|
]]></description>
|
||||||
<version>2.7.2</version>
|
<version>2.7.3</version>
|
||||||
<licence>agpl</licence>
|
<licence>agpl</licence>
|
||||||
<author mail="cloud_bbb@arawa.fr" homepage="https://arawa.fr/">Arawa</author>
|
<author mail="cloud_bbb@arawa.fr" homepage="https://arawa.fr/">Arawa</author>
|
||||||
<author>Klaus Herberth</author>
|
<author>Klaus Herberth</author>
|
||||||
|
@ -44,7 +44,7 @@ Contributors are welcome! If you have time it would be awesome if you could help
|
||||||
<lib>curl</lib>
|
<lib>curl</lib>
|
||||||
<lib>mbstring</lib>
|
<lib>mbstring</lib>
|
||||||
<lib>SimpleXML</lib>
|
<lib>SimpleXML</lib>
|
||||||
<nextcloud min-version="26" max-version="28"/>
|
<nextcloud min-version="26" max-version="30"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<commands>
|
<commands>
|
||||||
<command>OCA\BigBlueButton\Command\ClearAvatarCache</command>
|
<command>OCA\BigBlueButton\Command\ClearAvatarCache</command>
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
"phpstan/phpstan": "^0.12.29",
|
"phpstan/phpstan": "^0.12.29",
|
||||||
"nextcloud/ocp": "^25.0 || ^26.0 || ^27.0",
|
"nextcloud/ocp": "^25.0 || ^26.0 || ^27.0",
|
||||||
"vimeo/psalm": "^5.0",
|
"vimeo/psalm": "^5.0",
|
||||||
"psr/container": "^1.1.2"
|
"psr/container": "^1.1.2 || ^2.0.2"
|
||||||
},
|
},
|
||||||
"config": {
|
"config": {
|
||||||
"optimize-autoloader": true,
|
"optimize-autoloader": true,
|
||||||
|
|
|
@ -131,10 +131,12 @@ class API {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($uid) {
|
if ($uid) {
|
||||||
$avatarUrl = $this->avatarRepository->getAvatarUrl($room, $uid);
|
|
||||||
|
|
||||||
$joinMeetingParams->setUserID($uid);
|
$joinMeetingParams->setUserID($uid);
|
||||||
$joinMeetingParams->setAvatarURL($avatarUrl);
|
|
||||||
|
if ($this->config->getAppValue('bbb', 'avatar.enabled', 'true') === 'true') {
|
||||||
|
$avatarUrl = $this->avatarRepository->getAvatarUrl($room, $uid);
|
||||||
|
$joinMeetingParams->setAvatarURL($avatarUrl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->getServer()->getJoinMeetingURL($joinMeetingParams);
|
return $this->getServer()->getJoinMeetingURL($joinMeetingParams);
|
||||||
|
|
|
@ -7,6 +7,7 @@ use OCA\BigBlueButton\Db\Room;
|
||||||
use OCA\BigBlueButton\Event\MeetingEndedEvent;
|
use OCA\BigBlueButton\Event\MeetingEndedEvent;
|
||||||
use OCA\BigBlueButton\Event\RecordingReadyEvent;
|
use OCA\BigBlueButton\Event\RecordingReadyEvent;
|
||||||
use OCA\BigBlueButton\Service\RoomService;
|
use OCA\BigBlueButton\Service\RoomService;
|
||||||
|
use OCP\IConfig;
|
||||||
use OCP\AppFramework\Controller;
|
use OCP\AppFramework\Controller;
|
||||||
use OCP\EventDispatcher\IEventDispatcher;
|
use OCP\EventDispatcher\IEventDispatcher;
|
||||||
use OCP\IRequest;
|
use OCP\IRequest;
|
||||||
|
@ -27,18 +28,23 @@ class HookController extends Controller {
|
||||||
/** @var IEventDispatcher */
|
/** @var IEventDispatcher */
|
||||||
private $eventDispatcher;
|
private $eventDispatcher;
|
||||||
|
|
||||||
|
/** @var IConfig */
|
||||||
|
private $config;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
string $appName,
|
string $appName,
|
||||||
IRequest $request,
|
IRequest $request,
|
||||||
RoomService $service,
|
RoomService $service,
|
||||||
AvatarRepository $avatarRepository,
|
AvatarRepository $avatarRepository,
|
||||||
IEventDispatcher $eventDispatcher
|
IEventDispatcher $eventDispatcher,
|
||||||
|
IConfig $config
|
||||||
) {
|
) {
|
||||||
parent::__construct($appName, $request);
|
parent::__construct($appName, $request);
|
||||||
|
|
||||||
$this->service = $service;
|
$this->service = $service;
|
||||||
$this->avatarRepository = $avatarRepository;
|
$this->avatarRepository = $avatarRepository;
|
||||||
$this->eventDispatcher = $eventDispatcher;
|
$this->eventDispatcher = $eventDispatcher;
|
||||||
|
$this->config = $config;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setToken(string $token): void {
|
public function setToken(string $token): void {
|
||||||
|
@ -65,7 +71,9 @@ class HookController extends Controller {
|
||||||
|
|
||||||
$this->service->updateRunning($room->getId(), false);
|
$this->service->updateRunning($room->getId(), false);
|
||||||
|
|
||||||
$this->avatarRepository->clearRoom($room->uid);
|
if ($this->config->getAppValue('bbb', 'avatar.enabled', 'true') === 'true') {
|
||||||
|
$this->avatarRepository->clearRoom($room->uid);
|
||||||
|
}
|
||||||
|
|
||||||
$this->eventDispatcher->dispatch(MeetingEndedEvent::class, new MeetingEndedEvent($room, $recordingmarks));
|
$this->eventDispatcher->dispatch(MeetingEndedEvent::class, new MeetingEndedEvent($room, $recordingmarks));
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,12 @@ use OCP\AppFramework\Http\ContentSecurityPolicy;
|
||||||
use OCP\AppFramework\Http\Response;
|
use OCP\AppFramework\Http\Response;
|
||||||
use OCP\Template;
|
use OCP\Template;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @template-extends Response<int, array<string, mixed>>
|
||||||
|
*
|
||||||
|
* (NC < 28)
|
||||||
|
* @psalm-suppress TooManyTemplateParams
|
||||||
|
*/
|
||||||
class NoPermissionResponse extends Response {
|
class NoPermissionResponse extends Response {
|
||||||
public function __construct() {
|
public function __construct() {
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
|
|
|
@ -6,6 +6,12 @@ use OCP\AppFramework\Http\ContentSecurityPolicy;
|
||||||
use OCP\AppFramework\Http\Response;
|
use OCP\AppFramework\Http\Response;
|
||||||
use OCP\Template;
|
use OCP\Template;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @template-extends Response<int, array<string, mixed>>
|
||||||
|
*
|
||||||
|
* (NC < 28)
|
||||||
|
* @psalm-suppress TooManyTemplateParams
|
||||||
|
*/
|
||||||
class NotFoundResponse extends Response {
|
class NotFoundResponse extends Response {
|
||||||
public function __construct() {
|
public function __construct() {
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
|
|
|
@ -30,6 +30,7 @@ class Admin implements ISettings {
|
||||||
'join.theme' => $this->config->getAppValue('bbb', 'join.theme') === 'true' ? 'checked' : '',
|
'join.theme' => $this->config->getAppValue('bbb', 'join.theme') === 'true' ? 'checked' : '',
|
||||||
'app.shortener' => $this->config->getAppValue('bbb', 'app.shortener'),
|
'app.shortener' => $this->config->getAppValue('bbb', 'app.shortener'),
|
||||||
'join.mediaCheck' => $this->config->getAppValue('bbb', 'join.mediaCheck', 'true') === 'true' ? 'checked' : '',
|
'join.mediaCheck' => $this->config->getAppValue('bbb', 'join.mediaCheck', 'true') === 'true' ? 'checked' : '',
|
||||||
|
'avatar.enabled' => $this->config->getAppValue('bbb', 'avatar.enabled', 'true') === 'true' ? 'checked' : '',
|
||||||
];
|
];
|
||||||
|
|
||||||
return new TemplateResponse('bbb', 'admin', $parameters);
|
return new TemplateResponse('bbb', 'admin', $parameters);
|
||||||
|
|
|
@ -29,6 +29,11 @@ script('bbb', 'restrictions');
|
||||||
<label for="bbb-join-theme"><?php p($l->t('Use Nextcloud theme in BigBlueButton.')); ?></label>
|
<label for="bbb-join-theme"><?php p($l->t('Use Nextcloud theme in BigBlueButton.')); ?></label>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<input type="checkbox" name="avatar.enabled" id="bbb-avatar-enabled" class="checkbox bbb-setting" value="1" <?php p($_['avatar.enabled']); ?> />
|
||||||
|
<label for="bbb-avatar-enabled"><?php p($l->t('Use Nextcloud avatars in BBB rooms.')); ?></label>
|
||||||
|
</p>
|
||||||
|
|
||||||
<h3><?php p($l->t('Default Room Settings')); ?></h3>
|
<h3><?php p($l->t('Default Room Settings')); ?></h3>
|
||||||
<p><?php p($l->t('Below you can change some default values, which are used to create a new room.')); ?></p>
|
<p><?php p($l->t('Below you can change some default values, which are used to create a new room.')); ?></p>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue