001
014
015 package com.liferay.portlet.sites.action;
016
017 import com.liferay.portal.NoSuchGroupException;
018 import com.liferay.portal.kernel.servlet.SessionErrors;
019 import com.liferay.portal.kernel.util.Constants;
020 import com.liferay.portal.kernel.util.ParamUtil;
021 import com.liferay.portal.kernel.util.StringUtil;
022 import com.liferay.portal.kernel.util.Validator;
023 import com.liferay.portal.liveusers.LiveUsers;
024 import com.liferay.portal.model.User;
025 import com.liferay.portal.security.auth.PrincipalException;
026 import com.liferay.portal.service.OrganizationServiceUtil;
027 import com.liferay.portal.service.ServiceContext;
028 import com.liferay.portal.service.ServiceContextFactory;
029 import com.liferay.portal.service.UserGroupGroupRoleServiceUtil;
030 import com.liferay.portal.service.UserGroupRoleServiceUtil;
031 import com.liferay.portal.service.UserGroupServiceUtil;
032 import com.liferay.portal.service.UserServiceUtil;
033 import com.liferay.portal.struts.PortletAction;
034 import com.liferay.portal.theme.ThemeDisplay;
035 import com.liferay.portal.util.PortalUtil;
036 import com.liferay.portal.util.WebKeys;
037
038 import javax.portlet.ActionRequest;
039 import javax.portlet.ActionResponse;
040 import javax.portlet.PortletConfig;
041 import javax.portlet.RenderRequest;
042 import javax.portlet.RenderResponse;
043
044 import org.apache.struts.action.ActionForm;
045 import org.apache.struts.action.ActionForward;
046 import org.apache.struts.action.ActionMapping;
047
048
051 public class EditGroupAssignmentsAction extends PortletAction {
052
053 @Override
054 public void processAction(
055 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
056 ActionRequest actionRequest, ActionResponse actionResponse)
057 throws Exception {
058
059 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
060
061 try {
062 if (cmd.equals("group_organizations")) {
063 updateGroupOrganizations(actionRequest);
064 }
065 else if (cmd.equals("group_user_groups")) {
066 updateGroupUserGroups(actionRequest);
067 }
068 else if (cmd.equals("group_users")) {
069 updateGroupUsers(actionRequest);
070 }
071 else if (cmd.equals("user_group_group_role")) {
072 updateUserGroupGroupRole(actionRequest);
073 }
074 else if (cmd.equals("user_group_role")) {
075 updateUserGroupRole(actionRequest);
076 }
077
078 if (Validator.isNotNull(cmd)) {
079 String redirect = ParamUtil.getString(
080 actionRequest, "assignmentsRedirect");
081
082 if (Validator.isNull(redirect)) {
083 redirect = ParamUtil.getString(actionRequest, "redirect");
084 }
085
086 sendRedirect(actionRequest, actionResponse, redirect);
087 }
088 }
089 catch (Exception e) {
090 if (e instanceof NoSuchGroupException ||
091 e instanceof PrincipalException) {
092
093 SessionErrors.add(actionRequest, e.getClass().getName());
094
095 setForward(actionRequest, "portlet.sites_admin.error");
096 }
097 else {
098 throw e;
099 }
100 }
101 }
102
103 @Override
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.sites_admin.error");
119 }
120 else {
121 throw e;
122 }
123 }
124
125 return mapping.findForward(getForward(renderRequest,
126 "portlet.sites_admin.edit_site_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 ServiceContext serviceContext = ServiceContextFactory.getInstance(
173 actionRequest);
174
175 UserServiceUtil.addGroupUsers(groupId, addUserIds, serviceContext);
176 UserServiceUtil.unsetGroupUsers(groupId, removeUserIds, serviceContext);
177
178 LiveUsers.joinGroup(themeDisplay.getCompanyId(), groupId, addUserIds);
179 LiveUsers.leaveGroup(
180 themeDisplay.getCompanyId(), groupId, removeUserIds);
181 }
182
183 protected void updateUserGroupGroupRole(ActionRequest actionRequest)
184 throws Exception {
185
186 long groupId = ParamUtil.getLong(actionRequest, "groupId");
187
188 long userGroupId = ParamUtil.getLong(actionRequest, "userGroupId");
189
190 long[] addRoleIds = StringUtil.split(
191 ParamUtil.getString(actionRequest, "addRoleIds"), 0L);
192 long[] removeRoleIds = StringUtil.split(
193 ParamUtil.getString(actionRequest, "removeRoleIds"), 0L);
194
195 UserGroupGroupRoleServiceUtil.addUserGroupGroupRoles(
196 userGroupId, groupId, addRoleIds);
197 UserGroupGroupRoleServiceUtil.deleteUserGroupGroupRoles(
198 userGroupId, groupId, removeRoleIds);
199 }
200
201 protected void updateUserGroupRole(ActionRequest actionRequest)
202 throws Exception {
203
204 User user = PortalUtil.getSelectedUser(actionRequest, false);
205
206 if (user == null) {
207 return;
208 }
209
210 long groupId = ParamUtil.getLong(actionRequest, "groupId");
211
212 long[] addRoleIds = StringUtil.split(
213 ParamUtil.getString(actionRequest, "addRoleIds"), 0L);
214 long[] removeRoleIds = StringUtil.split(
215 ParamUtil.getString(actionRequest, "removeRoleIds"), 0L);
216
217 UserGroupRoleServiceUtil.addUserGroupRoles(
218 user.getUserId(), groupId, addRoleIds);
219 UserGroupRoleServiceUtil.deleteUserGroupRoles(
220 user.getUserId(), groupId, removeRoleIds);
221 }
222
223 }