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