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.PropsValues;
078 import com.liferay.portal.util.WebKeys;
079 import com.liferay.portlet.InvokerPortletImpl;
080 import com.liferay.portlet.admin.util.AdminUtil;
081 import com.liferay.portlet.announcements.model.AnnouncementsDelivery;
082 import com.liferay.portlet.announcements.model.AnnouncementsEntryConstants;
083 import com.liferay.portlet.announcements.model.impl.AnnouncementsDeliveryImpl;
084 import com.liferay.portlet.sites.util.SitesUtil;
085 import com.liferay.portlet.usersadmin.util.UsersAdminUtil;
086
087 import java.util.ArrayList;
088 import java.util.Calendar;
089 import java.util.List;
090 import java.util.Locale;
091
092 import javax.portlet.ActionRequest;
093 import javax.portlet.ActionResponse;
094 import javax.portlet.PortletConfig;
095 import javax.portlet.PortletRequest;
096 import javax.portlet.PortletSession;
097 import javax.portlet.RenderRequest;
098 import javax.portlet.RenderResponse;
099
100 import javax.servlet.http.HttpServletRequest;
101 import javax.servlet.http.HttpServletResponse;
102 import javax.servlet.http.HttpSession;
103
104 import org.apache.struts.Globals;
105 import org.apache.struts.action.ActionForm;
106 import org.apache.struts.action.ActionForward;
107 import org.apache.struts.action.ActionMapping;
108
109
115 public class EditUserAction extends PortletAction {
116
117 @Override
118 public void processAction(
119 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
120 ActionRequest actionRequest, ActionResponse actionResponse)
121 throws Exception {
122
123 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
124
125 try {
126 User user = null;
127 String oldScreenName = StringPool.BLANK;
128 String oldLanguageId = StringPool.BLANK;
129
130 if (cmd.equals(Constants.ADD)) {
131 user = addUser(actionRequest);
132 }
133 else if (cmd.equals(Constants.DEACTIVATE) ||
134 cmd.equals(Constants.DELETE) ||
135 cmd.equals(Constants.RESTORE)) {
136
137 deleteUsers(actionRequest);
138 }
139 else if (cmd.equals("deleteRole")) {
140 deleteRole(actionRequest);
141 }
142 else if (cmd.equals(Constants.UPDATE)) {
143 Object[] returnValue = updateUser(
144 actionRequest, actionResponse);
145
146 user = (User)returnValue[0];
147 oldScreenName = ((String)returnValue[1]);
148 oldLanguageId = ((String)returnValue[2]);
149 }
150 else if (cmd.equals("unlock")) {
151 user = updateLockout(actionRequest);
152 }
153
154 ThemeDisplay themeDisplay =
155 (ThemeDisplay)actionRequest.getAttribute(
156 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(
377 actionRequest);
378 List<EmailAddress> emailAddresses = UsersAdminUtil.getEmailAddresses(
379 actionRequest);
380 List<Phone> phones = UsersAdminUtil.getPhones(actionRequest);
381 List<Website> websites = UsersAdminUtil.getWebsites(actionRequest);
382 List<AnnouncementsDelivery> announcementsDeliveries =
383 getAnnouncementsDeliveries(actionRequest);
384 boolean sendEmail = true;
385
386 ServiceContext serviceContext = ServiceContextFactory.getInstance(
387 User.class.getName(), actionRequest);
388
389 User user = UserServiceUtil.addUser(
390 themeDisplay.getCompanyId(), autoPassword, password1, password2,
391 autoScreenName, screenName, emailAddress, facebookId, openId,
392 LocaleUtil.getDefault(), firstName, middleName, lastName, prefixId,
393 suffixId, male, birthdayMonth, birthdayDay, birthdayYear, jobTitle,
394 groupIds, organizationIds, roleIds, userGroupIds, addresses,
395 emailAddresses, phones, websites, announcementsDeliveries,
396 sendEmail, serviceContext);
397
398 if (!userGroupRoles.isEmpty()) {
399 for (UserGroupRole userGroupRole : userGroupRoles) {
400 userGroupRole.setUserId(user.getUserId());
401 }
402
403 user = UserServiceUtil.updateUser(
404 user.getUserId(), StringPool.BLANK, StringPool.BLANK,
405 StringPool.BLANK, false, reminderQueryQuestion,
406 reminderQueryAnswer, screenName, emailAddress, facebookId,
407 openId, languageId, timeZoneId, greeting, comments, firstName,
408 middleName, lastName, prefixId, suffixId, male, birthdayMonth,
409 birthdayDay, birthdayYear, smsSn, aimSn, facebookSn, icqSn,
410 jabberSn, msnSn, mySpaceSn, skypeSn, twitterSn, ymSn, jobTitle,
411 groupIds, organizationIds, roleIds, userGroupRoles,
412 userGroupIds, addresses, emailAddresses, phones, websites,
413 announcementsDeliveries, serviceContext);
414 }
415
416 long publicLayoutSetPrototypeId = ParamUtil.getLong(
417 actionRequest, "publicLayoutSetPrototypeId");
418 long privateLayoutSetPrototypeId = ParamUtil.getLong(
419 actionRequest, "privateLayoutSetPrototypeId");
420
421 SitesUtil.applyLayoutSetPrototypes(
422 user.getGroup(), publicLayoutSetPrototypeId,
423 privateLayoutSetPrototypeId, serviceContext);
424
425 return user;
426 }
427
428 protected void deleteRole(ActionRequest actionRequest) throws Exception {
429 User user = PortalUtil.getSelectedUser(actionRequest);
430
431 long roleId = ParamUtil.getLong(actionRequest, "roleId");
432
433 UserServiceUtil.deleteRoleUser(roleId, user.getUserId());
434 }
435
436 protected void deleteUsers(ActionRequest actionRequest) throws Exception {
437 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
438
439 long[] deleteUserIds = StringUtil.split(
440 ParamUtil.getString(actionRequest, "deleteUserIds"), 0L);
441
442 for (int i = 0; i < deleteUserIds.length; i++) {
443 if (cmd.equals(Constants.DEACTIVATE) ||
444 cmd.equals(Constants.RESTORE)) {
445
446 int status = WorkflowConstants.STATUS_APPROVED;
447
448 if (cmd.equals(Constants.DEACTIVATE)) {
449 status = WorkflowConstants.STATUS_INACTIVE;
450 }
451
452 UserServiceUtil.updateStatus(deleteUserIds[i], status);
453 }
454 else {
455 UserServiceUtil.deleteUser(deleteUserIds[i]);
456 }
457 }
458 }
459
460 protected List<AnnouncementsDelivery> getAnnouncementsDeliveries(
461 ActionRequest actionRequest) {
462
463 List<AnnouncementsDelivery> announcementsDeliveries =
464 new ArrayList<AnnouncementsDelivery>();
465
466 for (String type : AnnouncementsEntryConstants.TYPES) {
467 boolean email = ParamUtil.getBoolean(
468 actionRequest, "announcementsType" + type + "Email");
469 boolean sms = ParamUtil.getBoolean(
470 actionRequest, "announcementsType" + type + "Sms");
471 boolean website = ParamUtil.getBoolean(
472 actionRequest, "announcementsType" + type + "Website");
473
474 AnnouncementsDelivery announcementsDelivery =
475 new AnnouncementsDeliveryImpl();
476
477 announcementsDelivery.setType(type);
478 announcementsDelivery.setEmail(email);
479 announcementsDelivery.setSms(sms);
480 announcementsDelivery.setWebsite(website);
481
482 announcementsDeliveries.add(announcementsDelivery);
483 }
484
485 return announcementsDeliveries;
486 }
487
488 protected long[] getLongArray(PortletRequest portletRequest, String name) {
489 String value = portletRequest.getParameter(name);
490
491 if (value == null) {
492 return null;
493 }
494
495 return StringUtil.split(GetterUtil.getString(value), 0L);
496 }
497
498 protected User updateLockout(ActionRequest actionRequest) throws Exception {
499 User user = PortalUtil.getSelectedUser(actionRequest);
500
501 UserServiceUtil.updateLockoutById(user.getUserId(), false);
502
503 return user;
504 }
505
506 protected Object[] updateUser(
507 ActionRequest actionRequest, ActionResponse actionResponse)
508 throws Exception {
509
510 ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(
511 WebKeys.THEME_DISPLAY);
512
513 User user = PortalUtil.getSelectedUser(actionRequest);
514
515 boolean deleteLogo = ParamUtil.getBoolean(actionRequest, "deleteLogo");
516
517 if (deleteLogo) {
518 UserServiceUtil.deletePortrait(user.getUserId());
519 }
520
521 Contact contact = user.getContact();
522
523 String oldPassword = AdminUtil.getUpdateUserPassword(
524 actionRequest, user.getUserId());
525 String newPassword1 = actionRequest.getParameter("password1");
526 String newPassword2 = actionRequest.getParameter("password2");
527 boolean passwordReset = ParamUtil.getBoolean(
528 actionRequest, "passwordReset");
529
530 String reminderQueryQuestion = BeanParamUtil.getString(
531 user, actionRequest, "reminderQueryQuestion");
532
533 if (reminderQueryQuestion.equals(UsersAdminUtil.CUSTOM_QUESTION)) {
534 reminderQueryQuestion = BeanParamUtil.getString(
535 user, actionRequest, "reminderQueryCustomQuestion");
536 }
537
538 String reminderQueryAnswer = BeanParamUtil.getString(
539 user, actionRequest, "reminderQueryAnswer");
540 String oldScreenName = user.getScreenName();
541 String screenName = BeanParamUtil.getString(
542 user, actionRequest, "screenName");
543 String oldEmailAddress = user.getEmailAddress();
544 String emailAddress = BeanParamUtil.getString(
545 user, actionRequest, "emailAddress");
546 long facebookId = user.getFacebookId();
547 String openId = BeanParamUtil.getString(user, actionRequest, "openId");
548 String oldLanguageId = user.getLanguageId();
549 String languageId = BeanParamUtil.getString(
550 user, actionRequest, "languageId");
551 String timeZoneId = BeanParamUtil.getString(
552 user, actionRequest, "timeZoneId");
553 String greeting = BeanParamUtil.getString(
554 user, actionRequest, "greeting");
555 String firstName = BeanParamUtil.getString(
556 user, actionRequest, "firstName");
557 String middleName = BeanParamUtil.getString(
558 user, actionRequest, "middleName");
559 String lastName = BeanParamUtil.getString(
560 user, actionRequest, "lastName");
561 int prefixId = BeanParamUtil.getInteger(
562 contact, actionRequest, "prefixId");
563 int suffixId = BeanParamUtil.getInteger(
564 contact, actionRequest, "suffixId");
565 boolean male = BeanParamUtil.getBoolean(
566 user, actionRequest, "male", true);
567
568 Calendar birthdayCal = CalendarFactoryUtil.getCalendar();
569
570 birthdayCal.setTime(contact.getBirthday());
571
572 int birthdayMonth = ParamUtil.getInteger(
573 actionRequest, "birthdayMonth", birthdayCal.get(Calendar.MONTH));
574 int birthdayDay = ParamUtil.getInteger(
575 actionRequest, "birthdayDay", birthdayCal.get(Calendar.DATE));
576 int birthdayYear = ParamUtil.getInteger(
577 actionRequest, "birthdayYear", birthdayCal.get(Calendar.YEAR));
578 String comments = BeanParamUtil.getString(
579 user, actionRequest, "comments");
580 String smsSn = BeanParamUtil.getString(contact, actionRequest, "smsSn");
581 String aimSn = BeanParamUtil.getString(contact, actionRequest, "aimSn");
582 String facebookSn = BeanParamUtil.getString(
583 contact, actionRequest, "facebookSn");
584 String icqSn = BeanParamUtil.getString(contact, actionRequest, "icqSn");
585 String jabberSn = BeanParamUtil.getString(
586 contact, actionRequest, "jabberSn");
587 String msnSn = BeanParamUtil.getString(contact, actionRequest, "msnSn");
588 String mySpaceSn = BeanParamUtil.getString(
589 contact, actionRequest, "mySpaceSn");
590 String skypeSn = BeanParamUtil.getString(
591 contact, actionRequest, "skypeSn");
592 String twitterSn = BeanParamUtil.getString(
593 contact, actionRequest, "twitterSn");
594 String ymSn = BeanParamUtil.getString(contact, actionRequest, "ymSn");
595 String jobTitle = BeanParamUtil.getString(
596 user, actionRequest, "jobTitle");
597 long[] groupIds = getLongArray(
598 actionRequest, "groupsSearchContainerPrimaryKeys");
599 long[] organizationIds = getLongArray(
600 actionRequest, "organizationsSearchContainerPrimaryKeys");
601 long[] roleIds = getLongArray(
602 actionRequest, "rolesSearchContainerPrimaryKeys");
603
604 List<UserGroupRole> userGroupRoles = null;
605
606 if ((actionRequest.getParameter("groupRolesGroupIds") != null) ||
607 (actionRequest.getParameter("groupRolesRoleIds") != null)) {
608
609 userGroupRoles = UsersAdminUtil.getUserGroupRoles(actionRequest);
610 }
611
612 long[] userGroupIds = getLongArray(
613 actionRequest, "userGroupsSearchContainerPrimaryKeys");
614 List<Address> addresses = UsersAdminUtil.getAddresses(actionRequest);
615 List<EmailAddress> emailAddresses = UsersAdminUtil.getEmailAddresses(
616 actionRequest);
617 List<Phone> phones = UsersAdminUtil.getPhones(actionRequest);
618 List<Website> websites = UsersAdminUtil.getWebsites(actionRequest);
619 List<AnnouncementsDelivery> announcementsDeliveries =
620 getAnnouncementsDeliveries(actionRequest);
621
622 ServiceContext serviceContext = ServiceContextFactory.getInstance(
623 User.class.getName(), actionRequest);
624
625 user = UserServiceUtil.updateUser(
626 user.getUserId(), oldPassword, newPassword1, newPassword2,
627 passwordReset, reminderQueryQuestion, reminderQueryAnswer,
628 screenName, emailAddress, facebookId, openId, languageId,
629 timeZoneId, greeting, comments, firstName, middleName, lastName,
630 prefixId, suffixId, male, birthdayMonth, birthdayDay, birthdayYear,
631 smsSn, aimSn, facebookSn, icqSn, jabberSn, msnSn, mySpaceSn,
632 skypeSn, twitterSn, ymSn, jobTitle, groupIds, organizationIds,
633 roleIds, userGroupRoles, userGroupIds, addresses, emailAddresses,
634 phones, websites, announcementsDeliveries, serviceContext);
635
636 if (oldScreenName.equals(user.getScreenName())) {
637 oldScreenName = StringPool.BLANK;
638 }
639
640 if (user.getUserId() == themeDisplay.getUserId()) {
641
642
643
644 HttpServletRequest request = PortalUtil.getHttpServletRequest(
645 actionRequest);
646 HttpServletResponse response= PortalUtil.getHttpServletResponse(
647 actionResponse);
648 HttpSession session = request.getSession();
649
650 session.removeAttribute(Globals.LOCALE_KEY);
651
652 Locale locale = LocaleUtil.fromLanguageId(languageId);
653
654 LanguageUtil.updateCookie(request, response, locale);
655
656
657
658 PortletSession portletSession = actionRequest.getPortletSession();
659
660 InvokerPortletImpl.clearResponses(portletSession);
661
662
663
664 if (PropsValues.SESSION_STORE_PASSWORD &&
665 Validator.isNotNull(newPassword1)) {
666
667 portletSession.setAttribute(
668 WebKeys.USER_PASSWORD, newPassword1,
669 PortletSession.APPLICATION_SCOPE);
670 }
671 }
672
673 long publicLayoutSetPrototypeId = ParamUtil.getLong(
674 actionRequest, "publicLayoutSetPrototypeId");
675 long privateLayoutSetPrototypeId = ParamUtil.getLong(
676 actionRequest, "privateLayoutSetPrototypeId");
677
678 SitesUtil.applyLayoutSetPrototypes(
679 user.getGroup(), publicLayoutSetPrototypeId,
680 privateLayoutSetPrototypeId, serviceContext);
681
682 Company company = PortalUtil.getCompany(actionRequest);
683
684 if (company.isStrangersVerify() &&
685 !oldEmailAddress.equalsIgnoreCase(emailAddress)) {
686
687 SessionMessages.add(actionRequest, "verificationEmailSent");
688 }
689
690 return new Object[] {user, oldScreenName, oldLanguageId};
691 }
692
693 }