Index: lams_admin/conf/language/ApplicationResources.properties =================================================================== diff -u -r7438d2e4ba424efcb191f015b5882aaeb4ac64d0 -r014f8d44ccd74d20a8c00442ee9dd013521f4aea --- lams_admin/conf/language/ApplicationResources.properties (.../ApplicationResources.properties) (revision 7438d2e4ba424efcb191f015b5882aaeb4ac64d0) +++ lams_admin/conf/language/ApplicationResources.properties (.../ApplicationResources.properties) (revision 014f8d44ccd74d20a8c00442ee9dd013521f4aea) @@ -196,5 +196,6 @@ label.show.all.users =Show all users msg.group.organisation_id = The organisation_id of this group is msg.subgroup.organisation_id = The organisation_id of this subgroup is +msg.remove.from.subgroups = Removed users will also be removed from subgroups. #======= End labels: Exported 188 labels for en AU ===== Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserOrgSaveAction.java =================================================================== diff -u -r7d91e93ee10b2f84a9a7cc6b83b0cacde0f7affc -r014f8d44ccd74d20a8c00442ee9dd013521f4aea --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserOrgSaveAction.java (.../UserOrgSaveAction.java) (revision 7d91e93ee10b2f84a9a7cc6b83b0cacde0f7affc) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserOrgSaveAction.java (.../UserOrgSaveAction.java) (revision 014f8d44ccd74d20a8c00442ee9dd013521f4aea) @@ -110,6 +110,8 @@ userUos.remove(uo); user.setUserOrganisations(userUos); log.debug("removed userId="+userId+" from orgId="+orgId); + // remove from subgroups + service.deleteChildUserOrganisations(uo.getUser(), uo.getOrganisation()); } } // add UserOrganisations that are in form data Index: lams_admin/web/userorg.jsp =================================================================== diff -u -r5a434572e8771eb9253a4b2f09efbf0c53b5f261 -r014f8d44ccd74d20a8c00442ee9dd013521f4aea --- lams_admin/web/userorg.jsp (.../userorg.jsp) (revision 5a434572e8771eb9253a4b2f09efbf0c53b5f261) +++ lams_admin/web/userorg.jsp (.../userorg.jsp) (revision 014f8d44ccd74d20a8c00442ee9dd013521f4aea) @@ -27,6 +27,10 @@

 

+ +

+
+
Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -rb48554300478401909b92cf4d8e0ba4e0e7a9d69 -r014f8d44ccd74d20a8c00442ee9dd013521f4aea Binary files differ Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java =================================================================== diff -u -r68eab07e7b1947fed0f85b75d1856e7674ddebf7 -r014f8d44ccd74d20a8c00442ee9dd013521f4aea --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision 68eab07e7b1947fed0f85b75d1856e7674ddebf7) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision 014f8d44ccd74d20a8c00442ee9dd013521f4aea) @@ -352,5 +352,11 @@ */ public boolean hasRoleInOrganisation(User user, Integer roleId, Organisation organisation); - + /** + * Given a user and a group, removes user from subgroups. + * @param user + * @param org + */ + public void deleteChildUserOrganisations(User user, Organisation org); + } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java =================================================================== diff -u -r68eab07e7b1947fed0f85b75d1856e7674ddebf7 -r014f8d44ccd74d20a8c00442ee9dd013521f4aea --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 68eab07e7b1947fed0f85b75d1856e7674ddebf7) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 014f8d44ccd74d20a8c00442ee9dd013521f4aea) @@ -734,4 +734,27 @@ else return false; } + + public void deleteChildUserOrganisations(User user, Organisation org) { + if (!org.getOrganisationType().getOrganisationTypeId().equals(OrganisationType.COURSE_TYPE)) + return; + Set childOrgs = org.getChildOrganisations(); + Iterator iter = childOrgs.iterator(); + while (iter.hasNext()) { + Organisation childOrg = (Organisation)iter.next(); + Set childOrgUos = childOrg.getUserOrganisations(); + UserOrganisation uo = getUserOrganisation(user.getUserId(), childOrg.getOrganisationId()); + if (uo != null) { + // remove user's membership of this subgroup + childOrgUos.remove(uo); + childOrg.setUserOrganisations(childOrgUos); + save(childOrg); + // remove User's link to this subgroup + Set userUos = user.getUserOrganisations(); + userUos.remove(uo); + user.setUserOrganisations(userUos); + log.debug("removed userId="+user.getUserId()+" from orgId="+childOrg.getOrganisationId()); + } + } + } } \ No newline at end of file