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