Index: site-manage-tool/tool/src/java/org/sakaiproject/site/tool/SiteAction.java =================================================================== --- site-manage-tool/tool/src/java/org/sakaiproject/site/tool/SiteAction.java (révision 116566) +++ site-manage-tool/tool/src/java/org/sakaiproject/site/tool/SiteAction.java (copie de travail) @@ -168,6 +168,8 @@ private ImportService importService = org.sakaiproject.importer.cover.ImportService .getInstance(); + private static String showOrphanedMembers = ServerConfigurationService.getString("site.setup.showOrphanedMembers", "admins"); + /** portlet configuration parameter values* */ /** Resource bundle using current language locale */ private static ResourceLoader rb = new ResourceLoader("sitesetupgeneric"); @@ -7356,6 +7358,16 @@ } } catch (UserNotDefinedException e) { M_log.warn(this + ".doUpdate_participant: IdUnusedException " + rId + ". ", e); + if (("admins".equals(showOrphanedMembers) && SecurityService.isSuperUser()) || ("maintainers".equals(showOrphanedMembers))) { + Member userMember = realmEdit.getMember(rId); + if (userMember != null) { + Role role = userMember.getRole(); + if (role != null) { + roles.add(role.getId()); + } + realmEdit.removeMember(rId); + } + } } } } Index: site-manage-util/util/src/java/org/sakaiproject/site/util/SiteParticipantHelper.java =================================================================== --- site-manage-util/util/src/java/org/sakaiproject/site/util/SiteParticipantHelper.java (révision 116566) +++ site-manage-util/util/src/java/org/sakaiproject/site/util/SiteParticipantHelper.java (copie de travail) @@ -35,6 +35,8 @@ private static String NULL_STRING = ""; + private static String showOrphanedMembers = ServerConfigurationService.getString("site.setup.showOrphanedMembers", "admins"); + private static org.sakaiproject.authz.api.GroupProvider groupProvider = (org.sakaiproject.authz.api.GroupProvider) ComponentManager .get(org.sakaiproject.authz.api.GroupProvider.class); @@ -323,6 +325,19 @@ participantsMap.put(userId, participant); } } catch (UserNotDefinedException e) { + + if (("admins".equals(showOrphanedMembers) && SecurityService.isSuperUser()) || ("maintainers".equals(showOrphanedMembers))) { + // add non-registered participant + String userId = g.getUserId(); + Participant participant = new Participant(); + participant.name = makeUserDisplayName(userId); + participant.uniqname = userId; + participant.role = g.getRole()!=null?g.getRole().getId():""; + participant.removeable = true; + participant.active = g.isActive(); + participantsMap.put(userId, participant); + } + // deal with missing user quietly without throwing a // warning message M_log.debug("SiteParticipantHelper:addParticipantsFromMembers: user not defined "+ g.getUserEid()); @@ -517,4 +532,19 @@ } } } + + public static String makeUserDisplayName(String userId) { + String userDisplayName = NULL_STRING; + String at = "@"; + + if (userId.indexOf(at) == -1) { + // non-email + userDisplayName = userId + " [deregistered]"; + } else { + // email + userDisplayName = userId + " [pending]"; + } + + return userDisplayName; + } } Index: site-manage-util/util/src/java/org/sakaiproject/site/util/Participant.java =================================================================== --- site-manage-util/util/src/java/org/sakaiproject/site/util/Participant.java (révision 116566) +++ site-manage-util/util/src/java/org/sakaiproject/site/util/Participant.java (copie de travail) @@ -13,6 +13,8 @@ public String name = NULL_STRING; + public String displayName = NULL_STRING; + // Note: uniqname is really a user ID public String uniqname = NULL_STRING; @@ -42,6 +44,20 @@ return name; } + public String getDisplayName() { + if (NULL_STRING.equals(displayName)) { + displayName = name; + } else { + try { + User user = UserDirectoryService.getUser(uniqname); + displayName = user.getDisplayName(); + } catch (UserNotDefinedException e) { + displayName = uniqname; + } + } + return displayName; + } + public String getUniqname() { return uniqname; }