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