diff --git a/src/main/java/org/olat/modules/appointments/ui/AppointmentEditController.java b/src/main/java/org/olat/modules/appointments/ui/AppointmentEditController.java index c9da03471a31fa805d152b54e59a19c9f696e827..6db674ce3d9f65c40ba948f1c0800b886a1e19a2 100644 --- a/src/main/java/org/olat/modules/appointments/ui/AppointmentEditController.java +++ b/src/main/java/org/olat/modules/appointments/ui/AppointmentEditController.java @@ -73,6 +73,7 @@ public class AppointmentEditController extends FormBasicController { private static final String KEY_ON = "on"; private static final String[] KEYS_ON = new String[] { KEY_ON }; + private static final String[] KEYS_YES_NO = new String[] { "yes", "no" }; private DateChooser startEl; private DateChooser endEl; @@ -87,6 +88,7 @@ public class AppointmentEditController extends FormBasicController { private TextElement followupTimeEl; private TextElement welcomeEl; private SingleSelection templateEl; + private SingleSelection recordEl; private SingleSelection layoutEl; private BigBlueButtonMeetingsCalendarController calCtr; @@ -203,6 +205,16 @@ public class AppointmentEditController extends FormBasicController { if(isWebcamLayoutAvailable(getSelectedTemplate(templateEl, templates))) { layoutKeyValues.add(KeyValues.entry(BigBlueButtonMeetingLayoutEnum.webcam.name(), translate("layout.webcam"))); } + + String[] yesNoValues = new String[] { translate("yes"), translate("no") }; + recordEl = uifactory.addRadiosVertical("meeting.record", formLayout, KEYS_YES_NO, yesNoValues); + recordEl.setEnabled(bbbEditable); + if(BigBlueButtonUIHelper.isRecord(meeting)) { + recordEl.select(KEYS_YES_NO[0], true); + } else { + recordEl.select(KEYS_YES_NO[1], true); + } + layoutEl = uifactory.addDropdownSingleselect("meeting.layout", "meeting.layout", formLayout, layoutKeyValues.keys(), layoutKeyValues.values()); layoutEl.setEnabled(bbbEditable); @@ -230,7 +242,7 @@ public class AppointmentEditController extends FormBasicController { openCalLink = uifactory.addFormLink("calendar.open", formLayout); openCalLink.setIconLeftCSS("o_icon o_icon-fw o_icon_calendar"); - BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, templates); + BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, recordEl, templates); String leadtime = meeting == null ? null : Long.toString(meeting.getLeadTime()); leadTimeEl = uifactory.addTextElement("meeting.leadTime", 8, leadtime, formLayout); @@ -292,7 +304,7 @@ public class AppointmentEditController extends FormBasicController { } else if (source == bbbRoomEl) { updateUI(); } else if (templateEl == source) { - BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, templates); + BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, recordEl, templates); boolean webcamAvailable = isWebcamLayoutAvailable(getSelectedTemplate(templateEl, templates)); BigBlueButtonUIHelper.updateLayoutSelection(layoutEl, getTranslator(), webcamAvailable); } else if (openCalLink == source) { @@ -466,6 +478,12 @@ public class AppointmentEditController extends FormBasicController { } else { meeting.setMeetingLayout(BigBlueButtonMeetingLayoutEnum.standard); } + + if(recordEl.isVisible() && recordEl.isOneSelected()) { + meeting.setRecord(Boolean.valueOf(KEYS_YES_NO[0].equals(recordEl.getSelectedKey()))); + } else { + meeting.setRecord(null); + } } else { appointment = appointmentsService.removeMeeting(appointment); } diff --git a/src/main/java/org/olat/modules/appointments/ui/RecurringAppointmentsController.java b/src/main/java/org/olat/modules/appointments/ui/RecurringAppointmentsController.java index 7702baae572fad8a17b6d65b3ec447521c59471e..471b74dcee7318b945f6255a01dba4b01d7efffe 100644 --- a/src/main/java/org/olat/modules/appointments/ui/RecurringAppointmentsController.java +++ b/src/main/java/org/olat/modules/appointments/ui/RecurringAppointmentsController.java @@ -74,6 +74,7 @@ public class RecurringAppointmentsController extends FormBasicController { private static final String KEY_ON = "on"; private static final String[] KEYS_ON = new String[] { KEY_ON }; + private static final String[] KEYS_YES_NO = new String[] { "yes", "no" }; private TextElement locationEl; private TextElement maxParticipationsEl; @@ -88,6 +89,7 @@ public class RecurringAppointmentsController extends FormBasicController { private TextElement followupTimeEl; private TextElement welcomeEl; private SingleSelection templateEl; + private SingleSelection recordEl; private SingleSelection layoutEl; private BigBlueButtonMeetingsCalendarController calCtr; @@ -151,6 +153,10 @@ public class RecurringAppointmentsController extends FormBasicController { templatesKV.keys(), templatesKV.values()); templateEl.addActionListener(FormEvent.ONCHANGE); templateEl.select(templateEl.getKeys()[0], true); + + String[] yesNoValues = new String[] { translate("yes"), translate("no") }; + recordEl = uifactory.addRadiosVertical("meeting.record", formLayout, KEYS_YES_NO, yesNoValues); + recordEl.select(KEYS_YES_NO[0], true); KeyValues layoutKeyValues = new KeyValues(); layoutKeyValues.add(KeyValues.entry(BigBlueButtonMeetingLayoutEnum.standard.name(), translate("layout.standard"))); @@ -174,7 +180,7 @@ public class RecurringAppointmentsController extends FormBasicController { openCalLink = uifactory.addFormLink("calendar.open", formLayout); openCalLink.setIconLeftCSS("o_icon o_icon-fw o_icon_calendar"); - BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, templates); + BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, recordEl, templates); leadTimeEl = uifactory.addTextElement("meeting.leadTime", 8, null, formLayout); leadTimeEl.setExampleKey("meeting.leadTime.explain", null); @@ -228,7 +234,7 @@ public class RecurringAppointmentsController extends FormBasicController { if (source == bbbRoomEl) { updateUI(); } else if (templateEl == source) { - BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, templates); + BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, recordEl, templates); boolean webcamAvailable = isWebcamLayoutAvailable(getSelectedTemplate(templateEl, templates)); BigBlueButtonUIHelper.updateLayoutSelection(layoutEl, getTranslator(), webcamAvailable); } else if (openCalLink == source) { @@ -423,6 +429,12 @@ public class RecurringAppointmentsController extends FormBasicController { } else { meeting.setMeetingLayout(BigBlueButtonMeetingLayoutEnum.standard); } + + if(recordEl.isVisible() && recordEl.isOneSelected()) { + meeting.setRecord(Boolean.valueOf(KEYS_YES_NO[0].equals(recordEl.getSelectedKey()))); + } else { + meeting.setRecord(null); + } } appointmentsService.saveAppointment(appointment); diff --git a/src/main/java/org/olat/modules/appointments/ui/TopicCreateController.java b/src/main/java/org/olat/modules/appointments/ui/TopicCreateController.java index 207af04fe449d8be81aa8673c003b0eb6a176744..31d1df6f58e2f0d184afe317372ac22e505f397e 100644 --- a/src/main/java/org/olat/modules/appointments/ui/TopicCreateController.java +++ b/src/main/java/org/olat/modules/appointments/ui/TopicCreateController.java @@ -85,6 +85,7 @@ public class TopicCreateController extends FormBasicController { private static final String KEY_ON = "on"; private static final String[] KEYS_ON = new String[] { KEY_ON }; + private static final String[] KEYS_YES_NO = new String[] { "yes", "no" }; private static final String KEY_MULTI_PARTICIPATION = "multi.participation"; private static final String KEY_COACH_CONFIRMATION = "coach.confirmation"; private static final String CMD_REMOVE = "remove"; @@ -110,6 +111,7 @@ public class TopicCreateController extends FormBasicController { private TextElement followupTimeEl; private TextElement welcomeEl; private SingleSelection templateEl; + private SingleSelection recordEl; private SingleSelection layoutEl; private BigBlueButtonMeetingsCalendarController calCtr; @@ -243,6 +245,10 @@ public class TopicCreateController extends FormBasicController { templatesKV.keys(), templatesKV.values()); templateEl.addActionListener(FormEvent.ONCHANGE); templateEl.select(templateEl.getKeys()[0], true); + + String[] yesNoValues = new String[] { translate("yes"), translate("no") }; + recordEl = uifactory.addRadiosVertical("meeting.record", formLayout, KEYS_YES_NO, yesNoValues); + recordEl.select(KEYS_YES_NO[0], true); KeyValues layoutKeyValues = new KeyValues(); layoutKeyValues.add(KeyValues.entry(BigBlueButtonMeetingLayoutEnum.standard.name(), translate("layout.standard"))); @@ -266,7 +272,7 @@ public class TopicCreateController extends FormBasicController { openCalLink = uifactory.addFormLink("calendar.open", formLayout); openCalLink.setIconLeftCSS("o_icon o_icon-fw o_icon_calendar"); - BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, templates); + BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, recordEl, templates); leadTimeEl = uifactory.addTextElement("meeting.leadTime", 8, null, formLayout); leadTimeEl.setExampleKey("meeting.leadTime.explain", null); @@ -347,7 +353,7 @@ public class TopicCreateController extends FormBasicController { } else if (source == bbbRoomEl) { updateUI(); } else if (templateEl == source) { - BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, templates); + BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, recordEl, templates); boolean webcamAvailable = isWebcamLayoutAvailable(getSelectedTemplate(templateEl, templates)); BigBlueButtonUIHelper.updateLayoutSelection(layoutEl, getTranslator(), webcamAvailable); } else if (openCalLink == source) { @@ -689,6 +695,12 @@ public class TopicCreateController extends FormBasicController { } else { meeting.setMeetingLayout(BigBlueButtonMeetingLayoutEnum.standard); } + + if(recordEl.isVisible() && recordEl.isOneSelected()) { + meeting.setRecord(Boolean.valueOf(KEYS_YES_NO[0].equals(recordEl.getSelectedKey()))); + } else { + meeting.setRecord(null); + } } return appointment; } diff --git a/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonMeeting.java b/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonMeeting.java index f7e4662fbafbe9fee48e004f09d8c08ea5c54163..b6bf94b6f8557ced44483756e709ca95323bbc9a 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonMeeting.java +++ b/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonMeeting.java @@ -189,6 +189,10 @@ public interface BigBlueButtonMeeting extends ModifiedInfo, CreateInfo { public void setRecordingsPublishingEnum(BigBlueButtonRecordingsPublishingEnum publishing); + public Boolean getRecord(); + + public void setRecord(Boolean record); + /** * The plain text name of the presenter or main organizer. By default the name * of the creator but can be change to anything. Metadata just for display diff --git a/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java b/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java index 8746c562230b05e6d294b26ad21f8be907550af8..d2144bc3dad7d23e62c3d6b22269e53a5144f039 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java +++ b/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java @@ -915,11 +915,15 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, } if(template != null) { + boolean record = template.getRecord() != null && template.getRecord().booleanValue(); + if(record && meeting.getRecord() != null) { + record = meeting.getRecord().booleanValue(); + } + uriBuilder .optionalParameter("maxParticipants", template.getMaxParticipants().intValue() + 1) - .optionalParameter("record", template.getRecord()) + .optionalParameter("record", record) .optionalParameter("breakoutRoomsEnabled", template.getBreakoutRoomsEnabled()) - // video options .optionalParameter("muteOnStart", template.getMuteOnStart()) .optionalParameter("autoStartRecording", template.getAutoStartRecording()) diff --git a/src/main/java/org/olat/modules/bigbluebutton/model/BigBlueButtonMeetingImpl.java b/src/main/java/org/olat/modules/bigbluebutton/model/BigBlueButtonMeetingImpl.java index 77309db86b8a80ad7cc2c9a2d65f81d3bf3abb1e..dc12a7d513d009e527c3580d5c0d816758134c15 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/model/BigBlueButtonMeetingImpl.java +++ b/src/main/java/org/olat/modules/bigbluebutton/model/BigBlueButtonMeetingImpl.java @@ -117,6 +117,8 @@ public class BigBlueButtonMeetingImpl implements Persistable, BigBlueButtonMeeti @Column(name="b_recordings_publishing", nullable=true, insertable=true, updatable=true) private String recordingsPublishing; + @Column(name="b_record", nullable=true, insertable=true, updatable=true) + private Boolean record; @ManyToOne(targetEntity=IdentityImpl.class, fetch=FetchType.LAZY, optional=true) @JoinColumn(name="fk_creator_id", nullable=true, insertable=true, updatable=false) @@ -368,6 +370,16 @@ public class BigBlueButtonMeetingImpl implements Persistable, BigBlueButtonMeeti } } + @Override + public Boolean getRecord() { + return record; + } + + @Override + public void setRecord(Boolean record) { + this.record = record; + } + @Override public String getMainPresenter() { return mainPresenter; diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonUIHelper.java b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonUIHelper.java index a1b896ec1e98925d1603a36b633517022a3dc76b..bdb08ad216d66ec7ce391d10aaaf4622db13a405 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonUIHelper.java +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonUIHelper.java @@ -46,7 +46,7 @@ import org.olat.modules.bigbluebutton.BigBlueButtonMeetingTemplate; */ public class BigBlueButtonUIHelper { - public static void updateTemplateInformations(SingleSelection templateEl, TextElement externalLinkEl, List<BigBlueButtonMeetingTemplate> templates) { + public static void updateTemplateInformations(SingleSelection templateEl, TextElement externalLinkEl, SingleSelection recordEl, List<BigBlueButtonMeetingTemplate> templates) { templateEl.setExampleKey(null, null); if(templateEl.isOneSelected()) { BigBlueButtonMeetingTemplate template = getSelectedTemplate(templateEl, templates); @@ -65,8 +65,20 @@ public class BigBlueButtonUIHelper { if(visible && !StringHelper.containsNonWhitespace(externalLinkEl.getValue())) { externalLinkEl.setValue(Long.toString(CodeHelper.getForeverUniqueID())); } + + if(recordEl != null) { + boolean recordVisible = template != null && template.getRecord() != null && template.getRecord().booleanValue(); + boolean wasVisible = recordEl.isVisible(); + recordEl.setVisible(recordVisible); + if(!recordEl.isOneSelected() || (recordVisible && !wasVisible)) { + recordEl.select("yes", true); + } + } } else { externalLinkEl.setVisible(false); + if(recordEl != null) { + recordEl.setVisible(false); + } } } @@ -240,10 +252,19 @@ public class BigBlueButtonUIHelper { return followupTime; } + public static boolean isRecord(BigBlueButtonMeetingTemplate template) { + return template != null && template.getRecord() != null && template.getRecord().booleanValue(); + } + public static boolean isRecord(BigBlueButtonMeeting meeting) { - return meeting != null && meeting.getTemplate() != null + boolean record = meeting != null && meeting.getTemplate() != null && meeting.getTemplate().getRecord() != null && meeting.getTemplate().getRecord().booleanValue(); + // override only if template enables recording + if(record && meeting.getRecord() != null) { + record = meeting.getRecord().booleanValue(); + } + return record; } private static BigBlueButtonManager getBigBlueButtonManager() { diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonMeetingController.java b/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonMeetingController.java index ad8d12bcefc9d6e7d9afefcd5c24d231138ddd7f..63d776c756a99d11b6b38b085a15668988012f39 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonMeetingController.java +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonMeetingController.java @@ -67,6 +67,7 @@ import org.springframework.beans.factory.annotation.Autowired; public class EditBigBlueButtonMeetingController extends FormBasicController { private static final String[] onKeys = new String[] { "on" }; + private static final String[] yesNoKeys = new String[] { "yes", "no" }; private FormLink openCalLink; private TextElement nameEl; @@ -79,6 +80,7 @@ public class EditBigBlueButtonMeetingController extends FormBasicController { private DateChooser endDateEl; private SingleSelection templateEl; private SingleSelection layoutEl; + private SingleSelection recordEl; private SingleSelection publishingEl; private MultipleSelectionElement guestEl; private TextElement externalLinkEl; @@ -209,6 +211,14 @@ public class EditBigBlueButtonMeetingController extends FormBasicController { BigBlueButtonRecordingsPublishingEnum publish = meeting == null ? BigBlueButtonRecordingsPublishingEnum.auto : meeting.getRecordingsPublishingEnum(); publishingEl.select(publish.name(), true); publishingEl.setEnabled(editable); + + String[] yesNoValues = new String[] { translate("yes"), translate("no") }; + recordEl = uifactory.addRadiosVertical("meeting.record", formLayout, yesNoKeys, yesNoValues); + if(meeting == null || BigBlueButtonUIHelper.isRecord(meeting)) { + recordEl.select(yesNoKeys[0], true); + } else { + recordEl.select(yesNoKeys[1], true); + } KeyValues layoutKeyValues = new KeyValues(); layoutKeyValues.add(KeyValues.entry(BigBlueButtonMeetingLayoutEnum.standard.name(), translate("layout.standard"))); @@ -247,7 +257,7 @@ public class EditBigBlueButtonMeetingController extends FormBasicController { openCalLink = uifactory.addFormLink("calendar.open", formLayout); openCalLink.setIconLeftCSS("o_icon o_icon-fw o_icon_calendar"); - BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, templates); + BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, recordEl, templates); if(mode == Mode.dates) { Date startDate = meeting == null ? new Date() : meeting.getStartDate(); @@ -404,7 +414,7 @@ public class EditBigBlueButtonMeetingController extends FormBasicController { @Override protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { if(templateEl == source) { - BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, templates); + BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, recordEl, templates); boolean webcamAvailable = isWebcamLayoutAvailable(getSelectedTemplate(templateEl, templates)); BigBlueButtonUIHelper.updateLayoutSelection(layoutEl, getTranslator(), webcamAvailable); } else if (openCalLink == source) { @@ -466,7 +476,11 @@ public class EditBigBlueButtonMeetingController extends FormBasicController { } meeting.setRecordingsPublishingEnum(BigBlueButtonRecordingsPublishingEnum.valueOf(publishingEl.getSelectedKey())); - + if(recordEl.isVisible() && recordEl.isOneSelected()) { + meeting.setRecord(Boolean.valueOf(yesNoKeys[0].equals(recordEl.getSelectedKey()))); + } else { + meeting.setRecord(null); + } meeting = bigBlueButtonManager.updateMeeting(meeting); fireEvent(ureq, Event.DONE_EVENT); diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_de.properties index 6564961420b672626fd1aa05d8e1b47537385a69..9558dfcca3297e82a0d7032b1e9d697ca9e05bde 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_de.properties @@ -93,6 +93,7 @@ meeting.permanent.on=Ohne Datum meeting.publishing=Aufzeichnung publizieren meeting.publishing.auto=Automatisch meeting.publishing.manual=Manuell +meeting.record=$\:template.record meeting.recurring.end=Ende wiederkehrendes Datum meeting.recurring.start=Start wiederkehrendes Datum meeting.resource=Kontext diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_en.properties index 99867cf0eedbf79f0701db2f5edb68d06119cc04..1ed3c882c6fbe6222c84dccb601eb7d8cde7a7c4 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_en.properties @@ -93,6 +93,7 @@ meeting.permanent.on=Without date meeting.publishing=Publish recording meeting.publishing.auto=Automatisch meeting.publishing.manual=Manual +meeting.record=$\:template.record meeting.recurring.end=End recurring date meeting.recurring.start=Start recurring date meeting.resource=Context diff --git a/src/main/java/org/olat/upgrade/_spring/databaseUpgradeContext.xml b/src/main/java/org/olat/upgrade/_spring/databaseUpgradeContext.xml index eeba35e14a50ea338fe769d955af379b459dffc5..38502007c6b5980beb2d9e393fa691f642188c92 100644 --- a/src/main/java/org/olat/upgrade/_spring/databaseUpgradeContext.xml +++ b/src/main/java/org/olat/upgrade/_spring/databaseUpgradeContext.xml @@ -312,6 +312,10 @@ <constructor-arg index="0" value="OLAT_15.3.1" /> <property name="alterDbStatements" value="alter_15_3_x_to_15_3_1.sql" /> </bean> + <bean id="database_upgrade_15_3_2" class="org.olat.upgrade.DatabaseUpgrade"> + <constructor-arg index="0" value="OLAT_15.3.2" /> + <property name="alterDbStatements" value="alter_15_3_x_to_15_3_2.sql" /> + </bean> </list> </property> </bean> diff --git a/src/main/resources/database/mysql/alter_15_3_x_to_15_3_2.sql b/src/main/resources/database/mysql/alter_15_3_x_to_15_3_2.sql new file mode 100644 index 0000000000000000000000000000000000000000..acea6a271b93ea2fba9d792e7556dffbde65bcb2 --- /dev/null +++ b/src/main/resources/database/mysql/alter_15_3_x_to_15_3_2.sql @@ -0,0 +1,3 @@ +-- BigBlueButton +alter table o_bbb_meeting add column b_record bool default null; + diff --git a/src/main/resources/database/mysql/setupDatabase.sql b/src/main/resources/database/mysql/setupDatabase.sql index 4a4bdb143e36923b27c5ca5b86459e6db6dc18f1..3d3b54144887385b5add330b46f7e815b6c95711 100644 --- a/src/main/resources/database/mysql/setupDatabase.sql +++ b/src/main/resources/database/mysql/setupDatabase.sql @@ -1225,6 +1225,7 @@ create table o_bbb_meeting ( b_end_with_followuptime datetime, b_main_presenter varchar(255), b_recordings_publishing varchar(16) default 'auto', + b_record bool default null, fk_creator_id bigint default null, fk_entry_id bigint default null, a_sub_ident varchar(64) default null, diff --git a/src/main/resources/database/oracle/alter_15_3_x_to_15_3_2.sql b/src/main/resources/database/oracle/alter_15_3_x_to_15_3_2.sql new file mode 100644 index 0000000000000000000000000000000000000000..03490a2cb672c39005f989c3f1530893f7cca48e --- /dev/null +++ b/src/main/resources/database/oracle/alter_15_3_x_to_15_3_2.sql @@ -0,0 +1,3 @@ +-- BigBlueButton +alter table o_bbb_meeting add b_record number default null; + diff --git a/src/main/resources/database/oracle/setupDatabase.sql b/src/main/resources/database/oracle/setupDatabase.sql index 27b793ba4820963bed2380fc4dca3a86b9fbfed8..6dd09e8a3da93ffc92ce4e9dd6eadf4cb20cf3cd 100644 --- a/src/main/resources/database/oracle/setupDatabase.sql +++ b/src/main/resources/database/oracle/setupDatabase.sql @@ -1289,6 +1289,7 @@ create table o_bbb_meeting ( b_end_with_followuptime timestamp, b_main_presenter varchar2(255), b_recordings_publishing varchar2(16) default 'auto', + b_record number default null, fk_creator_id number(20), fk_entry_id number(20) default null, a_sub_ident varchar(64) default null, diff --git a/src/main/resources/database/postgresql/alter_15_3_x_to_15_3_2.sql b/src/main/resources/database/postgresql/alter_15_3_x_to_15_3_2.sql new file mode 100644 index 0000000000000000000000000000000000000000..acea6a271b93ea2fba9d792e7556dffbde65bcb2 --- /dev/null +++ b/src/main/resources/database/postgresql/alter_15_3_x_to_15_3_2.sql @@ -0,0 +1,3 @@ +-- BigBlueButton +alter table o_bbb_meeting add column b_record bool default null; + diff --git a/src/main/resources/database/postgresql/setupDatabase.sql b/src/main/resources/database/postgresql/setupDatabase.sql index fa5cd9c10b54d9d7fc68efc7177e1d71f1ff5ca9..00c08ace941aa012609a587a487596e3822139a5 100644 --- a/src/main/resources/database/postgresql/setupDatabase.sql +++ b/src/main/resources/database/postgresql/setupDatabase.sql @@ -1247,6 +1247,7 @@ create table o_bbb_meeting ( b_end_with_followuptime timestamp, b_main_presenter varchar(255), b_recordings_publishing varchar(16) default 'auto', + b_record bool default null, fk_creator_id int8, fk_entry_id int8 default null, a_sub_ident varchar(64) default null,