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