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