diff --git a/src/main/java/org/olat/group/BusinessGroupService.java b/src/main/java/org/olat/group/BusinessGroupService.java index b240b6d3f719f1a88ebb3a77b5859b2f76c973c5..ea03ea1a962e23d3e8e006127405b2fe08121214 100644 --- a/src/main/java/org/olat/group/BusinessGroupService.java +++ b/src/main/java/org/olat/group/BusinessGroupService.java @@ -491,7 +491,7 @@ public interface BusinessGroupService { * @param identities * @param group */ - public void removeMembers(Identity ureqIdentity, List<Identity> identities, OLATResource resource, MailPackage mailing); + public void removeMembers(Identity ureqIdentity, List<Identity> identities, OLATResource resource, MailPackage mailing, boolean overrideManaged); /** diff --git a/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java b/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java index 2f10e34c65a7f128db8c095effdf857410331eee..94e0f88626f16a05fd0d881b9efc5589aad34996 100644 --- a/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java +++ b/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java @@ -1109,7 +1109,7 @@ public class BusinessGroupServiceImpl implements BusinessGroupService { } @Override - public void removeMembers(Identity ureqIdentity, List<Identity> identities, OLATResource resource, MailPackage mailing) { + public void removeMembers(Identity ureqIdentity, List<Identity> identities, OLATResource resource, MailPackage mailing, boolean overrideManaged) { if(identities == null || identities.isEmpty() || resource == null) return;//nothing to do List<BusinessGroup> groups = null; @@ -1128,10 +1128,12 @@ public class BusinessGroupServiceImpl implements BusinessGroupService { } //remove managed groups - for(Iterator<BusinessGroup> groupIt=groups.iterator(); groupIt.hasNext(); ) { - boolean managed = BusinessGroupManagedFlag.isManaged(groupIt.next(), BusinessGroupManagedFlag.membersmanagement); - if(managed) { - groupIt.remove(); + if(!overrideManaged) { + for(Iterator<BusinessGroup> groupIt=groups.iterator(); groupIt.hasNext(); ) { + boolean managed = BusinessGroupManagedFlag.isManaged(groupIt.next(), BusinessGroupManagedFlag.membersmanagement); + if(managed) { + groupIt.remove(); + } } } diff --git a/src/main/java/org/olat/group/ui/main/AbstractMemberListController.java b/src/main/java/org/olat/group/ui/main/AbstractMemberListController.java index 7b96bb073f8955c3709cf20b681443d55d760f96..50bd296854b23490925209455a6e23a0bce64c47 100644 --- a/src/main/java/org/olat/group/ui/main/AbstractMemberListController.java +++ b/src/main/java/org/olat/group/ui/main/AbstractMemberListController.java @@ -647,12 +647,12 @@ public abstract class AbstractMemberListController extends FormBasicController i List<CurriculumElement> elements = curriculumService.getCurriculumElements(repoEntry); elements = curriculumService.filterElementsWithoutManagerRole(elements, roles); for(CurriculumElement element:elements) { - curriculumService.removeMembers(element, members); + curriculumService.removeMembers(element, members, overrideManaged); } - businessGroupService.removeMembers(getIdentity(), members, repoEntry.getOlatResource(), mailing); + businessGroupService.removeMembers(getIdentity(), members, repoEntry.getOlatResource(), mailing, overrideManaged); repositoryManager.removeMembers(getIdentity(), members, repoEntry, mailing); } else { - businessGroupService.removeMembers(getIdentity(), members, businessGroup.getResource(), mailing); + businessGroupService.removeMembers(getIdentity(), members, businessGroup.getResource(), mailing, overrideManaged); } reloadModel(); } diff --git a/src/main/java/org/olat/modules/curriculum/CurriculumService.java b/src/main/java/org/olat/modules/curriculum/CurriculumService.java index aaa0747e3c311b502d4e9150027b2ae62d0c2670..ce1f32f329c86794580962c095edde8b3cadfba4 100644 --- a/src/main/java/org/olat/modules/curriculum/CurriculumService.java +++ b/src/main/java/org/olat/modules/curriculum/CurriculumService.java @@ -332,7 +332,7 @@ public interface CurriculumService { * @param entry The repository entry * @param members The memberss */ - public void removeMembers(CurriculumElement element, List<Identity> members); + public void removeMembers(CurriculumElement element, List<Identity> members, boolean overrideManaged); /** * The all list of repository entries hold by the specified curriculum element. diff --git a/src/main/java/org/olat/modules/curriculum/manager/CurriculumServiceImpl.java b/src/main/java/org/olat/modules/curriculum/manager/CurriculumServiceImpl.java index 3b67a69c767fda2e51d83ed03571ede754bb410a..7dfd7cc933cb1543d1e02515ed625eb690f2fa6d 100644 --- a/src/main/java/org/olat/modules/curriculum/manager/CurriculumServiceImpl.java +++ b/src/main/java/org/olat/modules/curriculum/manager/CurriculumServiceImpl.java @@ -419,8 +419,8 @@ public class CurriculumServiceImpl implements CurriculumService { } @Override - public void removeMembers(CurriculumElement element, List<Identity> members) { - if(!CurriculumElementManagedFlag.isManaged(element, CurriculumElementManagedFlag.members)) { + public void removeMembers(CurriculumElement element, List<Identity> members, boolean overrideManaged) { + if(!CurriculumElementManagedFlag.isManaged(element, CurriculumElementManagedFlag.members) || overrideManaged) { for(Identity member:members) { groupDao.removeMembership(element.getGroup(), member); } diff --git a/src/test/java/org/olat/group/test/BusinessGroupServiceTest.java b/src/test/java/org/olat/group/test/BusinessGroupServiceTest.java index 013d6f0fa9e4d2e1df4a0b8c709cc90e7a419909..53be3c7e9d29cf9af4c0b93d6c159d090510258c 100644 --- a/src/test/java/org/olat/group/test/BusinessGroupServiceTest.java +++ b/src/test/java/org/olat/group/test/BusinessGroupServiceTest.java @@ -588,7 +588,7 @@ public class BusinessGroupServiceTest extends OlatTestCase { List<Identity> identitiesToRemove = new ArrayList<Identity>(); identitiesToRemove.add(ident1); identitiesToRemove.add(ident3); - businessGroupService.removeMembers(admin, identitiesToRemove, resource.getOlatResource(), null); + businessGroupService.removeMembers(admin, identitiesToRemove, resource.getOlatResource(), null, false); dbInstance.commitAndCloseSession(); //check in group1 stay only id2 in waiting list