<?php require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/config.php'; require_once dirname(dirname(__FILE__)) . '/locallib.php'; require_once dirname(dirname(__FILE__)) . '/lib.php'; $bbbsession['salt'] = trim($CFG->BigBlueButtonSaltKey); $bbbsession['url'] = trim(trim($CFG->ServerURLforBigBlueButton), '/') . '/'; $id = optional_param('id', 0, PARAM_INT); $cm = get_coursemodule_from_id('streamline', $id, 0, false, MUST_EXIST); $streamline = $DB->get_record('streamline', array('id' => $cm->instance), '*', MUST_EXIST); $meeting = $streamline->meetingid; $course = $streamline->course; $ids = $streamline->id; $dash = "-"; $meetingid = $meeting . $dash . $course . $dash . $ids; $meetingRunningUrl = bigbluebuttonbn_getIsMeetingRunningURL($meetingid, $bbbsession['url'], $bbbsession['salt']); $recordingsURL = bigbluebuttonbn_getRecordingsArray($meetingid, $bbbsession['url'], $bbbsession['salt']); $end_meeting_url = end_meeting(); $userID = $USER->id; $context = context_module::instance($cm->id); $context = context_course::instance($COURSE->id); $roles = get_user_roles($context, $USER->id, true); $participants = $streamline->participants; if ($streamline->participants == null || $streamline->participants == "[]") { //The room that is being used comes from a previous version $moderator = has_capability('mod/streamline:moderate', $context); } else { $moderator = bigbluebuttonbn_is_moderator($userID, $roles, $participants); } $administrator = has_capability('moodle/category:manage', $context); //104.155.215.138
function bigbluebuttonbn_getMeetingXML($meetingID, $URL, $SALT) { $xml = bigbluebuttonbn_wrap_simplexml_load_file(bigbluebuttonbn_getIsMeetingRunningURL($meetingID, $URL, $SALT)); if ($xml && $xml->returncode == 'SUCCESS') { return str_replace('</response>', '', str_replace("<?xml version=\"1.0\"?>\n<response>", '', $xml->asXML())); } else { return 'false'; } }
function bigbluebuttonbn_view_joining($bbbsession, $context, $streamline) { global $CFG, $DB; $joining = false; // If user is administrator, moderator or if is viewer and no waiting is required if ($bbbsession['flag']['administrator'] || $bbbsession['flag']['moderator'] || !$bbbsession['flag']['wait']) { // // Join directly // $metadata = array("meta_origin" => $bbbsession['origin'], "meta_originVersion" => $bbbsession['originVersion'], "meta_originServerName" => $bbbsession['originServerName'], "meta_originServerCommonName" => $bbbsession['originServerCommonName'], "meta_originTag" => $bbbsession['originTag'], "meta_context" => $bbbsession['context'], "meta_contextActivity" => $bbbsession['contextActivity'], "meta_contextActivityDescription" => $bbbsession['contextActivityDescription'], "meta_recording" => $bbbsession['textflag']['record']); $response = bigbluebuttonbn_getCreateMeetingArray($bbbsession['meetingname'], $bbbsession['meetingid'], $bbbsession['welcome'], $bbbsession['modPW'], $bbbsession['viewerPW'], $bbbsession['salt'], $bbbsession['url'], $bbbsession['logoutURL'], $bbbsession['textflag']['record'], $bbbsession['timeduration'], $bbbsession['voicebridge'], $metadata); if (!$response) { // If the server is unreachable, then prompts the user of the necessary action if ($bbbsession['flag']['administrator']) { print_error('view_error_unable_join', 'streamline', $CFG->wwwroot . '/admin/settings.php?section=modsettingbigbluebuttonbn'); } else { if ($bbbsession['flag']['moderator']) { print_error('view_error_unable_join_teacher', 'streamline', $CFG->wwwroot . '/admin/settings.php?section=modsettingbigbluebuttonbn'); } else { print_error('view_error_unable_join_student', 'streamline', $CFG->wwwroot . '/admin/settings.php?section=modsettingbigbluebuttonbn'); } } } else { if ($response['returncode'] == "FAILED") { // The meeting was not created $error_key = bigbluebuttonbn_get_error_key($response['messageKey'], 'view_error_create'); if (!$error_key) { print_error($response['message'], 'streamline'); } else { print_error($error_key, 'streamline'); } } else { if ($response['hasBeenForciblyEnded'] == "true") { print_error(get_string('index_error_forciblyended', 'streamline')); } else { ///////////////Everything is ok ///////////////////// /// Moodle event logger: Create an event for meeting created if ($CFG->version < '2014051200') { //This is valid before v2.7 add_to_log($bbbsession['courseid'], 'streamline', 'meeting created', '', $streamline->name, $bbbsession['cm']->id); } else { //This is valid after v2.7 $event = \mod_streamline\event\bigbluebuttonbn_meeting_created::create(array('context' => $context, 'objectid' => $streamline->id)); $event->trigger(); } /// Internal logger: Instert a record with the meeting created bigbluebuttonbn_log($bbbsession, 'Create'); if (groups_get_activity_groupmode($bbbsession['cm']) > 0 && count(groups_get_activity_allowed_groups($bbbsession['cm'])) > 1) { print "<br>" . get_string('view_groups_selection', 'streamline') . " <input type='button' onClick='M.mod_streamline.joinURL()' value='" . get_string('view_groups_selection_join', 'streamline') . "'>"; } else { $joining = true; if ($bbbsession['flag']['administrator'] || $bbbsession['flag']['moderator']) { print "<br />" . get_string('view_login_moderator', 'streamline') . "<br /><br />"; } else { print "<br />" . get_string('view_login_viewer', 'streamline') . "<br /><br />"; } print "<center><img src='pix/loading.gif' /></center>"; } /// Moodle event logger: Create an event for meeting joined if ($CFG->version < '2014051200') { //This is valid before v2.7 add_to_log($bbbsession['courseid'], 'streamline', 'meeting joined', '', $streamline->name, $bbbsession['cm']->id); } else { //This is valid after v2.7 $event = \mod_streamline\event\bigbluebuttonbn_meeting_joined::create(array('context' => $context, 'objectid' => $streamline->id)); $event->trigger(); } } } } } else { // // "Viewer" && Waiting for moderator is required; // $joining = true; print "<div align='center'>"; if (bigbluebuttonbn_wrap_simplexml_load_file(bigbluebuttonbn_getIsMeetingRunningURL($bbbsession['meetingid'], $bbbsession['url'], $bbbsession['salt'])) == "true") { /// Since the meeting is already running, we just join the session print "<br />" . get_string('view_login_viewer', 'streamline') . "<br /><br />"; print "<center><img src='pix/loading.gif' /></center>"; /// Moodle event logger: Create an event for meeting joined if ($CFG->version < '2014051200') { //This is valid before v2.7 add_to_log($bbbsession['courseid'], 'streamline', 'meeting joined', '', $streamline->name, $bbbsession['cm']->id); } else { //This is valid after v2.7 $event = \mod_streamline\event\bigbluebuttonbn_meeting_joined::create(array('context' => $context, 'objectid' => $streamline->id)); $event->trigger(); } } else { /// Since the meeting is not running, the spining wheel is shown print "<br />" . get_string('view_wait', 'streamline') . "<br /><br />"; print '<center><img src="pix/polling.gif"></center>'; } print "</div>"; } return $joining; }