Author: mflorea Date: 2008-01-04 11:09:22 +0100 (Fri, 04 Jan 2008) New Revision: 6621
Modified: xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/impl/InvitationManagerImpl.java Log: Create space user profile on accept invitation Modified: xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/impl/InvitationManagerImpl.java =================================================================== --- xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/impl/InvitationManagerImpl.java 2008-01-04 09:28:11 UTC (rev 6620) +++ xwiki-products/curriki/trunk/plugins/invitationmanager/src/main/java/org/xwiki/plugin/invitationmanager/impl/InvitationManagerImpl.java 2008-01-04 10:09:22 UTC (rev 6621) @@ -69,20 +69,24 @@ /** * [EMAIL PROTECTED] - * + * * @see InvitationManager#acceptInvitation(String, String, String, XWikiContext) */ - public boolean acceptInvitation(String space, String email, String code, XWikiContext context) throws InvitationManagerException { + public boolean acceptInvitation(String space, String email, String code, XWikiContext context) + throws InvitationManagerException + { try { Invitation invitation = getInvitation(space, encodeEmailAddress(email), context); if (code.equals(invitation.getCode()) - && invitation.getStatus().equals(JoinRequestStatus.SENT)) { + && invitation.getStatus().equals(JoinRequestStatus.SENT)) { if (!invitation.isOpen()) { invitation.setStatus(JoinRequestStatus.ACCEPTED); invitation.setResponseDate(new Date()); invitation.setInvitee(context.getUser()); invitation.saveWithProgrammingRights(); } + // create and save a new space user profile based on the HTTP request + createSpaceUserProfile(space, context); // update the list of space members and their roles addMember(space, context.getUser(), invitation.getRoles(), context); @@ -118,22 +122,26 @@ /** * [EMAIL PROTECTED] - * + * * @see InvitationManager#acceptInvitation(String, XWikiContext) */ - public boolean acceptInvitation(String space, XWikiContext context) throws InvitationManagerException { + public boolean acceptInvitation(String space, XWikiContext context) + throws InvitationManagerException + { try { Invitation invitation = getInvitation(space, context.getUser(), context); // if the invitation does not exist we need to return false if (invitation.isNew()) return false; - + String status = invitation.getStatus(); if (status.equals(JoinRequestStatus.SENT) || status.equals(JoinRequestStatus.REFUSED)) { // update the invitation object invitation.setResponseDate(new Date()); invitation.setStatus(JoinRequestStatus.ACCEPTED); + // create and save a new space user profile based on the HTTP request + createSpaceUserProfile(space, context); // update the list of members and their roles addMember(space, context.getUser(), invitation.getRoles(), context); // save the invitation status @@ -141,17 +149,17 @@ return true; } else { return false; - } + } } catch (XWikiException e) { throw new InvitationManagerException(e); } } /** - * [EMAIL PROTECTED] - * - * @see InvitationManager#acceptInvitation(String, String, String, XWikiContext) - */ + * [EMAIL PROTECTED] + * + * @see InvitationManager#acceptInvitation(String, String, String, XWikiContext) + */ public boolean verifyInvitation(String space, XWikiContext context) throws InvitationManagerException { try { Invitation invitation = getInvitation(space, context.getUser(), context); @@ -166,11 +174,12 @@ /** * [EMAIL PROTECTED] - * + * * @see InvitationManager#acceptMembership(String, String, String, XWikiContext) */ public boolean acceptMembership(String space, String userName, String templateMail, - XWikiContext context) throws InvitationManagerException { + XWikiContext context) throws InvitationManagerException + { try { MembershipRequest request = getMembershipRequest(space, userName, context); @@ -187,9 +196,9 @@ // send notification mail sendMail(JoinRequestAction.ACCEPT, request, templateMail, context); - // create space user profile based on the membership request + // create and save a new space user profile based on the membership request createSpaceUserProfile(space, request, context); - + // update the list of members and their roles addMember(space, userName, request.getRoles(), context); @@ -1234,7 +1243,7 @@ * Wrapper method for adding a user to a space and to the given roles using the space manager */ private void addMember(String space, String user, List roles, XWikiContext context) - throws XWikiException + throws XWikiException { SpaceManager spaceManager = SpaceManagers.findSpaceManagerForSpace(space, context); if (!spaceManager.isMember(space, user, context)) { @@ -1479,4 +1488,18 @@ profile.setProfile(profileText); profile.saveWithProgrammingRights(); } + + /** + * Creates and saves a user profile associated with the given space and the currently logged in + * user + */ + private void createSpaceUserProfile(String spaceName, XWikiContext context) + throws XWikiException + { + SpaceManager spaceManager = SpaceManagers.findSpaceManagerForSpace(spaceName, context); + SpaceUserProfile profile = + new SpaceUserProfileImpl(context.getUser(), spaceName, spaceManager, context); + profile.updateProfileFromRequest(); + profile.saveWithProgrammingRights(); + } } _______________________________________________ notifications mailing list notifications@xwiki.org http://lists.xwiki.org/mailman/listinfo/notifications