1
19
20 package com.liferay.portlet.communities.action;
21
22 import com.liferay.portal.NoSuchGroupException;
23 import com.liferay.portal.kernel.servlet.SessionErrors;
24 import com.liferay.portal.kernel.util.Constants;
25 import com.liferay.portal.kernel.util.ParamUtil;
26 import com.liferay.portal.kernel.util.StringUtil;
27 import com.liferay.portal.kernel.util.Validator;
28 import com.liferay.portal.liveusers.LiveUsers;
29 import com.liferay.portal.model.User;
30 import com.liferay.portal.security.auth.PrincipalException;
31 import com.liferay.portal.service.OrganizationServiceUtil;
32 import com.liferay.portal.service.UserGroupRoleServiceUtil;
33 import com.liferay.portal.service.UserGroupServiceUtil;
34 import com.liferay.portal.service.UserServiceUtil;
35 import com.liferay.portal.struts.PortletAction;
36 import com.liferay.portal.theme.ThemeDisplay;
37 import com.liferay.portal.util.PortalUtil;
38 import com.liferay.portal.util.WebKeys;
39
40 import javax.portlet.ActionRequest;
41 import javax.portlet.ActionResponse;
42 import javax.portlet.PortletConfig;
43 import javax.portlet.RenderRequest;
44 import javax.portlet.RenderResponse;
45
46 import org.apache.struts.action.ActionForm;
47 import org.apache.struts.action.ActionForward;
48 import org.apache.struts.action.ActionMapping;
49
50
56 public class EditGroupAssignmentsAction extends PortletAction {
57
58 public void processAction(
59 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
60 ActionRequest actionRequest, ActionResponse actionResponse)
61 throws Exception {
62
63 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
64
65 try {
66 if (cmd.equals("group_organizations")) {
67 updateGroupOrganizations(actionRequest);
68 }
69 else if (cmd.equals("group_user_groups")) {
70 updateGroupUserGroups(actionRequest);
71 }
72 else if (cmd.equals("group_users")) {
73 updateGroupUsers(actionRequest);
74 }
75 else if (cmd.equals("user_group_role")) {
76 updateUserGroupRole(actionRequest);
77 }
78
79 if (Validator.isNotNull(cmd)) {
80 String redirect = ParamUtil.getString(
81 actionRequest, "assignmentsRedirect");
82
83 if (Validator.isNull(redirect)) {
84 redirect = ParamUtil.getString(actionRequest, "redirect");
85 }
86
87 sendRedirect(actionRequest, actionResponse, redirect);
88 }
89 }
90 catch (Exception e) {
91 if (e instanceof NoSuchGroupException ||
92 e instanceof PrincipalException) {
93
94 SessionErrors.add(actionRequest, e.getClass().getName());
95
96 setForward(actionRequest, "portlet.communities.error");
97 }
98 else {
99 throw e;
100 }
101 }
102 }
103
104 public ActionForward render(
105 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
106 RenderRequest renderRequest, RenderResponse renderResponse)
107 throws Exception {
108
109 try {
110 ActionUtil.getGroup(renderRequest);
111 }
112 catch (Exception e) {
113 if (e instanceof NoSuchGroupException ||
114 e instanceof PrincipalException) {
115
116 SessionErrors.add(renderRequest, e.getClass().getName());
117
118 return mapping.findForward("portlet.communities.error");
119 }
120 else {
121 throw e;
122 }
123 }
124
125 return mapping.findForward(getForward(renderRequest,
126 "portlet.communities.edit_community_assignments"));
127 }
128
129 protected void updateGroupOrganizations(ActionRequest actionRequest)
130 throws Exception {
131
132 long groupId = ParamUtil.getLong(actionRequest, "groupId");
133
134 long[] addOrganizationIds = StringUtil.split(
135 ParamUtil.getString(actionRequest, "addOrganizationIds"), 0L);
136 long[] removeOrganizationIds = StringUtil.split(
137 ParamUtil.getString(actionRequest, "removeOrganizationIds"), 0L);
138
139 OrganizationServiceUtil.addGroupOrganizations(
140 groupId, addOrganizationIds);
141 OrganizationServiceUtil.unsetGroupOrganizations(
142 groupId, removeOrganizationIds);
143 }
144
145 protected void updateGroupUserGroups(ActionRequest actionRequest)
146 throws Exception {
147
148 long groupId = ParamUtil.getLong(actionRequest, "groupId");
149
150 long[] addUserGroupIds = StringUtil.split(
151 ParamUtil.getString(actionRequest, "addUserGroupIds"), 0L);
152 long[] removeUserGroupIds = StringUtil.split(
153 ParamUtil.getString(actionRequest, "removeUserGroupIds"), 0L);
154
155 UserGroupServiceUtil.addGroupUserGroups(groupId, addUserGroupIds);
156 UserGroupServiceUtil.unsetGroupUserGroups(groupId, removeUserGroupIds);
157 }
158
159 protected void updateGroupUsers(ActionRequest actionRequest)
160 throws Exception {
161
162 ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(
163 WebKeys.THEME_DISPLAY);
164
165 long groupId = ParamUtil.getLong(actionRequest, "groupId");
166
167 long[] addUserIds = StringUtil.split(
168 ParamUtil.getString(actionRequest, "addUserIds"), 0L);
169 long[] removeUserIds = StringUtil.split(
170 ParamUtil.getString(actionRequest, "removeUserIds"), 0L);
171
172 UserServiceUtil.addGroupUsers(groupId, addUserIds);
173 UserServiceUtil.unsetGroupUsers(groupId, removeUserIds);
174
175 LiveUsers.joinGroup(themeDisplay.getCompanyId(), groupId, addUserIds);
176 LiveUsers.leaveGroup(
177 themeDisplay.getCompanyId(), groupId, removeUserIds);
178 }
179
180 protected void updateUserGroupRole(ActionRequest actionRequest)
181 throws Exception {
182
183 User user = PortalUtil.getSelectedUser(actionRequest, false);
184
185 if (user == null) {
186 return;
187 }
188
189 long groupId = ParamUtil.getLong(actionRequest, "groupId");
190
191 long[] addRoleIds = StringUtil.split(
192 ParamUtil.getString(actionRequest, "addRoleIds"), 0L);
193 long[] removeRoleIds = StringUtil.split(
194 ParamUtil.getString(actionRequest, "removeRoleIds"), 0L);
195
196 UserGroupRoleServiceUtil.addUserGroupRoles(
197 user.getUserId(), groupId, addRoleIds);
198 UserGroupRoleServiceUtil.deleteUserGroupRoles(
199 user.getUserId(), groupId, removeRoleIds);
200 }
201
202 }