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