diff --git a/src/main/java/org/olat/modules/appointments/manager/AppointmentsServiceImpl.java b/src/main/java/org/olat/modules/appointments/manager/AppointmentsServiceImpl.java index bf55c0cad1ebdd4647d9884c6566f4919748bce7..4689f5cffea9e27be5d6f3c0358c4c8e152dcf16 100644 --- a/src/main/java/org/olat/modules/appointments/manager/AppointmentsServiceImpl.java +++ b/src/main/java/org/olat/modules/appointments/manager/AppointmentsServiceImpl.java @@ -346,7 +346,8 @@ public class AppointmentsServiceImpl implements AppointmentsService, BigBlueButt } if (!found) { - TopicToGroup topicToGroup = topicToGroupDao.create(topic, group); + Group reloadedGroup = groupDao.loadGroup(group.getKey()); + TopicToGroup topicToGroup = topicToGroupDao.create(topic, reloadedGroup); topicToGroups.add(topicToGroup); } } diff --git a/src/main/java/org/olat/modules/appointments/ui/TopicGroupsController.java b/src/main/java/org/olat/modules/appointments/ui/TopicGroupsController.java index 5108a4be69b42e99e170ef1a902ba729a9deb0df..a571d2a811c7ed3b1a88a0d57bad3a9ba254b55a 100644 --- a/src/main/java/org/olat/modules/appointments/ui/TopicGroupsController.java +++ b/src/main/java/org/olat/modules/appointments/ui/TopicGroupsController.java @@ -331,7 +331,7 @@ public class TopicGroupsController extends FormBasicController { groups.add(group); } } - if (usersTableModel.getRowCount() > 0) { + if (topic.getGroup() != null) { groups.add(topic.getGroup()); } appointmentsService.restrictTopic(topic, groups); diff --git a/src/main/java/org/olat/upgrade/OLATUpgrade_15_3_12.java b/src/main/java/org/olat/upgrade/OLATUpgrade_15_3_12.java new file mode 100644 index 0000000000000000000000000000000000000000..34a634177329bf12c44583aff5aea4e97c0b1228 --- /dev/null +++ b/src/main/java/org/olat/upgrade/OLATUpgrade_15_3_12.java @@ -0,0 +1,99 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.upgrade; + +import org.apache.logging.log4j.Logger; +import org.olat.core.commons.persistence.DB; +import org.olat.core.commons.services.doceditor.onlyoffice.OnlyOfficeModule; +import org.olat.core.logging.Tracing; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * + * Initial date: 3 Mar 2021<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +public class OLATUpgrade_15_3_12 extends OLATUpgrade { + + private static final Logger log = Tracing.createLoggerFor(OLATUpgrade_15_3_12.class); + + private static final String VERSION = "OLAT_15.3.12"; + private static final String DELETE_APPOINTMENT_USER_RESTRICTIONS = "DELETE APPOINTMENT USER RESTRICTIONS"; + + @Autowired + private DB dbInstance; + @Autowired + private OnlyOfficeModule onlyofficeModule; + + public OLATUpgrade_15_3_12() { + super(); + } + + @Override + public String getVersion() { + return VERSION; + } + + @Override + public boolean doPostSystemInitUpgrade(UpgradeManager upgradeManager) { + UpgradeHistoryData uhd = upgradeManager.getUpgradesHistory(VERSION); + if (uhd == null) { + // has never been called, initialize + uhd = new UpgradeHistoryData(); + } else if (uhd.isInstallationComplete()) { + return false; + } + + boolean allOk = true; + allOk &= deleteAppointmentUserRestriction(upgradeManager, uhd); + + uhd.setInstallationComplete(allOk); + upgradeManager.setUpgradesHistory(uhd, VERSION); + if(allOk) { + log.info(Tracing.M_AUDIT, "Finished OLATUpgrade_15_3_12 successfully!"); + } else { + log.info(Tracing.M_AUDIT, "OLATUpgrade_15_3_12 not finished, try to restart OpenOlat!"); + } + return allOk; + } + + private boolean deleteAppointmentUserRestriction(UpgradeManager upgradeManager, UpgradeHistoryData uhd) { + boolean allOk = true; + if (!uhd.getBooleanDataValue(DELETE_APPOINTMENT_USER_RESTRICTIONS)) { + try { + String query = "delete from appointmenttopictogroup ttg where ttg.group is null"; + dbInstance.getCurrentEntityManager() + .createQuery(query) + .executeUpdate(); + dbInstance.commitAndCloseSession(); + log.info("Deleted ppointment restriction with no group."); + } catch (Exception e) { + log.error("", e); + allOk = false; + } + + uhd.setBooleanDataValue(DELETE_APPOINTMENT_USER_RESTRICTIONS, allOk); + upgradeManager.setUpgradesHistory(uhd, VERSION); + } + return allOk; + } + +} diff --git a/src/main/java/org/olat/upgrade/_spring/upgradeContext.xml b/src/main/java/org/olat/upgrade/_spring/upgradeContext.xml index dc2ebdd248a62435460ecb201746b3a63ed25a77..865aa135f2dbe283fbe5ad74921439f56d9ce134 100644 --- a/src/main/java/org/olat/upgrade/_spring/upgradeContext.xml +++ b/src/main/java/org/olat/upgrade/_spring/upgradeContext.xml @@ -68,6 +68,7 @@ <bean id="upgrade_15_2_3_re" class="org.olat.upgrade.OLATUpgrade_15_2_3"/> <bean id="upgrade_15_2_6" class="org.olat.upgrade.OLATUpgrade_15_2_6"/> <bean id="upgrade_15_3_0" class="org.olat.upgrade.OLATUpgrade_15_3_0"/> + <bean id="upgrade_15_3_12" class="org.olat.upgrade.OLATUpgrade_15_3_12"/> </list> </property> </bean>