diff --git a/classes/task/delete_meeting_recordings.php b/classes/task/delete_meeting_recordings.php index e1756a12..d8c0bcb9 100644 --- a/classes/task/delete_meeting_recordings.php +++ b/classes/task/delete_meeting_recordings.php @@ -72,20 +72,24 @@ public function execute() { // Get all recordings stored in Moodle, grouped by meetinguuid. $zoomrecordings = zoom_get_meeting_recordings_grouped(); foreach ($zoomrecordings as $meetinguuid => $recordings) { - // Now check which recordings still exist on Zoom. - $recordinglist = $service->get_recording_url_list($meetinguuid); - foreach ($recordinglist as $recordinginfo) { - $zoomrecordingid = trim($recordinginfo->recordingid); - if (isset($recordings[$zoomrecordingid])) { - mtrace('Recording id: ' . $zoomrecordingid . ' exist(s)...skipping'); - unset($recordings[$zoomrecordingid]); + try { + // Now check which recordings still exist on Zoom. + $recordinglist = $service->get_recording_url_list($meetinguuid); + foreach ($recordinglist as $recordinginfo) { + $zoomrecordingid = trim($recordinginfo->recordingid); + if (isset($recordings[$zoomrecordingid])) { + mtrace('Recording id: ' . $zoomrecordingid . ' exist(s)...skipping'); + unset($recordings[$zoomrecordingid]); + } } - } - // If recordings are in Moodle but not in Zoom, we need to remove them from Moodle as well. - foreach ($recordings as $zoomrecordingid => $recording) { - mtrace('Deleting recording with id: ' . $zoomrecordingid . ' as corresponding record on zoom has been removed.'); - $DB->delete_records('zoom_meeting_recordings', ['zoomrecordingid' => $zoomrecordingid]); + // If recordings are in Moodle but not in Zoom, we need to remove them from Moodle as well. + foreach ($recordings as $zoomrecordingid => $recording) { + mtrace('Deleting recording with id: ' . $zoomrecordingid . ' because the recording is no longer in Zoom.'); + $DB->delete_records('zoom_meeting_recordings', ['zoomrecordingid' => $zoomrecordingid]); + } + } catch (moodle_exception $e) { + mtrace('Exception occurred: ' . $e->getMessage()); } } } diff --git a/classes/webservice.php b/classes/webservice.php index ffd9f43a..f8cc63ba 100644 --- a/classes/webservice.php +++ b/classes/webservice.php @@ -1041,6 +1041,7 @@ public function encode_uuid($uuid) { * * @param string $meetingid The string meeting UUID. * @return array Returns the list of recording URLs and the type of recording that is being sent back. + * @throws moodle_exception */ public function get_recording_url_list($meetingid) { $recordings = []; @@ -1055,32 +1056,27 @@ public function get_recording_url_list($meetingid) { 'CC' => 'captions', ]; - try { - // Classic: recording:read:admin. - // Granular: cloud_recording:read:list_recording_files:admin. - $url = 'meetings/' . $this->encode_uuid($meetingid) . '/recordings'; - $response = $this->make_call($url); - - if (!empty($response->recording_files)) { - foreach ($response->recording_files as $recording) { - $url = $recording->play_url ?? $recording->download_url ?? null; - if (!empty($url) && isset($allowedrecordingtypes[$recording->file_type])) { - $recordinginfo = new stdClass(); - $recordinginfo->recordingid = $recording->id; - $recordinginfo->meetinguuid = $response->uuid; - $recordinginfo->url = $url; - $recordinginfo->filetype = $recording->file_type; - $recordinginfo->recordingtype = $recording->recording_type; - $recordinginfo->passcode = $response->password; - $recordinginfo->recordingstart = strtotime($recording->recording_start); + // Classic: recording:read:admin. + // Granular: cloud_recording:read:list_recording_files:admin. + $url = 'meetings/' . $this->encode_uuid($meetingid) . '/recordings'; + $response = $this->make_call($url); - $recordings[$recording->id] = $recordinginfo; - } + if (!empty($response->recording_files)) { + foreach ($response->recording_files as $recording) { + $url = $recording->play_url ?? $recording->download_url ?? null; + if (!empty($url) && isset($allowedrecordingtypes[$recording->file_type])) { + $recordinginfo = new stdClass(); + $recordinginfo->recordingid = $recording->id; + $recordinginfo->meetinguuid = $response->uuid; + $recordinginfo->url = $url; + $recordinginfo->filetype = $recording->file_type; + $recordinginfo->recordingtype = $recording->recording_type; + $recordinginfo->passcode = $response->password; + $recordinginfo->recordingstart = strtotime($recording->recording_start); + + $recordings[$recording->id] = $recordinginfo; } } - } catch (moodle_exception $error) { - // No recordings found for this meeting id. - $recordings = []; } return $recordings;