//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'];
Esempio n. 2
0
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;
}
Esempio n. 4
0
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);
    }
}