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