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());
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());
117
118 return mapping.findForward("portlet.sites_admin.error");
119 }
120 else {
121 throw e;
122 }
123 }
124
125 return mapping.findForward(
126 getForward(
127 renderRequest, "portlet.sites_admin.edit_site_assignments"));
128 }
129
130 protected void updateGroupOrganizations(ActionRequest actionRequest)
131 throws Exception {
132
133 long groupId = ParamUtil.getLong(actionRequest, "groupId");
134
135 long[] addOrganizationIds = StringUtil.split(
136 ParamUtil.getString(actionRequest, "addOrganizationIds"), 0L);
137 long[] removeOrganizationIds = StringUtil.split(
138 ParamUtil.getString(actionRequest, "removeOrganizationIds"), 0L);
139
140 OrganizationServiceUtil.addGroupOrganizations(
141 groupId, addOrganizationIds);
142 OrganizationServiceUtil.unsetGroupOrganizations(
143 groupId, removeOrganizationIds);
144 }
145
146 protected void updateGroupUserGroups(ActionRequest actionRequest)
147 throws Exception {
148
149 long groupId = ParamUtil.getLong(actionRequest, "groupId");
150
151 long[] addUserGroupIds = StringUtil.split(
152 ParamUtil.getString(actionRequest, "addUserGroupIds"), 0L);
153 long[] removeUserGroupIds = StringUtil.split(
154 ParamUtil.getString(actionRequest, "removeUserGroupIds"), 0L);
155
156 UserGroupServiceUtil.addGroupUserGroups(groupId, addUserGroupIds);
157 UserGroupServiceUtil.unsetGroupUserGroups(groupId, removeUserGroupIds);
158 }
159
160 protected void updateGroupUsers(ActionRequest actionRequest)
161 throws Exception {
162
163 ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(
164 WebKeys.THEME_DISPLAY);
165
166 long groupId = ParamUtil.getLong(actionRequest, "groupId");
167
168 long[] addUserIds = StringUtil.split(
169 ParamUtil.getString(actionRequest, "addUserIds"), 0L);
170 long[] removeUserIds = StringUtil.split(
171 ParamUtil.getString(actionRequest, "removeUserIds"), 0L);
172
173 ServiceContext serviceContext = ServiceContextFactory.getInstance(
174 actionRequest);
175
176 UserServiceUtil.addGroupUsers(groupId, addUserIds, serviceContext);
177 UserServiceUtil.unsetGroupUsers(groupId, removeUserIds, serviceContext);
178
179 LiveUsers.joinGroup(themeDisplay.getCompanyId(), groupId, addUserIds);
180 LiveUsers.leaveGroup(
181 themeDisplay.getCompanyId(), groupId, removeUserIds);
182 }
183
184 protected void updateUserGroupGroupRole(ActionRequest actionRequest)
185 throws Exception {
186
187 long groupId = ParamUtil.getLong(actionRequest, "groupId");
188
189 long userGroupId = ParamUtil.getLong(actionRequest, "userGroupId");
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 UserGroupGroupRoleServiceUtil.addUserGroupGroupRoles(
197 userGroupId, groupId, addRoleIds);
198 UserGroupGroupRoleServiceUtil.deleteUserGroupGroupRoles(
199 userGroupId, groupId, removeRoleIds);
200 }
201
202 protected void updateUserGroupRole(ActionRequest actionRequest)
203 throws Exception {
204
205 User user = PortalUtil.getSelectedUser(actionRequest, false);
206
207 if (user == null) {
208 return;
209 }
210
211 long groupId = ParamUtil.getLong(actionRequest, "groupId");
212
213 long[] addRoleIds = StringUtil.split(
214 ParamUtil.getString(actionRequest, "addRoleIds"), 0L);
215 long[] removeRoleIds = StringUtil.split(
216 ParamUtil.getString(actionRequest, "removeRoleIds"), 0L);
217
218 UserGroupRoleServiceUtil.addUserGroupRoles(
219 user.getUserId(), groupId, addRoleIds);
220 UserGroupRoleServiceUtil.deleteUserGroupRoles(
221 user.getUserId(), groupId, removeRoleIds);
222 }
223
224 }