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