AutorÃa | Ultima modificación | Ver Log |
<?php// This file is part of the Zoom plugin for Moodle - http://moodle.org///// Moodle is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// Moodle is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>./*** Adding, updating, and deleting zoom meeting recordings.** @package mod_zoom* @copyright 2020 UC Regents* @author 2021 Jwalit Shah <jwalitshah@catalyst-au.net>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/require(__DIR__ . '/../../config.php');require_once(__DIR__ . '/lib.php');require_once(__DIR__ . '/locallib.php');[$course, $cm, $zoom] = zoom_get_instance_setup();require_login($course, true, $cm);if (!get_config('zoom', 'viewrecordings')) {throw new moodle_exception('recordingnotvisible', 'mod_zoom', get_string('recordingnotvisible', 'zoom'));}$context = context_module::instance($cm->id);// Set up the page.$params = ['id' => $cm->id];$url = new moodle_url('/mod/zoom/recordings.php', $params);$PAGE->set_url($url);$strname = $zoom->name;$PAGE->set_title("$course->shortname: $strname");$PAGE->set_heading($course->fullname);$PAGE->set_pagelayout('incourse');echo $OUTPUT->header();echo $OUTPUT->heading($strname);$iszoommanager = has_capability('mod/zoom:addinstance', $context);// Set up html table.$table = new html_table();$table->attributes['class'] = 'generaltable mod_view';if ($iszoommanager) {$table->align = ['left', 'left', 'left', 'left'];$table->head = [get_string('recordingdate', 'mod_zoom'),get_string('recordinglink', 'mod_zoom'),get_string('recordingpasscode', 'mod_zoom'),get_string('recordingshowtoggle', 'mod_zoom'),];} else {$table->align = ['left', 'left', 'left'];$table->head = [get_string('recordingdate', 'mod_zoom'),get_string('recordinglink', 'mod_zoom'),get_string('recordingpasscode', 'mod_zoom'),];}// Find all entries for this meeting in the database.$recordings = zoom_get_meeting_recordings_grouped($zoom->id);if (empty($recordings)) {$cell = new html_table_cell();$cell->colspan = count($table->head);$cell->text = get_string('norecordings', 'mod_zoom');$cell->style = 'text-align: center';$row = new html_table_row([$cell]);$table->data = [$row];} else {foreach ($recordings as $grouping) {// Output the related recordings into the same row.$recordingdate = '';$recordinghtml = '';$recordingpasscode = '';$recordingshowhtml = '';foreach ($grouping as $recording) {// If zoom admin -> show all recordings.// Or if visible to students.if ($iszoommanager || intval($recording->showrecording) === 1) {if (empty($recordingdate)) {$recordingdate = date('F j, Y, g:i:s a \P\T', $recording->recordingstart);}if (empty($recordingpasscode)) {$recordingpasscode = $recording->passcode;}if ($iszoommanager && empty($recordingshowhtml)) {$isrecordinghidden = intval($recording->showrecording) === 0;$urlparams = ['id' => $cm->id,'meetinguuid' => $recording->meetinguuid,'recordingstart' => $recording->recordingstart,'showrecording' => ($isrecordinghidden) ? 1 : 0,'sesskey' => sesskey(),];// If the user is a zoom admin, show the button to toggle whether students can see the recording or not.$recordingshowurl = new moodle_url('/mod/zoom/showrecording.php', $urlparams);$recordingshowtext = get_string('recordinghide', 'mod_zoom');if ($isrecordinghidden) {$recordingshowtext = get_string('recordingshow', 'mod_zoom');}$btnclass = 'btn btn-';$btnclass .= $isrecordinghidden ? 'dark' : 'primary';$recordingshowbutton = html_writer::div($recordingshowtext, $btnclass);$recordingshowbuttonhtml = html_writer::link($recordingshowurl, $recordingshowbutton);$recordingshowhtml = html_writer::div($recordingshowbuttonhtml);}$recordingname = trim($recording->name) . ' (' . zoom_get_recording_type_string($recording->recordingtype) . ')';$params = ['id' => $cm->id, 'recordingid' => $recording->id];$recordingurl = new moodle_url('/mod/zoom/loadrecording.php', $params);$recordinglink = html_writer::link($recordingurl, $recordingname);$recordinglinkhtml = html_writer::span($recordinglink, 'recording-link', ['style' => 'margin-right:1rem']);$recordinghtml .= html_writer::div($recordinglinkhtml, 'recording', ['style' => 'margin-bottom:.5rem']);}}// Output only one row per grouping.$table->data[] = [$recordingdate, $recordinghtml, $recordingpasscode, $recordingshowhtml];}}/*** Get the display name for a Zoom recording type.** @package mod_zoom* @param string $recordingtype Zoom recording type.* @return string*/function zoom_get_recording_type_string($recordingtype) {$recordingtypestringmap = ['active_speaker' => 'recordingtype_active_speaker','audio_interpretation' => 'recordingtype_audio_interpretation','audio_only' => 'recordingtype_audio_only','audio_transcript' => 'recordingtype_audio_transcript','chat_file' => 'recordingtype_chat','closed_caption' => 'recordingtype_closed_caption','gallery_view' => 'recordingtype_gallery','poll' => 'recordingtype_poll','production_studio' => 'recordingtype_production_studio','shared_screen' => 'recordingtype_shared','shared_screen_with_gallery_view' => 'recordingtype_shared_gallery','shared_screen_with_speaker_view' => 'recordingtype_shared_speaker','shared_screen_with_speaker_view(CC)' => 'recordingtype_shared_speaker_cc','sign_interpretation' => 'recordingtype_sign','speaker_view' => 'recordingtype_speaker','summary' => 'recordingtype_summary','summary_next_steps' => 'recordingtype_summary_next_steps','summary_smart_chapters' => 'recordingtype_summary_smart_chapters','timeline' => 'recordingtype_timeline',];// Return some default string in case new recordingtype values are added in the future.if (empty($recordingtypestringmap[$recordingtype])) {return $recordingtype;}return get_string($recordingtypestringmap[$recordingtype], 'mod_zoom');}echo html_writer::table($table);echo $OUTPUT->footer();