001
014
015 package com.liferay.portlet.sites.action;
016
017 import com.liferay.portal.MembershipRequestCommentsException;
018 import com.liferay.portal.NoSuchGroupException;
019 import com.liferay.portal.kernel.servlet.SessionErrors;
020 import com.liferay.portal.kernel.servlet.SessionMessages;
021 import com.liferay.portal.kernel.util.ParamUtil;
022 import com.liferay.portal.liveusers.LiveUsers;
023 import com.liferay.portal.model.MembershipRequest;
024 import com.liferay.portal.model.MembershipRequestConstants;
025 import com.liferay.portal.security.auth.PrincipalException;
026 import com.liferay.portal.service.MembershipRequestServiceUtil;
027 import com.liferay.portal.struts.PortletAction;
028 import com.liferay.portal.theme.ThemeDisplay;
029 import com.liferay.portal.util.WebKeys;
030
031 import javax.portlet.ActionRequest;
032 import javax.portlet.ActionResponse;
033 import javax.portlet.PortletConfig;
034 import javax.portlet.RenderRequest;
035 import javax.portlet.RenderResponse;
036
037 import org.apache.struts.action.ActionForm;
038 import org.apache.struts.action.ActionForward;
039 import org.apache.struts.action.ActionMapping;
040
041
044 public class ReplyMembershipRequestAction extends PortletAction {
045
046 @Override
047 public void processAction(
048 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
049 ActionRequest actionRequest, ActionResponse actionResponse)
050 throws Exception {
051
052 try {
053 ThemeDisplay themeDisplay =
054 (ThemeDisplay)actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
055
056 long membershipRequestId = ParamUtil.getLong(
057 actionRequest, "membershipRequestId");
058
059 int statusId = ParamUtil.getInteger(actionRequest, "statusId");
060 String replyComments = ParamUtil.getString(
061 actionRequest, "replyComments");
062
063 MembershipRequest membershipRequest =
064 MembershipRequestServiceUtil.getMembershipRequest(
065 membershipRequestId);
066
067 MembershipRequestServiceUtil.updateStatus(
068 membershipRequestId, replyComments, statusId);
069
070 if (statusId == MembershipRequestConstants.STATUS_APPROVED) {
071 LiveUsers.joinGroup(
072 themeDisplay.getCompanyId(),
073 membershipRequest.getGroupId(),
074 new long[] {membershipRequest.getUserId()});
075 }
076
077 SessionMessages.add(actionRequest, "membership_reply_sent");
078
079 sendRedirect(actionRequest, actionResponse);
080 }
081 catch (Exception e) {
082 if (e instanceof NoSuchGroupException ||
083 e instanceof PrincipalException) {
084
085 SessionErrors.add(actionRequest, e.getClass().getName());
086
087 setForward(actionRequest, "portlet.sites_admin.error");
088 }
089 else if (e instanceof MembershipRequestCommentsException) {
090
091 SessionErrors.add(actionRequest, e.getClass().getName());
092
093 setForward(
094 actionRequest,
095 "portlet.sites_admin.reply_membership_request");
096 }
097 else {
098 throw e;
099 }
100 }
101 }
102 @Override
103 public ActionForward render(
104 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
105 RenderRequest renderRequest, RenderResponse renderResponse)
106 throws Exception {
107
108 try {
109 ActionUtil.getGroup(renderRequest);
110 }
111 catch (Exception e) {
112 if (e instanceof NoSuchGroupException ||
113 e instanceof PrincipalException) {
114
115 SessionErrors.add(renderRequest, e.getClass().getName());
116
117 return mapping.findForward("portlet.sites_admin.error");
118 }
119 else {
120 throw e;
121 }
122 }
123
124 return mapping.findForward(getForward(
125 renderRequest, "portlet.sites_admin.reply_membership_request"));
126 }
127
128 }