diff --git a/src/main/java/org/olat/commons/info/manager/InfoMessageFrontendManager.java b/src/main/java/org/olat/commons/info/manager/InfoMessageFrontendManager.java index c59d8869e2260d331ea0b7db6bab9a122351adbf..a43fc80e807e7d5979cc444da3e4b8b73f366eff 100644 --- a/src/main/java/org/olat/commons/info/manager/InfoMessageFrontendManager.java +++ b/src/main/java/org/olat/commons/info/manager/InfoMessageFrontendManager.java @@ -24,11 +24,13 @@ import java.util.Date; import java.util.List; import java.util.Locale; +import org.olat.basesecurity.IdentityRef; import org.olat.commons.info.model.InfoMessage; import org.olat.core.id.Identity; import org.olat.core.id.OLATResourceable; import org.olat.core.util.resource.OresHelper; import org.olat.group.BusinessGroup; +import org.olat.group.BusinessGroupRef; /** * @@ -62,7 +64,7 @@ public interface InfoMessageFrontendManager { public void deleteInfoMessage(InfoMessage infoMessage); - public void updateInfoMessagesOfIdentity(BusinessGroup businessGroup, Identity identity); + public void updateInfoMessagesOfIdentity(BusinessGroupRef businessGroup, IdentityRef identity); public void removeInfoMessagesAndSubscriptionContext(BusinessGroup group); diff --git a/src/main/java/org/olat/commons/info/manager/InfoMessageFrontendManagerImpl.java b/src/main/java/org/olat/commons/info/manager/InfoMessageFrontendManagerImpl.java index a361b29f9abff0547ffe17339ad640c07cb40fb7..518e29124305dd3ff660df85219baa2da5cca634 100644 --- a/src/main/java/org/olat/commons/info/manager/InfoMessageFrontendManagerImpl.java +++ b/src/main/java/org/olat/commons/info/manager/InfoMessageFrontendManagerImpl.java @@ -26,6 +26,7 @@ import java.util.List; import java.util.Locale; import java.util.Set; +import org.olat.basesecurity.IdentityRef; import org.olat.commons.info.model.InfoMessage; import org.olat.commons.info.model.InfoMessageImpl; import org.olat.commons.info.notification.InfoSubscriptionManager; @@ -44,6 +45,7 @@ import org.olat.core.util.mail.MailContextImpl; import org.olat.core.util.mail.MailManager; import org.olat.core.util.mail.MailerResult; import org.olat.group.BusinessGroup; +import org.olat.group.BusinessGroupRef; /** * @@ -164,16 +166,15 @@ public class InfoMessageFrontendManagerImpl implements InfoMessageFrontendManage } @Override - public void updateInfoMessagesOfIdentity(BusinessGroup businessGroup, Identity identity) { + public void updateInfoMessagesOfIdentity(BusinessGroupRef businessGroup, IdentityRef identity) { List<InfoMessage> infoMessages = infoMessageManager.loadInfoMessagesOfIdentity(businessGroup, identity); for (InfoMessage infoMessage : infoMessages) { Identity author = infoMessage.getAuthor(); - Identity modifier = infoMessage.getModifier(); - if (author != null && author.equals(identity)) { + if (author != null && author.getKey().equals(identity.getKey())) { ((InfoMessageImpl)infoMessage).setAuthor(null); - infoSubscriptionManager.markPublisherNews(infoMessage.getOLATResourceable(), infoMessage.getResSubPath()); } - if (modifier != null && modifier.equals(identity)) { + Identity modifier = infoMessage.getModifier(); + if (modifier != null && modifier.getKey().equals(identity.getKey())) { infoMessage.setModifier(null); } infoMessageManager.saveInfoMessage(infoMessage); diff --git a/src/main/java/org/olat/group/manager/BusinessGroupMembershipProcessor.java b/src/main/java/org/olat/group/manager/BusinessGroupMembershipProcessor.java index 1f6bcbdeda2ba0e715d48bacedaa1421404efc48..5fe41b1e5b0b650f1eac7da0b55b1cab61289ee2 100644 --- a/src/main/java/org/olat/group/manager/BusinessGroupMembershipProcessor.java +++ b/src/main/java/org/olat/group/manager/BusinessGroupMembershipProcessor.java @@ -25,6 +25,7 @@ import java.util.List; import org.olat.basesecurity.GroupRoles; import org.olat.basesecurity.IdentityRef; import org.olat.basesecurity.model.IdentityRefImpl; +import org.olat.commons.info.manager.InfoMessageFrontendManager; import org.olat.core.commons.services.notifications.NotificationsManager; import org.olat.core.gui.control.Event; import org.olat.core.util.coordinate.CoordinatorManager; @@ -61,6 +62,8 @@ public class BusinessGroupMembershipProcessor implements InitializingBean, Gener @Autowired private NotificationsManager notificationsManager; @Autowired + private InfoMessageFrontendManager infoMessageManager; + @Autowired private RepositoryManager repositoryManager; @Autowired private BusinessGroupRelationDAO businessGroupRelationDao; @@ -108,6 +111,7 @@ public class BusinessGroupMembershipProcessor implements InitializingBean, Gener BusinessGroupRef groupRef = new BusinessGroupRefImpl(groupKey); if(!businessGroupRelationDao.hasAnyRole(identityRef, groupRef)) { + infoMessageManager.updateInfoMessagesOfIdentity(groupRef, identityRef); notificationsManager.unsubscribeAllForIdentityAndResId(identityRef, groupRef.getKey()); List<BGRepositoryEntryRelation> relations = businessGroupRelationDao diff --git a/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java b/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java index db310cfa666fd4eda5c9cc5d97bd3ebdb785b788..de911c432189951d27548959a9c87841194a9733 100644 --- a/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java +++ b/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java @@ -1035,7 +1035,6 @@ public class BusinessGroupServiceImpl implements BusinessGroupService, UserDataD private void removeParticipant(Identity ureqIdentity, Identity identity, BusinessGroup group, MailPackage mailing, List<BusinessGroupModifiedEvent.Deferred> events) { - infoMessageManager.updateInfoMessagesOfIdentity(group, identity); boolean removed = businessGroupRelationDAO.removeRole(identity, group, GroupRoles.participant.name()); if(removed) { // notify currently active users of this business group