Skip to content

Instantly share code, notes, and snippets.

@nadavkav
Created March 19, 2020 19:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nadavkav/30017fec6b79ce51b689261be49eff03 to your computer and use it in GitHub Desktop.
Save nadavkav/30017fec6b79ce51b689261be49eff03 to your computer and use it in GitHub Desktop.
Bigbluebutton API getmeetings (PHP) Moodle
//https://docs.bigbluebutton.org/dev/api.html#getmeetings
// Adhoc task that keep updating the BBB load params every X minutes.
$bbb_api_getmeetings_xml = file_get_contents('https://bbb-service.edu/bigbluebutton/api/getMeetings?checksum=7fd047728b989f36bffdc3337a08f334a5');
$xml = simplexml_load_string($bbb_api_getmeetings_xml, "SimpleXMLElement", LIBXML_NOCDATA);
$json = json_encode($xml);
$meeting_array = json_decode($json,TRUE);
//var_dump($meeting_array['meetings']);
//die;
$bbb_usersessions = 0;
$bbb_usersessions_video = 0;
$bbb_usersessions_audio = 0;
$meetingid = 0;
$display_meeting = [];
foreach($meeting_array['meetings']['meeting'] as $meeting) {
$display_meeting[$meetingid]['meetingName'] = $meeting['meetingName'];
$display_meeting[$meetingid]['createDate'] = $meeting['createDate'];
$display_meeting[$meetingid]['running'] = $meeting['running'];
$display_meeting[$meetingid]['moderatorCount'] = $meeting['moderatorCount'];
$display_meeting[$meetingid]['participantCount'] = $meeting['participantCount'];
$display_meeting[$meetingid]['videoCount'] = $meeting['videoCount'];
$display_meeting[$meetingid]['voiceParticipantCount'] = $meeting['voiceParticipantCount'];
$meetingid++;
$bbb_usersessions .= (int)$meeting['participantCount'];
$bbb_usersessions_video .= (int)$meeting['videoCount'];
$bbb_usersessions_audio .= (int)$meeting['voiceParticipantCount'];
}
//var_dump($display_meeting);
$bbb_rooms = count($meeting_array['meetings']['meeting']);
// TESTing...
//$bbb_usersessions = 60;
//$bbb_usersessions_video = 45;
//$bbb_usersessions_audio = 60;
//mtrace("debug: BBB rooms = ".$bbb_rooms );
set_config('bbb_rooms', $bbb_rooms, 'local_bbb');
set_config('bbb_usersessions', $bbb_usersessions, 'local_bbb');
set_config('bbb_usersessions_video', $bbb_usersessions_video, 'local_bbb');
set_config('bbb_usersessions_audio', $bbb_usersessions_audio, 'local_bbb');
function lti_launch_tool($instance) {
// Stop users from getting into a BBB session if server is overloaded.
global $DB, $CFG;
$ltitypes = $DB->get_record('lti_types', array('id' => $instance->typeid), '*', MUST_EXIST);
if (strpos($ltitypes->name, 'BBB')) {
$bbb_usersessions = get_config('local_bbb', 'bbb_usersessions');
if ($bbb_usersessions > $CFG->bbb_usersessions_limit) {
echo "BBB server is overloaded, please try again in a few minutes";
return;
}
}
// ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment