Compare commits

...

11 Commits

Author SHA1 Message Date
Jonas 506658597d
Merge 668a711dfa into c2e61304c1 2024-11-30 19:06:16 +00:00
Baptiste Fotia c2e61304c1
Merge pull request #307 from arawa/release/2.7.3
Release/2.7.3
2024-11-28 16:22:15 +01:00
Sébastien Marinier c5f8eab5e5
Merge branch 'master' into release/2.7.3 2024-11-19 18:04:01 +01:00
Sebastien Marinier 632ea4a0f5 chore: can't test 8.3 2024-11-13 15:58:35 +01:00
Sébastien Marinier e70ddcc322
Merge branch 'littleredbutton:master' into release/2.7.3 2024-11-13 14:49:58 +01:00
Sebastien Marinier 6226921652 fix: gitactions (psalm warnings NC < 28) 2024-10-28 15:14:22 +01:00
Sebastien Marinier bbf0abfa75 fix: gitactions psalm warnings 2024-10-28 14:59:01 +01:00
Sebastien Marinier 63982ac2e7 fix: gitactions psr 1.1.2 OR 2.0.2 2024-10-28 14:46:51 +01:00
Sebastien Marinier 9f2d820d63 fix: gitactions (psr 1.1.2 / NC 26) 2024-10-28 14:36:09 +01:00
Sebastien Marinier 9fd051ac3b release: 2.7.3 2024-10-28 12:30:22 +01:00
brtbr 668a711dfa feat: add option to not use avatars in BBB rooms
This commit adds an admin option to disable the use of Nextcloud avatars
in BBB rooms.

If an avatar-cache is configured and a meeting is running while changing
this setting, the avatars of these meetings will not be cleared. In that
case the command-line argument (see README) needs to be used.

Fixes issue #268
2024-06-02 02:08:14 +02:00
11 changed files with 49 additions and 13 deletions

View File

@ -12,7 +12,10 @@ jobs:
strategy:
matrix:
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
env:
CI: true

View File

@ -6,7 +6,11 @@ jobs:
runs-on: ubuntu-latest
strategy:
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 }}
steps:
- name: Checkout
@ -21,7 +25,7 @@ jobs:
- name: Install dependencies
run: composer i
- 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
run: composer run psalm

View File

@ -77,6 +77,7 @@ Key | Description
`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.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+)
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.
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
command (example use: `./occ bbb:clear-avatar-cache`).
server shuts down unexpected or you set `avatar.enabled` to `false` (via gui or manually) while a meeting was running,
we provide the `bbb:clear-avatar-cache` occ command (example use: `./occ bbb:clear-avatar-cache`).
## :bowtie: User guide

View File

@ -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.*
]]></description>
<version>2.7.2</version>
<version>2.7.3</version>
<licence>agpl</licence>
<author mail="cloud_bbb@arawa.fr" homepage="https://arawa.fr/">Arawa</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>mbstring</lib>
<lib>SimpleXML</lib>
<nextcloud min-version="26" max-version="28"/>
<nextcloud min-version="26" max-version="30"/>
</dependencies>
<commands>
<command>OCA\BigBlueButton\Command\ClearAvatarCache</command>

View File

@ -18,7 +18,7 @@
"phpstan/phpstan": "^0.12.29",
"nextcloud/ocp": "^25.0 || ^26.0 || ^27.0",
"vimeo/psalm": "^5.0",
"psr/container": "^1.1.2"
"psr/container": "^1.1.2 || ^2.0.2"
},
"config": {
"optimize-autoloader": true,

View File

@ -131,10 +131,12 @@ class API {
}
if ($uid) {
$avatarUrl = $this->avatarRepository->getAvatarUrl($room, $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);

View File

@ -7,6 +7,7 @@ use OCA\BigBlueButton\Db\Room;
use OCA\BigBlueButton\Event\MeetingEndedEvent;
use OCA\BigBlueButton\Event\RecordingReadyEvent;
use OCA\BigBlueButton\Service\RoomService;
use OCP\IConfig;
use OCP\AppFramework\Controller;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IRequest;
@ -27,18 +28,23 @@ class HookController extends Controller {
/** @var IEventDispatcher */
private $eventDispatcher;
/** @var IConfig */
private $config;
public function __construct(
string $appName,
IRequest $request,
RoomService $service,
AvatarRepository $avatarRepository,
IEventDispatcher $eventDispatcher
IEventDispatcher $eventDispatcher,
IConfig $config
) {
parent::__construct($appName, $request);
$this->service = $service;
$this->avatarRepository = $avatarRepository;
$this->eventDispatcher = $eventDispatcher;
$this->config = $config;
}
public function setToken(string $token): void {
@ -65,7 +71,9 @@ class HookController extends Controller {
$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));
}

View File

@ -6,6 +6,12 @@ use OCP\AppFramework\Http\ContentSecurityPolicy;
use OCP\AppFramework\Http\Response;
use OCP\Template;
/**
* @template-extends Response<int, array<string, mixed>>
*
* (NC < 28)
* @psalm-suppress TooManyTemplateParams
*/
class NoPermissionResponse extends Response {
public function __construct() {
parent::__construct();

View File

@ -6,6 +6,12 @@ use OCP\AppFramework\Http\ContentSecurityPolicy;
use OCP\AppFramework\Http\Response;
use OCP\Template;
/**
* @template-extends Response<int, array<string, mixed>>
*
* (NC < 28)
* @psalm-suppress TooManyTemplateParams
*/
class NotFoundResponse extends Response {
public function __construct() {
parent::__construct();

View File

@ -30,6 +30,7 @@ class Admin implements ISettings {
'join.theme' => $this->config->getAppValue('bbb', 'join.theme') === 'true' ? 'checked' : '',
'app.shortener' => $this->config->getAppValue('bbb', 'app.shortener'),
'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);

View File

@ -29,6 +29,11 @@ script('bbb', 'restrictions');
<label for="bbb-join-theme"><?php p($l->t('Use Nextcloud theme in BigBlueButton.')); ?></label>
</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>
<p><?php p($l->t('Below you can change some default values, which are used to create a new room.')); ?></p>