From b0e3369a4ca8c60f9b86879a2ebcf30abdeb4e80 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Wed, 5 Apr 2017 11:01:44 +0200 Subject: [PATCH] OO-2621: update the messages author and modifier if someone is removed the async way --- .../info/manager/InfoMessageFrontendManager.java | 4 +++- .../info/manager/InfoMessageFrontendManagerImpl.java | 11 ++++++----- .../manager/BusinessGroupMembershipProcessor.java | 4 ++++ .../olat/group/manager/BusinessGroupServiceImpl.java | 1 - 4 files changed, 13 insertions(+), 7 deletions(-) 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 c59d8869e22..a43fc80e807 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 a361b29f9ab..518e2912430 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 1f6bcbdeda2..5fe41b1e5b0 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 db310cfa666..de911c43218 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 -- GitLab