BBB: Add big_blue_button_students_start_conference_in_groups

See BT#18099
pull/3859/head
Julio Montoya 5 years ago
parent d3557a32ab
commit 20d8617108
  1. 2
      plugin/bbb/lang/english.php
  2. 1
      plugin/bbb/lang/french.php
  3. 21
      plugin/bbb/lib/bbb.lib.php
  4. 4
      plugin/bbb/lib/bbb_plugin.class.php
  5. 28
      plugin/bbb/listing.php
  6. 3
      plugin/bbb/start.php

@ -81,3 +81,5 @@ $strings['ThereIsNoVideoConferenceActive'] = 'There is no videoconference curren
$strings['RoomClosed'] = 'Room closed';
$strings['RoomClosedComment'] = ' ';
$strings['meeting_duration'] = 'Meeting duration (in minutes)';
$strings['big_blue_button_students_start_conference_in_groups'] = 'Allow students to start conference in their groups.';

@ -76,3 +76,4 @@ $strings['SetByStudent'] = 'Choisi par l\'apprenant';
$strings['bbb_force_record_generation'] = 'Forcer la génération de l\'enregistrement à la fin de la session';
$strings['ThereIsNoVideoConferenceActive'] = "Il n'y a aucune vidéoconférence actuellement active";
$strings['meeting_duration'] = 'Durée de la conférence (en minutes)';
$strings['big_blue_button_students_start_conference_in_groups'] = 'Permettre aux apprenants de démarrer les vidéoconferénces de leurs groupes';

@ -669,6 +669,27 @@ class bbb
}
$courseInfo = api_get_course_info();
$groupId = api_get_group_id();
if (!empty($groupId) && !empty($courseInfo)) {
$groupEnabled = api_get_course_plugin_setting('bbb', 'bbb_enable_conference_in_groups') === '1';
if ($groupEnabled) {
$studentCanStartConference = api_get_course_plugin_setting(
'bbb',
'big_blue_button_students_start_conference_in_groups'
) === '1';
if ($studentCanStartConference) {
$isSubscribed = GroupManager::is_user_in_group(
api_get_user_id(),
GroupManager::get_group_properties($groupId)
);
if ($isSubscribed) {
return true;
}
}
}
}
if (!empty($courseInfo)) {
return api_is_course_admin();

@ -41,6 +41,10 @@ class BBBPlugin extends Plugin
'name' => 'bbb_force_record_generation',
'type' => 'checkbox',
],
[
'name' => 'big_blue_button_students_start_conference_in_groups',
'type' => 'checkbox',
],
];
/**

@ -23,8 +23,9 @@ $roomTable = Database::get_main_table('plugin_bbb_room');
$htmlHeadXtra[] = api_get_js_simple(api_get_path(WEB_PLUGIN_PATH).'bbb/resources/utils.js');
$action = isset($_GET['action']) ? $_GET['action'] : '';
$action = $_GET['action'] ?? '';
$userId = api_get_user_id();
$groupId = api_get_group_id();
$bbb = new bbb('', '', $isGlobal, $isGlobalPerUser);
@ -36,7 +37,7 @@ if ($bbb->isGlobalConference()) {
}
$courseInfo = api_get_course_info();
$courseCode = isset($courseInfo['code']) ? $courseInfo['code'] : '';
$courseCode = $courseInfo['code'] ?? '';
$message = '';
if ($conferenceManager) {
@ -272,7 +273,7 @@ if ($conferenceManager) {
break;
}
} else {
if ($action == 'logout') {
if ($action === 'logout') {
// Update out_at field of user
$remoteId = Database::escape_string($_GET['remote_id']);
$meetingData = Database::select(
@ -334,7 +335,7 @@ if ($conferenceManager) {
$meetings = $bbb->getMeetings(
api_get_course_int_id(),
api_get_session_id(),
api_get_group_id()
$groupId
);
if (!empty($meetings)) {
$meetings = array_reverse($meetings);
@ -353,6 +354,24 @@ if ($bbb->isGlobalConference() && $bbb->isGlobalConferencePerUserEnabled()) {
$userCanSeeJoinButton = true;
}
if (!empty($groupId) && false === $userCanSeeJoinButton) {
$isSubscribed = GroupManager::is_subscribed(api_get_user_id(), GroupManager::get_group_properties($groupId));
if ($isSubscribed) {
$groupEnabled = api_get_course_plugin_setting(
'bbb',
'bbb_enable_conference_in_groups',
$courseInfo
) === '1';
$studentCanStartConference = api_get_course_plugin_setting(
'bbb',
'big_blue_button_students_start_conference_in_groups',
$courseInfo
) === '1';
$userCanSeeJoinButton = $groupEnabled && $studentCanStartConference;
}
}
if (($meetingExists || $userCanSeeJoinButton) && ($maxUsers == 0 || $maxUsers > $usersOnline)) {
$showJoinButton = true;
}
@ -376,7 +395,6 @@ if ($bbb->isGlobalConference() === false &&
</script>';
$form = new FormValidator(api_get_self().'?'.api_get_cidreq());
$groupId = api_get_group_id();
if ($conferenceManager) {
$groups = GroupManager::get_groups();
} else {

@ -1,4 +1,5 @@
<?php
/* For license terms, see /license.txt */
/**
@ -8,7 +9,7 @@ require_once __DIR__.'/../../vendor/autoload.php';
$course_plugin = 'bbb'; //needed in order to load the plugin lang variables
$isGlobal = isset($_GET['global']) ? true : false;
$isGlobal = isset($_GET['global']);
$isGlobalPerUser = isset($_GET['user_id']) ? (int) $_GET['user_id'] : false;
// If global setting is used then we delete the course sessions (cidReq/id_session)

Loading…
Cancel
Save