//Eliminates duplicates $mIDs = array(); foreach ($results as $result) { $mIDs[$result->meetingid] = $result->meetingid; } //Generates the meetingID string foreach ($mIDs as $mID) { if (strlen($meetingID) > 0) { $meetingID .= ','; } $meetingID .= $mID; } } //If there are meetings with recordings load the data to the table if ($meetingID != '') { $recordingsbn = bigbluebuttonbn_getRecordingsArray($meetingID, $url, $shared_secret); if (isset($recordingsbn) && !isset($recordingsbn['messageKey'])) { foreach ($recordingsbn as $recording) { if ($moderator || $recording['published'] == 'true') { $length = 0; $endTime = isset($recording['endTime']) ? floatval($recording['endTime']) : 0; $endTime = $endTime - $endTime % 1000; $startTime = isset($recording['startTime']) ? floatval($recording['startTime']) : 0; $startTime = $startTime - $startTime % 1000; $duration = intval(($endTime - $startTime) / 60000); //$meta_course = isset($recording['meta_context'])?str_replace('"', '\"', $recording['meta_context']):''; $meta_activity = isset($recording['meta_contextactivity']) ? str_replace('"', '\\"', $recording['meta_contextactivity']) : ''; $meta_description = isset($recording['meta_contextactivitydescription']) ? str_replace('"', '\\"', $recording['meta_contextactivitydescription']) : ''; $actionbar = ''; $params['id'] = $cm->id; $params['recordingid'] = $recording['recordID'];
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 $ipaddress = trim($CFG->ServerURLforBigBlueButton);
function bigbluebuttonbn_getRecordingsArrayByCourse($courseID, $URL, $SALT) { $recordings = array(); // Load the meetingIDs to be used in the getRecordings request $meetingID = ''; if (is_numeric($courseID)) { $results = bigbluebuttonbn_getRecordedMeetings($courseID); if (bigbluebuttonbn_get_cfg_importrecordings_from_deleted_activities_enabled()) { $results_deleted = bigbluebuttonbn_getRecordedMeetingsDeleted($courseID); $results = array_merge($results, $results_deleted); } if ($results) { //Eliminates duplicates $mIDs = array(); foreach ($results as $result) { $mIDs[$result->meetingid] = $result->meetingid; } //Generates the meetingID string foreach ($mIDs as $mID) { if (strlen($meetingID) > 0) { $meetingID .= ','; } $meetingID .= $mID; } } } // If there were meetingIDs excecute the getRecordings request if ($meetingID != '') { $recordings = bigbluebuttonbn_getRecordingsArray($meetingID, $URL, $SALT); } return $recordings; }
function bigbluebuttonbn_view_after($bbbsession) { $recordingsArray = bigbluebuttonbn_getRecordingsArray($bbbsession['meetingid'], $bbbsession['url'], $bbbsession['salt']); if (!isset($recordingsArray) || array_key_exists('messageKey', $recordingsArray)) { // There are no recordings for this meeting if ($bbbsession['flag']['record']) { print_string('bbbnorecordings', 'streamline'); } } else { // Actually, there are recordings for this meeting echo ' <center>' . "\n"; echo ' <table cellpadding="0" cellspacing="0" border="0" class="display" id="example">' . "\n"; echo ' <thead>' . "\n"; echo ' </thead>' . "\n"; echo ' <tbody>' . "\n"; echo ' </tbody>' . "\n"; echo ' <tfoot>' . "\n"; echo ' </tfoot>' . "\n"; echo ' </table>' . "\n"; echo ' </center>' . "\n"; } }
echo $params['callback'] . '({ "status": "false" });'; } } } else { error_log("ERROR: User not authorized to execute end command"); header("HTTP/1.0 401 Unauthorized. User not authorized to execute end command"); } break; case 'recording_publish': if ($bbbsession['managerecordings']) { $status = true; //Retrieve the array of imported recordings for the current course and activity $recordings_imported = bigbluebuttonbn_getRecordingsImportedArray($bbbsession['course']->id, isset($bbbsession['bigbluebuttonbn']) ? $bbbsession['bigbluebuttonbn']->id : NULL); $recordings_imported_indexed = bigbluebuttonbn_index_recordings($recordings_imported); if (isset($recordings_imported_indexed[$params['id']])) { $recordings = bigbluebuttonbn_getRecordingsArray($recordings_imported_indexed[$params['id']]['meetingID'], $bbbsession['endpoint'], $bbbsession['shared_secret']); $recordings_indexed = bigbluebuttonbn_index_recordings($recordings); $recording = $recordings_indexed[$params['id']]; if ($recording['published'] === 'true') { // Only if the physical recording is published, execute publish on imported recording link $meeting_info = bigbluebuttonbn_bbb_broker_do_publish_recording_imported($params['id'], $bbbsession['course']->id, $bbbsession['bigbluebuttonbn']->id, true); } else { // Send a message telling that it could not be unpublished $status = false; } } else { // As the recordingid was not identified as imported recording link, execute publish on a real recording $meeting_info = bigbluebuttonbn_bbb_broker_do_publish_recording($params['id'], true); } if ($status) { $callback_response['status'] = "true";
function bigbluebuttonbn_view_recordings($bbbsession) { global $CFG; if (isset($bbbsession['record']) && $bbbsession['record']) { $output = html_writer::tag('h4', get_string('view_section_title_recordings', 'bigbluebuttonbn')); $meetingID = ''; $results = bigbluebuttonbn_getRecordedMeetings($bbbsession['course']->id, $bbbsession['bigbluebuttonbn']->id); if ($results) { //Eliminates duplicates $mIDs = array(); foreach ($results as $result) { $mIDs[$result->meetingid] = $result->meetingid; } //Generates the meetingID string foreach ($mIDs as $mID) { if (strlen($meetingID) > 0) { $meetingID .= ','; } $meetingID .= $mID; } } // Get actual recordings if ($meetingID != '') { $recordings = bigbluebuttonbn_getRecordingsArray($meetingID, $bbbsession['endpoint'], $bbbsession['shared_secret']); } else { $recordings = array(); } // Get recording links $recordings_imported = bigbluebuttonbn_getRecordingsImportedArray($bbbsession['course']->id, $bbbsession['bigbluebuttonbn']->id); // Merge the recordings $recordings = array_merge($recordings, $recordings_imported); // Render the table $output .= bigbluebutton_output_recording_table($bbbsession, $recordings) . "\n"; if ($bbbsession['managerecordings'] && bigbluebuttonbn_get_cfg_importrecordings_enabled()) { $button_import_recordings = html_writer::tag('input', '', array('type' => 'button', 'value' => get_string('view_recording_button_import', 'bigbluebuttonbn'), 'onclick' => 'window.location=\'' . $CFG->wwwroot . '/mod/bigbluebuttonbn/import_view.php?bn=' . $bbbsession['bigbluebuttonbn']->id . '\'')); $output .= html_writer::start_tag('br'); $output .= html_writer::tag('span', $button_import_recordings, ['id' => "import_recording_links_button"]); $output .= html_writer::tag('span', '', ['id' => "import_recording_links_table"]); } echo $output; } }
function bigbluebuttonbn_view_after($bbbsession) { global $DB, $CFG; $id = optional_param('id', 0, PARAM_INT); // course_module ID, or $cm = get_coursemodule_from_id('streamline', $id, 0, false, MUST_EXIST); $streamline = $DB->get_record('streamline', array('id' => $cm->instance), '*', MUST_EXIST); include "streamline_view.php"; $recordingsArray = bigbluebuttonbn_getRecordingsArray($bbbsession['meetingid'], $bbbsession['url'], $bbbsession['salt']); if ($streamline->meetingended == 0) { $dataObj = new stdClass(); $dataObj->id = $streamline->id; $dataObj->meetingended = 1; $table = 'streamline'; $DB->update_record($table, $dataObj); } }