Skip to content
Snippets Groups Projects
Commit c515a265 authored by srosse's avatar srosse
Browse files

OO-4584: delete recordings with the meeting in OpenOlat

parent 656519da
No related branches found
No related tags found
No related merge requests found
......@@ -29,6 +29,8 @@ import java.util.Date;
*/
public interface BigBlueButtonRecording {
public String getRecordId();
public String getUrl();
public String getType();
......
......@@ -290,10 +290,41 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, Initializ
public boolean deleteMeeting(BigBlueButtonMeeting meeting, BigBlueButtonErrors errors) {
BigBlueButtonMeeting reloadedMeeting = bigBlueButtonMeetingDao.loadByKey(meeting.getKey());
removeCalendarEvent(reloadedMeeting);
deleteRecordings(meeting, errors);
bigBlueButtonMeetingDao.deleteMeeting(reloadedMeeting);
return false;
}
private void deleteRecordings(BigBlueButtonMeeting meeting, BigBlueButtonErrors errors) {
StringBuilder sb = new StringBuilder();
List<BigBlueButtonRecording> recordings = getRecordings(meeting, errors);
if(recordings != null && !recordings.isEmpty()) {
for(BigBlueButtonRecording recording:recordings) {
String recordId = recording.getRecordId();
if(StringHelper.containsNonWhitespace(recordId)) {
if(sb.length() > 0) sb.append(",");
sb.append(recordId);
}
}
}
if(sb.length() > 0) {
deleteRecording(sb.toString(), errors);
}
}
private void deleteRecording(String recordId, BigBlueButtonErrors errors) {
BigBlueButtonUriBuilder uriBuilder = getUriBuilder();
uriBuilder
.operation("deleteRecordings")
.parameter("recordID", recordId);
Document doc = sendRequest(uriBuilder, errors);
BigBlueButtonUtils.print(doc);
BigBlueButtonUtils.checkSuccess(doc, errors);
}
private void removeCalendarEvent(BigBlueButtonMeeting meeting) {
Kalendar calendar = getCalendar(meeting);
if(calendar == null) return;
......
......@@ -106,7 +106,8 @@ public class BigBlueButtonUtils {
NodeList recordingList = document.getElementsByTagName("recording");
for(int i=recordingList.getLength(); i-->0; ) {
Element recordingEl = (Element)recordingList.item(i);
String meetingId = getFirstElementValue(recordingEl, "meetingID");
String recordId = getFirstElementValue(recordingEl, "recordID");
String meetingId = getFirstElementValue(recordingEl, "meetingID");
String name = getFirstElementValue(recordingEl, "name");
Date startTime = toDate(getFirstElementValue(recordingEl, "startTime"));
Date endTime = toDate(getFirstElementValue(recordingEl, "endTime"));
......@@ -119,7 +120,7 @@ public class BigBlueButtonUtils {
Element formatEl = (Element)formatList.item(k);
String url = getFirstElementValue(formatEl, "url");
String type = getFirstElementValue(formatEl, "type");
recordings.add(BigBlueButtonRecordingImpl.valueOf(name, meetingId, startTime, endTime, url, type));
recordings.add(BigBlueButtonRecordingImpl.valueOf(recordId, name, meetingId, startTime, endTime, url, type));
}
}
}
......
......@@ -31,6 +31,7 @@ import org.olat.modules.bigbluebutton.BigBlueButtonRecording;
*/
public class BigBlueButtonRecordingImpl implements BigBlueButtonRecording {
private final String recordId;
private final String url;
private final String type;
private final String name;
......@@ -39,7 +40,8 @@ public class BigBlueButtonRecordingImpl implements BigBlueButtonRecording {
private final Date start;
private final Date end;
private BigBlueButtonRecordingImpl(String name, String meetingId, Date start, Date end, String url, String type) {
private BigBlueButtonRecordingImpl(String recordId, String name, String meetingId, Date start, Date end, String url, String type) {
this.recordId = recordId;
this.url = url;
this.type = type;
this.start = start;
......@@ -48,10 +50,15 @@ public class BigBlueButtonRecordingImpl implements BigBlueButtonRecording {
this.meetingId = meetingId;
}
public static BigBlueButtonRecording valueOf(String name, String meetingId, Date start, Date end, String url, String type) {
return new BigBlueButtonRecordingImpl(name, meetingId, start, end, url, type);
public static BigBlueButtonRecording valueOf(String recordId, String name, String meetingId, Date start, Date end, String url, String type) {
return new BigBlueButtonRecordingImpl(recordId, name, meetingId, start, end, url, type);
}
@Override
public String getRecordId() {
return recordId;
}
@Override
public String getUrl() {
return url;
......
......@@ -28,8 +28,9 @@ error.prefix=Ein Fehler ist aufgetreten\:
error.server.raw={1} <small>Schl\u00FCssel\: {0}</small>
error.start.after.end=Das Enddatum darf nicht vor dem Beginndatum sein.
error.too.long.time=Zeit ist zu lang. Es sind maximal {0} Minuten erlaubt.
meeting.create.intro=Der Online-Termin wurde vom Betreuer noch nicht er\u00f6ffnet. Teilnehmer k\u00F6nnen den Raum f\u00fcr noch nicht betreten.
meeting.create.intro=Der Online-Termin wurde vom Betreuer noch nicht er\u00F6ffnet. Teilnehmer k\u00F6nnen den Raum f\u00fcr noch nicht betreten.
meeting.description=Beschreibung
meeting.deleted=Das Meeting wurde erfolgreich gel\u00F6scht.
meeting.end=Ende
meeting.ended=Der Online-Termin wurde bereits beendet.
meeting.followupTime=Nachlaufzeit (Min.)
......
......@@ -30,6 +30,7 @@ error.start.after.end=The end date must not be before the start date.
error.too.long.time=Time is too long. It is limited to {0} minutes.
meeting.create.intro=The meeting has not yet been started by the coach. Participants are not able to enter the classroom.
meeting.description=Description
meeting.deleted=The meeting was successfully deleted.
meeting.end=End date
meeting.ended=The online-meeting has already ended.
meeting.followupTime=Follow-up (min.)
......
#Fri Mar 20 14:49:27 CET 2020
#Thu Mar 26 14:36:51 CET 2020
account.configuration=Configuration
add.meeting=Ajouter un meeting
add.template=Ajouter un mod\u00E8le
admin.menu.title=BigBlueButton
admin.menu.title.alt=BigBlueButton
bigbluebutton.intro=Configuration de BigBlueButton, solution de conférences en ligne
bigbluebutton.intro=Configuration de BigBlueButton, solution de conf\u00E9rences en ligne
bigbluebutton.module.enabled=Module "BigBlueButton"
bigbluebutton.module.enabled.for=Activer pour
bigbluebutton.module.enabled.for.courses=Cours
bigbluebutton.module.enabled.for.groups=Groupes
bigbluebutton.title=BigBlueButton
calendar.open=Voire les r\u00E9servations des salles
calendar.title=Calendrier
check=Tester la connection
confirm.delete.meeting=Voulez-vous vraiment effacer le meeting "{0}"?
confirm.delete.meeting.title=Effacer le meeting "{0}"
......@@ -18,10 +20,16 @@ confirm.delete.template.title=Effacer le mod\u00E8le "{0}"
connection.failed=L'authentification a \u00E9chou\u00E9e.
connection.successful=L'authentication a r\u00E9ussi.
edit.template=\u00C9diter le mod\u00E8le "{0}"
enable.adhoc.meeting=Adhoc meeting en ligne
enable.permanent.meeting=Meeting en ligne sans date
error.duration=Dur\u00E9e du meeting est trop longue. Dur\u00E9e maximum\: {0} minutes.
error.end.past=Un meeting en ligne ne peut pas \u00EAtre planifi\u00E9 dans le pass\u00E9.
error.prefix=Une erreur s'est produite\:
error.server.raw={1} <small>Cl\u00E9\: {0}</small>
error.start.after.end=La date de fin du rendez-vous ne peut se trouver avant la date de d\u00E9but.
error.too.long.time=Le temps est trop long. Il est limit\u00E9 \u00E0 {0} minutes.
meeting.create.intro=Le meeting n'est pas encore disponible. Les participants \u00E0 cette classe ne peuvent pas encore y acc\u00E9der.
meeting.deleted=Le meeting a \u00E9t\u00E9 effac\u00E9.
meeting.description=Description
meeting.end=Date de fin
meeting.ended=Le meeting est termin\u00E9.
......@@ -42,7 +50,9 @@ meetings.admin.title=Configuration
meetings.past=Meetings anciens
meetings.title=Meetings
meetings.upcoming=Meetings \u00E0 venir
minutes={0} min.
no.meeting.configured=Aucun meeting n'a \u00E9t\u00E9 configur\u00E9 pour l'instant.
no.recordings=Il n'y a pour l'instant pas d'enregistrements disponibles pour ce meeting.
no.template.configured=Aucun mod\u00E8le n'a \u00E9t\u00E9 configur\u00E9 pour l'instant.
no.upcoming.meetings=Vous n'avez pas meeting pr\u00E9vu \u00E0 l'avenir.
option.baseurl=URL du serveur BigBlueButton
......@@ -51,10 +61,39 @@ option.bigbluebutton.secret=Secret
option.bigbluebutton.shared.secret=Secret partag\u00E9
option.clean.meetings=Nettoy\u00E9 les meetings (jours)
option.dont.clean.meetings=Jamais
recording.browser.infos=Les enregistrements ne peuvent \u00EAtre vus qu'avec Google Chrome ou Firefox.
recording.type.podcast=Podcast
recording.type.presentation=Pr\u00E9sentation
recordings=Enregistrements
role.administrator=Administrateur
role.author=Auteur
role.coach=Coach
role.group=Membre d'un groupe
role.owner=Propri\u00E9taire de cours
server.overloaded=Il n'y pas de salle de r\u00E9union disponible pour la p\u00E9riode choisie. Choisissez une autre date ou un autre mod\u00E8le de salle de r\u00E9union.
table.header.enabled=Activ\u00E9
table.header.max.concurrent.meetings=Salles de r\u00E9union
table.header.max.duration=Dur\u00E9e
table.header.max.participants=Participants
table.header.permanent=Permanent
table.header.recording.end=Fin
table.header.recording.name=Nom
table.header.recording.open=Ouvrir
table.header.recording.start=D\u00E9but
table.header.recording.type=Type
table.header.system=Syst\u00E8me
table.header.template=Mod\u00E8le de salle de r\u00E9union
table.header.webcams.only.moderator=Webcam mod\u00E9rateurs seuls
template.autoStartRecording=D\u00E9marrer automatiquement l'enregistrement
template.description=Description
template.enabled=Activer le mod\u00E8le de salle de r\u00E9union
template.explain.max.participants=Nombre max. de participants\: {0} ({1} salles de r\u00E9union disponibles)
template.explain.max.participants.with.webcams.mod=Nombre max. de participants\: {0}, webcam pour mod\u00E9rateurs seulement ({1} salles de r\u00E9union disponibles)
template.max.concurrent.meetings=Nombre de salles de r\u00E9union
template.maxDuration=Dur\u00E9e (minutes)
template.maxParticipants=Nombre max. de participants
template.name=Nom
templates.title=Mod\u00E8les
view=Regarder
view.template=Mod\u00E8le de salle de r\u00E9union "{0}"
warning.template.in.use=Le mod\u00E8le ne peut pas \u00EAtre effacer car il est encore utilis\u00E9.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment