Minor - Plugins - Zoom - fix delete recording to course BT#17288

pull/3446/head
Julio Montoya 5 years ago
parent a6723de22a
commit 91106a90e8
  1. 2
      plugin/zoom/Entity/Meeting.php
  2. 2
      plugin/zoom/Entity/Recording.php
  3. 26
      plugin/zoom/endpoint.php
  4. 18
      plugin/zoom/lib/ZoomPlugin.php
  5. 2
      plugin/zoom/meeting.php

@ -544,7 +544,7 @@ class Meeting
if (!empty($this->formattedStartTime)) {
$introduction .= $this->formattedStartTime;
if (!empty($this->formattedDuration)) {
$introduction .= '( '.$this->formattedDuration.')';
$introduction .= ' ('.$this->formattedDuration.')';
}
}
}

@ -143,7 +143,7 @@ class Recording
}
if (null === $this->meeting) {
$this->meeting = Database::getManager()->getRepository(Meeting::class)->find($recordingMeeting->id);
} elseif ($this->meeting->getId() != $recordingMeeting->id) {
} elseif ($this->meeting->getMeetingId() != $recordingMeeting->id) {
// $this->meeting remains null when the remote RecordingMeeting refers to a deleted meeting.
throw new Exception('The RecordingEntity meeting id differs from the RecordingMeeting meeting id');
}

@ -82,7 +82,8 @@ switch ($objectType) {
$recordingEntity = null;
if ($object->uuid) {
$recordingEntity = $recordingRepository->findBy(['uuid' => $object->uuid, 'meeting' => $meeting]);
/** @var Recording $recordingEntity */
$recordingEntity = $recordingRepository->findOneBy(['uuid' => $object->uuid, 'meeting' => $meeting]);
}
error_log("Recording: $action");
@ -109,10 +110,29 @@ switch ($objectType) {
case 'trashed':
case 'deleted':
$meeting->addActivity($activity);
$em->persist($meeting);
if (null !== $recordingEntity) {
$em->remove($recordingEntity);
$recordMeeting = $recordingEntity->getRecordingMeeting();
$recordingToDelete = RecordingMeeting::fromObject($object);
$files = [];
if ($recordingToDelete->recording_files) {
foreach($recordingToDelete->recording_files as $fileToDelete) {
foreach ($recordMeeting->recording_files as $file) {
if ($fileToDelete->id != $file->id) {
$files[] = $file;
}
}
}
}
if (empty($files)) {
$em->remove($recordingEntity);
} else {
$recordMeeting->recording_files = $files;
$recordingEntity->setRecordingMeeting($recordMeeting);
$em->persist($recordingEntity);
}
}
$em->persist($meeting);
$em->flush();
break;
default:

@ -444,7 +444,7 @@ class ZoomPlugin extends Plugin
*
* @return FormValidator
*/
public function getFileForm($meeting)
public function getFileForm($meeting, $returnURL)
{
$form = new FormValidator('fileForm', 'post', $_SERVER['REQUEST_URI']);
if (!$meeting->getRecordings()->isEmpty()) {
@ -484,10 +484,14 @@ class ZoomPlugin extends Plugin
);
$form->addButtonUpdate($this->get_lang('DoIt'));
if ($form->validate()) {
$action = $form->getSubmitValue('action');
$idList = $form->getSubmitValue('fileIds');
foreach ($recordingList as $recording) {
$recordings = $recording->getRecordingMeeting()->recording_files;
foreach ($recordings as $file) {
if (in_array($file->id, $form->getSubmitValue('fileIds'))) {
if (in_array($file->id, $idList)) {
$name = sprintf(
$this->get_lang('XRecordingOfMeetingXFromXDurationXDotX'),
$file->recording_type,
@ -496,7 +500,6 @@ class ZoomPlugin extends Plugin
$recording->formattedDuration,
$file->file_type
);
$action = $form->getSubmitValue('action');
if ('CreateLinkInCourse' === $action && $meeting->isCourseMeeting()) {
try {
$this->createLinkToFileInCourse($meeting, $file, $name);
@ -524,9 +527,10 @@ class ZoomPlugin extends Plugin
}
} elseif ('DeleteFile' === $action) {
try {
$name = $file->recording_type;
$file->delete();
Display::addFlash(
Display::return_message($this->get_lang('FileWasDeleted'), 'confirm')
Display::return_message($this->get_lang('FileWasDeleted').': '.$name, 'confirm')
);
} catch (Exception $exception) {
Display::addFlash(
@ -537,6 +541,7 @@ class ZoomPlugin extends Plugin
}
}
}
api_location($returnURL);
}
}
@ -630,15 +635,16 @@ class ZoomPlugin extends Plugin
'tmp_name' => stream_get_meta_data($tmpFile)['uri'],
'size' => filesize(stream_get_meta_data($tmpFile)['uri']),
'from_file' => true,
'move_file' => true,
'type' => $file->file_type,
],
'/',
api_get_path(SYS_COURSE_PATH).$courseInfo['path'].'/document',
'/',
api_get_user_id(),
$groupId,
null,
0,
'',
'overwrite',
true,
false,
null,

@ -66,7 +66,7 @@ if ($plugin->userIsConferenceManager($meeting)) {
}
if ('true' === $plugin->get('enableCloudRecording') && $meeting->hasCloudAutoRecordingEnabled()) {
$tpl->assign('fileForm', $plugin->getFileForm($meeting)->returnForm());
$tpl->assign('fileForm', $plugin->getFileForm($meeting)->returnForm(), $returnURL);
$tpl->assign('recordings', $meeting->getRecordings());
}
} elseif ($meeting->requiresRegistration()) {

Loading…
Cancel
Save