1
14
15 package com.liferay.portlet.enterpriseadmin.action;
16
17 import com.liferay.portal.AddressCityException;
18 import com.liferay.portal.AddressStreetException;
19 import com.liferay.portal.AddressZipException;
20 import com.liferay.portal.ContactFirstNameException;
21 import com.liferay.portal.ContactFullNameException;
22 import com.liferay.portal.ContactLastNameException;
23 import com.liferay.portal.DuplicateUserEmailAddressException;
24 import com.liferay.portal.DuplicateUserScreenNameException;
25 import com.liferay.portal.EmailAddressException;
26 import com.liferay.portal.NoSuchCountryException;
27 import com.liferay.portal.NoSuchListTypeException;
28 import com.liferay.portal.NoSuchRegionException;
29 import com.liferay.portal.NoSuchUserException;
30 import com.liferay.portal.PhoneNumberException;
31 import com.liferay.portal.RequiredUserException;
32 import com.liferay.portal.ReservedUserEmailAddressException;
33 import com.liferay.portal.ReservedUserScreenNameException;
34 import com.liferay.portal.UserEmailAddressException;
35 import com.liferay.portal.UserIdException;
36 import com.liferay.portal.UserPasswordException;
37 import com.liferay.portal.UserReminderQueryException;
38 import com.liferay.portal.UserScreenNameException;
39 import com.liferay.portal.UserSmsException;
40 import com.liferay.portal.WebsiteURLException;
41 import com.liferay.portal.kernel.bean.BeanParamUtil;
42 import com.liferay.portal.kernel.servlet.SessionErrors;
43 import com.liferay.portal.kernel.util.CalendarFactoryUtil;
44 import com.liferay.portal.kernel.util.Constants;
45 import com.liferay.portal.kernel.util.GetterUtil;
46 import com.liferay.portal.kernel.util.HttpUtil;
47 import com.liferay.portal.kernel.util.LocaleUtil;
48 import com.liferay.portal.kernel.util.ParamUtil;
49 import com.liferay.portal.kernel.util.StringPool;
50 import com.liferay.portal.kernel.util.StringUtil;
51 import com.liferay.portal.kernel.util.Validator;
52 import com.liferay.portal.model.Address;
53 import com.liferay.portal.model.Contact;
54 import com.liferay.portal.model.EmailAddress;
55 import com.liferay.portal.model.Group;
56 import com.liferay.portal.model.Layout;
57 import com.liferay.portal.model.Phone;
58 import com.liferay.portal.model.User;
59 import com.liferay.portal.model.UserGroupRole;
60 import com.liferay.portal.model.Website;
61 import com.liferay.portal.security.auth.PrincipalException;
62 import com.liferay.portal.service.ServiceContext;
63 import com.liferay.portal.service.ServiceContextFactory;
64 import com.liferay.portal.service.UserServiceUtil;
65 import com.liferay.portal.struts.PortletAction;
66 import com.liferay.portal.theme.ThemeDisplay;
67 import com.liferay.portal.util.PortalUtil;
68 import com.liferay.portal.util.WebKeys;
69 import com.liferay.portlet.InvokerPortletImpl;
70 import com.liferay.portlet.admin.util.AdminUtil;
71 import com.liferay.portlet.announcements.model.AnnouncementsDelivery;
72 import com.liferay.portlet.announcements.model.AnnouncementsEntryConstants;
73 import com.liferay.portlet.announcements.model.impl.AnnouncementsDeliveryImpl;
74 import com.liferay.portlet.communities.util.CommunitiesUtil;
75 import com.liferay.portlet.enterpriseadmin.util.EnterpriseAdminUtil;
76
77 import java.util.ArrayList;
78 import java.util.Calendar;
79 import java.util.List;
80
81 import javax.portlet.ActionRequest;
82 import javax.portlet.ActionResponse;
83 import javax.portlet.PortletConfig;
84 import javax.portlet.PortletRequest;
85 import javax.portlet.PortletSession;
86 import javax.portlet.RenderRequest;
87 import javax.portlet.RenderResponse;
88
89 import javax.servlet.http.HttpServletRequest;
90 import javax.servlet.http.HttpSession;
91
92 import org.apache.struts.Globals;
93 import org.apache.struts.action.ActionForm;
94 import org.apache.struts.action.ActionForward;
95 import org.apache.struts.action.ActionMapping;
96
97
105 public class EditUserAction extends PortletAction {
106
107 public void processAction(
108 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
109 ActionRequest actionRequest, ActionResponse actionResponse)
110 throws Exception {
111
112 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
113
114 try {
115 User user = null;
116 String oldScreenName = StringPool.BLANK;
117 String oldLanguageId = StringPool.BLANK;
118
119 if (cmd.equals(Constants.ADD)) {
120 user = addUser(actionRequest);
121 }
122 else if (cmd.equals(Constants.DEACTIVATE) ||
123 cmd.equals(Constants.DELETE) ||
124 cmd.equals(Constants.RESTORE)) {
125
126 deleteUsers(actionRequest);
127 }
128 else if (cmd.equals("deleteRole")) {
129 deleteRole(actionRequest);
130 }
131 else if (cmd.equals(Constants.UPDATE)) {
132 Object[] returnValue = updateUser(actionRequest);
133
134 user = (User)returnValue[0];
135 oldScreenName = ((String)returnValue[1]);
136 oldLanguageId = ((String)returnValue[2]);
137 }
138 else if (cmd.equals("unlock")) {
139 user = updateLockout(actionRequest);
140 }
141
142 String redirect = ParamUtil.getString(actionRequest, "redirect");
143
144 if (user != null) {
145 ThemeDisplay themeDisplay =
146 (ThemeDisplay)actionRequest.getAttribute(
147 WebKeys.THEME_DISPLAY);
148
149 if (Validator.isNotNull(oldScreenName)) {
150
151
156 Group group = user.getGroup();
157
158 if (group.getGroupId() == themeDisplay.getScopeGroupId()) {
159 Layout layout = themeDisplay.getLayout();
160
161 String friendlyURLPath = group.getPathFriendlyURL(
162 layout.isPrivateLayout(), themeDisplay);
163
164 String oldPath =
165 friendlyURLPath + StringPool.SLASH + oldScreenName;
166 String newPath =
167 friendlyURLPath + StringPool.SLASH +
168 user.getScreenName();
169
170 redirect = StringUtil.replace(
171 redirect, oldPath, newPath);
172
173 redirect = StringUtil.replace(
174 redirect, HttpUtil.encodeURL(oldPath),
175 HttpUtil.encodeURL(newPath));
176 }
177 }
178
179 if (Validator.isNotNull(oldLanguageId) &&
180 themeDisplay.isI18n()) {
181
182 String i18nLanguageId = user.getLanguageId();
183 int pos = i18nLanguageId.indexOf(StringPool.UNDERLINE);
184
185 if (pos != -1){
186 i18nLanguageId = i18nLanguageId.substring(0, pos);
187 }
188
189 String i18nPath = StringPool.SLASH + i18nLanguageId;
190
191 redirect = StringUtil.replace(
192 redirect, themeDisplay.getI18nPath(), i18nPath);
193 }
194
195 redirect = HttpUtil.setParameter(
196 redirect, actionResponse.getNamespace() + "p_u_i_d",
197 user.getUserId());
198 }
199
200 sendRedirect(actionRequest, actionResponse, redirect);
201 }
202 catch (Exception e) {
203 if (e instanceof NoSuchUserException ||
204 e instanceof PrincipalException) {
205
206 SessionErrors.add(actionRequest, e.getClass().getName());
207
208 setForward(actionRequest, "portlet.enterprise_admin.error");
209 }
210 else if (e instanceof AddressCityException ||
211 e instanceof AddressStreetException ||
212 e instanceof AddressZipException ||
213 e instanceof ContactFirstNameException ||
214 e instanceof ContactFullNameException ||
215 e instanceof ContactLastNameException ||
216 e instanceof DuplicateUserEmailAddressException ||
217 e instanceof DuplicateUserScreenNameException ||
218 e instanceof EmailAddressException ||
219 e instanceof NoSuchCountryException ||
220 e instanceof NoSuchListTypeException ||
221 e instanceof NoSuchRegionException ||
222 e instanceof PhoneNumberException ||
223 e instanceof RequiredUserException ||
224 e instanceof ReservedUserEmailAddressException ||
225 e instanceof ReservedUserScreenNameException ||
226 e instanceof UserEmailAddressException ||
227 e instanceof UserIdException ||
228 e instanceof UserPasswordException ||
229 e instanceof UserReminderQueryException ||
230 e instanceof UserScreenNameException ||
231 e instanceof UserSmsException ||
232 e instanceof WebsiteURLException) {
233
234 if (e instanceof NoSuchListTypeException) {
235 NoSuchListTypeException nslte = (NoSuchListTypeException)e;
236
237 SessionErrors.add(
238 actionRequest,
239 e.getClass().getName() + nslte.getType());
240 }
241 else {
242 SessionErrors.add(actionRequest, e.getClass().getName(), e);
243 }
244
245 if (e instanceof RequiredUserException) {
246 actionResponse.sendRedirect(
247 ParamUtil.getString(actionRequest, "redirect"));
248 }
249 }
250 else {
251 throw e;
252 }
253 }
254 }
255
256 public ActionForward render(
257 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
258 RenderRequest renderRequest, RenderResponse renderResponse)
259 throws Exception {
260
261 try {
262 PortalUtil.getSelectedUser(renderRequest);
263 }
264 catch (Exception e) {
265 if (e instanceof PrincipalException) {
266 SessionErrors.add(renderRequest, e.getClass().getName());
267
268 return mapping.findForward("portlet.enterprise_admin.error");
269 }
270 else {
271 throw e;
272 }
273 }
274
275 return mapping.findForward(
276 getForward(renderRequest, "portlet.enterprise_admin.edit_user"));
277 }
278
279 protected User addUser(ActionRequest actionRequest)
280 throws Exception {
281
282 ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(
283 WebKeys.THEME_DISPLAY);
284
285 boolean autoPassword = ParamUtil.getBoolean(
286 actionRequest, "autoPassword", true);
287 String password1 = ParamUtil.getString(actionRequest, "password1");
288 String password2 = ParamUtil.getString(actionRequest, "password2");
289
290 String reminderQueryQuestion = ParamUtil.getString(
291 actionRequest, "reminderQueryQuestion");
292
293 if (reminderQueryQuestion.equals(EnterpriseAdminUtil.CUSTOM_QUESTION)) {
294 reminderQueryQuestion = ParamUtil.getString(
295 actionRequest, "reminderQueryCustomQuestion");
296 }
297
298 String reminderQueryAnswer = ParamUtil.getString(
299 actionRequest, "reminderQueryAnswer");
300 boolean autoScreenName = ParamUtil.getBoolean(
301 actionRequest, "autoScreenName");
302 String screenName = ParamUtil.getString(actionRequest, "screenName");
303 String emailAddress = ParamUtil.getString(
304 actionRequest, "emailAddress");
305 String openId = ParamUtil.getString(actionRequest, "openId");
306 String languageId = ParamUtil.getString(actionRequest, "languageId");
307 String timeZoneId = ParamUtil.getString(actionRequest, "timeZoneId");
308 String greeting = ParamUtil.getString(actionRequest, "greeting");
309 String firstName = ParamUtil.getString(actionRequest, "firstName");
310 String middleName = ParamUtil.getString(actionRequest, "middleName");
311 String lastName = ParamUtil.getString(actionRequest, "lastName");
312 int prefixId = ParamUtil.getInteger(actionRequest, "prefixId");
313 int suffixId = ParamUtil.getInteger(actionRequest, "suffixId");
314 boolean male = ParamUtil.getBoolean(actionRequest, "male", true);
315 int birthdayMonth = ParamUtil.getInteger(
316 actionRequest, "birthdayMonth");
317 int birthdayDay = ParamUtil.getInteger(actionRequest, "birthdayDay");
318 int birthdayYear = ParamUtil.getInteger(actionRequest, "birthdayYear");
319 String comments = ParamUtil.getString(actionRequest, "comments");
320 String smsSn = ParamUtil.getString(actionRequest, "smsSn");
321 String aimSn = ParamUtil.getString(actionRequest, "aimSn");
322 String facebookSn = ParamUtil.getString(actionRequest, "facebookSn");
323 String icqSn = ParamUtil.getString(actionRequest, "icqSn");
324 String jabberSn = ParamUtil.getString(actionRequest, "jabberSn");
325 String msnSn = ParamUtil.getString(actionRequest, "msnSn");
326 String mySpaceSn = ParamUtil.getString(actionRequest, "mySpaceSn");
327 String skypeSn = ParamUtil.getString(actionRequest, "skypeSn");
328 String twitterSn = ParamUtil.getString(actionRequest, "twitterSn");
329 String ymSn = ParamUtil.getString(actionRequest, "ymSn");
330 String jobTitle = ParamUtil.getString(actionRequest, "jobTitle");
331 long[] groupIds = getLongArray(
332 actionRequest, "groupsSearchContainerPrimaryKeys");
333 long[] organizationIds = getLongArray(
334 actionRequest, "organizationsSearchContainerPrimaryKeys");
335 long[] roleIds = getLongArray(
336 actionRequest, "rolesSearchContainerPrimaryKeys");
337 List<UserGroupRole> userGroupRoles =
338 EnterpriseAdminUtil.getUserGroupRoles(actionRequest);
339 long[] userGroupIds = getLongArray(
340 actionRequest, "userGroupsSearchContainerPrimaryKeys");
341 boolean sendEmail = true;
342 List<Address> addresses = EnterpriseAdminUtil.getAddresses(
343 actionRequest);
344 List<EmailAddress> emailAddresses =
345 EnterpriseAdminUtil.getEmailAddresses(actionRequest);
346 List<Phone> phones = EnterpriseAdminUtil.getPhones(actionRequest);
347 List<Website> websites = EnterpriseAdminUtil.getWebsites(actionRequest);
348 List<AnnouncementsDelivery> announcementsDeliveries =
349 getAnnouncementsDeliveries(actionRequest);
350
351 ServiceContext serviceContext = ServiceContextFactory.getInstance(
352 User.class.getName(), actionRequest);
353
354 User user = null;
355
356 user = UserServiceUtil.addUser(
357 themeDisplay.getCompanyId(), autoPassword, password1, password2,
358 autoScreenName, screenName, emailAddress, openId,
359 LocaleUtil.getDefault(), firstName, middleName, lastName, prefixId,
360 suffixId, male, birthdayMonth, birthdayDay, birthdayYear, jobTitle,
361 groupIds, organizationIds, roleIds, userGroupIds, sendEmail,
362 addresses, emailAddresses, phones, websites,
363 announcementsDeliveries, serviceContext);
364
365 if (!userGroupRoles.isEmpty()) {
366 for (UserGroupRole userGroupRole : userGroupRoles) {
367 userGroupRole.setUserId(user.getUserId());
368 }
369
370 user = UserServiceUtil.updateUser(
371 user.getUserId(), StringPool.BLANK, StringPool.BLANK,
372 StringPool.BLANK, false, reminderQueryQuestion,
373 reminderQueryAnswer, screenName, emailAddress, openId,
374 languageId, timeZoneId, greeting, comments, firstName,
375 middleName, lastName, prefixId, suffixId, male, birthdayMonth,
376 birthdayDay, birthdayYear, smsSn, aimSn, facebookSn, icqSn,
377 jabberSn, msnSn, mySpaceSn, skypeSn, twitterSn, ymSn, jobTitle,
378 groupIds, organizationIds, roleIds, userGroupRoles,
379 userGroupIds, addresses, emailAddresses, phones, websites,
380 announcementsDeliveries, serviceContext);
381 }
382
383 long publicLayoutSetPrototypeId = ParamUtil.getLong(
384 actionRequest, "publicLayoutSetPrototypeId");
385 long privateLayoutSetPrototypeId = ParamUtil.getLong(
386 actionRequest, "privateLayoutSetPrototypeId");
387
388 CommunitiesUtil.applyLayoutSetPrototypes(
389 user.getGroup(), publicLayoutSetPrototypeId,
390 privateLayoutSetPrototypeId);
391
392 return user;
393 }
394
395 protected void deleteRole(ActionRequest actionRequest) throws Exception {
396 User user = PortalUtil.getSelectedUser(actionRequest);
397
398 long roleId = ParamUtil.getLong(actionRequest, "roleId");
399
400 UserServiceUtil.deleteRoleUser(roleId, user.getUserId());
401 }
402
403 protected void deleteUsers(ActionRequest actionRequest) throws Exception {
404 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
405
406 long[] deleteUserIds = StringUtil.split(
407 ParamUtil.getString(actionRequest, "deleteUserIds"), 0L);
408
409 for (int i = 0; i < deleteUserIds.length; i++) {
410 if (cmd.equals(Constants.DEACTIVATE) ||
411 cmd.equals(Constants.RESTORE)) {
412
413 boolean active = !cmd.equals(Constants.DEACTIVATE);
414
415 UserServiceUtil.updateActive(deleteUserIds[i], active);
416 }
417 else {
418 UserServiceUtil.deleteUser(deleteUserIds[i]);
419 }
420 }
421 }
422
423 protected List<AnnouncementsDelivery> getAnnouncementsDeliveries(
424 ActionRequest actionRequest) {
425
426 List<AnnouncementsDelivery> announcementsDeliveries =
427 new ArrayList<AnnouncementsDelivery>();
428
429 for (String type : AnnouncementsEntryConstants.TYPES) {
430 boolean email = ParamUtil.getBoolean(
431 actionRequest, "announcementsType" + type + "Email");
432 boolean sms = ParamUtil.getBoolean(
433 actionRequest, "announcementsType" + type + "Sms");
434 boolean website = ParamUtil.getBoolean(
435 actionRequest, "announcementsType" + type + "Website");
436
437 AnnouncementsDelivery announcementsDelivery =
438 new AnnouncementsDeliveryImpl();
439
440 announcementsDelivery.setType(type);
441 announcementsDelivery.setEmail(email);
442 announcementsDelivery.setSms(sms);
443 announcementsDelivery.setWebsite(website);
444
445 announcementsDeliveries.add(announcementsDelivery);
446 }
447
448 return announcementsDeliveries;
449 }
450
451 protected long[] getLongArray(PortletRequest portletRequest, String name) {
452 String value = portletRequest.getParameter(name);
453
454 if (value == null) {
455 return null;
456 }
457
458 return StringUtil.split(GetterUtil.getString(value), 0L);
459 }
460
461 protected User updateLockout(ActionRequest actionRequest) throws Exception {
462 User user = PortalUtil.getSelectedUser(actionRequest);
463
464 UserServiceUtil.updateLockout(user.getUserId(), false);
465
466 return user;
467 }
468
469 protected Object[] updateUser(ActionRequest actionRequest)
470 throws Exception {
471
472 ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(
473 WebKeys.THEME_DISPLAY);
474
475 User user = PortalUtil.getSelectedUser(actionRequest);
476
477 Contact contact = user.getContact();
478
479 String oldPassword = AdminUtil.getUpdateUserPassword(
480 actionRequest, user.getUserId());
481 String newPassword1 = ParamUtil.getString(actionRequest, "password1");
482 String newPassword2 = ParamUtil.getString(actionRequest, "password2");
483 boolean passwordReset = ParamUtil.getBoolean(
484 actionRequest, "passwordReset");
485
486 String reminderQueryQuestion = BeanParamUtil.getString(
487 user, actionRequest, "reminderQueryQuestion");
488
489 if (reminderQueryQuestion.equals(EnterpriseAdminUtil.CUSTOM_QUESTION)) {
490 reminderQueryQuestion = BeanParamUtil.getString(
491 user, actionRequest, "reminderQueryCustomQuestion");
492 }
493
494 String reminderQueryAnswer = BeanParamUtil.getString(
495 user, actionRequest, "reminderQueryAnswer");
496 String oldScreenName = user.getScreenName();
497 String screenName = BeanParamUtil.getString(
498 user, actionRequest, "screenName");
499 String emailAddress = BeanParamUtil.getString(
500 user, actionRequest, "emailAddress");
501 String openId = BeanParamUtil.getString(user, actionRequest, "openId");
502 String oldLanguageId = user.getLanguageId();
503 String languageId = BeanParamUtil.getString(
504 user, actionRequest, "languageId");
505 String timeZoneId = BeanParamUtil.getString(
506 user, actionRequest, "timeZoneId");
507 String greeting = BeanParamUtil.getString(
508 user, actionRequest, "greeting");
509 String firstName = BeanParamUtil.getString(
510 user, actionRequest, "firstName");
511 String middleName = BeanParamUtil.getString(
512 user, actionRequest, "middleName");
513 String lastName = BeanParamUtil.getString(
514 user, actionRequest, "lastName");
515 int prefixId = BeanParamUtil.getInteger(
516 user, actionRequest, "prefixId");
517 int suffixId = BeanParamUtil.getInteger(
518 user, actionRequest, "suffixId");
519 boolean male = BeanParamUtil.getBoolean(
520 user, actionRequest, "male", true);
521
522 Calendar birthdayCal = CalendarFactoryUtil.getCalendar();
523
524 birthdayCal.setTime(contact.getBirthday());
525
526 int birthdayMonth = ParamUtil.getInteger(
527 actionRequest, "birthdayMonth", birthdayCal.get(Calendar.MONTH));
528 int birthdayDay = ParamUtil.getInteger(
529 actionRequest, "birthdayDay", birthdayCal.get(Calendar.DATE));
530 int birthdayYear = ParamUtil.getInteger(
531 actionRequest, "birthdayYear", birthdayCal.get(Calendar.YEAR));
532 String comments = BeanParamUtil.getString(
533 user, actionRequest, "comments");
534 String smsSn = BeanParamUtil.getString(contact, actionRequest, "smsSn");
535 String aimSn = BeanParamUtil.getString(contact, actionRequest, "aimSn");
536 String facebookSn = BeanParamUtil.getString(
537 contact, actionRequest, "facebookSn");
538 String icqSn = BeanParamUtil.getString(contact, actionRequest, "icqSn");
539 String jabberSn = BeanParamUtil.getString(
540 contact, actionRequest, "jabberSn");
541 String msnSn = BeanParamUtil.getString(contact, actionRequest, "msnSn");
542 String mySpaceSn = BeanParamUtil.getString(
543 contact, actionRequest, "mySpaceSn");
544 String skypeSn = BeanParamUtil.getString(
545 contact, actionRequest, "skypeSn");
546 String twitterSn = BeanParamUtil.getString(
547 contact, actionRequest, "twitterSn");
548 String ymSn = BeanParamUtil.getString(contact, actionRequest, "ymSn");
549 String jobTitle = BeanParamUtil.getString(
550 user, actionRequest, "jobTitle");
551 long[] groupIds = getLongArray(
552 actionRequest, "groupsSearchContainerPrimaryKeys");
553 long[] organizationIds = getLongArray(
554 actionRequest, "organizationsSearchContainerPrimaryKeys");
555 long[] roleIds = getLongArray(
556 actionRequest, "rolesSearchContainerPrimaryKeys");
557 List<UserGroupRole> userGroupRoles =
558 EnterpriseAdminUtil.getUserGroupRoles(actionRequest);
559 long[] userGroupIds = getLongArray(
560 actionRequest, "userGroupsSearchContainerPrimaryKeys");
561 List<Address> addresses = EnterpriseAdminUtil.getAddresses(
562 actionRequest);
563 List<EmailAddress> emailAddresses =
564 EnterpriseAdminUtil.getEmailAddresses(actionRequest);
565 List<Phone> phones = EnterpriseAdminUtil.getPhones(actionRequest);
566 List<Website> websites = EnterpriseAdminUtil.getWebsites(actionRequest);
567 List<AnnouncementsDelivery> announcementsDeliveries =
568 getAnnouncementsDeliveries(actionRequest);
569
570 ServiceContext serviceContext = ServiceContextFactory.getInstance(
571 User.class.getName(), actionRequest);
572
573 user = UserServiceUtil.updateUser(
574 user.getUserId(), oldPassword, newPassword1, newPassword2,
575 passwordReset, reminderQueryQuestion, reminderQueryAnswer,
576 screenName, emailAddress, openId, languageId, timeZoneId,greeting,
577 comments, firstName, middleName, lastName, prefixId, suffixId, male,
578 birthdayMonth, birthdayDay, birthdayYear, smsSn, aimSn, facebookSn,
579 icqSn, jabberSn, msnSn, mySpaceSn, skypeSn, twitterSn, ymSn,
580 jobTitle, groupIds, organizationIds, roleIds, userGroupRoles,
581 userGroupIds, addresses, emailAddresses, phones, websites,
582 announcementsDeliveries, serviceContext);
583
584 if (oldScreenName.equals(user.getScreenName())) {
585 oldScreenName = StringPool.BLANK;
586 }
587
588 boolean deletePortrait = ParamUtil.getBoolean(
589 actionRequest, "deletePortrait");
590
591 if (deletePortrait) {
592 UserServiceUtil.deletePortrait(user.getUserId());
593 }
594
595 if (user.getUserId() == themeDisplay.getUserId()) {
596
597
599 HttpServletRequest request = PortalUtil.getHttpServletRequest(
600 actionRequest);
601 HttpSession session = request.getSession();
602
603 session.removeAttribute(Globals.LOCALE_KEY);
604
605
607 PortletSession portletSession = actionRequest.getPortletSession();
608
609 InvokerPortletImpl.clearResponses(portletSession);
610
611
613 if (Validator.isNotNull(newPassword1)) {
614 portletSession.setAttribute(
615 WebKeys.USER_PASSWORD, newPassword1,
616 PortletSession.APPLICATION_SCOPE);
617 }
618 }
619
620 long publicLayoutSetPrototypeId = ParamUtil.getLong(
621 actionRequest, "publicLayoutSetPrototypeId");
622 long privateLayoutSetPrototypeId = ParamUtil.getLong(
623 actionRequest, "privateLayoutSetPrototypeId");
624
625 CommunitiesUtil.applyLayoutSetPrototypes(
626 user.getGroup(), publicLayoutSetPrototypeId,
627 privateLayoutSetPrototypeId);
628
629 return new Object[] {user, oldScreenName, oldLanguageId};
630 }
631
632 }