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.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.PortletSession;
101 import javax.portlet.RenderRequest;
102 import javax.portlet.RenderResponse;
103
104 import javax.servlet.http.HttpServletRequest;
105 import javax.servlet.http.HttpServletResponse;
106 import javax.servlet.http.HttpSession;
107
108 import org.apache.struts.Globals;
109 import org.apache.struts.action.ActionForm;
110 import org.apache.struts.action.ActionForward;
111 import org.apache.struts.action.ActionMapping;
112
113
119 public class EditUserAction extends PortletAction {
120
121 @Override
122 public void processAction(
123 ActionMapping actionMapping, ActionForm actionForm,
124 PortletConfig portletConfig, ActionRequest actionRequest,
125 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 boolean updateLanguageId = false;
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 updateLanguageId = ((Boolean)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 (updateLanguageId && themeDisplay.isI18n()) {
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 (UserLocalServiceUtil.fetchUserById(
218 scopeGroup.getClassPK()) == null)) {
219
220 redirect = HttpUtil.setParameter(redirect, "doAsGroupId" , 0);
221 redirect = HttpUtil.setParameter(redirect, "refererPlid" , 0);
222 }
223
224 sendRedirect(actionRequest, actionResponse, redirect);
225 }
226 catch (Exception e) {
227 if (e instanceof NoSuchUserException ||
228 e instanceof PrincipalException) {
229
230 SessionErrors.add(actionRequest, e.getClass());
231
232 setForward(actionRequest, "portlet.users_admin.error");
233 }
234 else if (e instanceof AddressCityException ||
235 e instanceof AddressStreetException ||
236 e instanceof AddressZipException ||
237 e instanceof CompanyMaxUsersException ||
238 e instanceof ContactBirthdayException ||
239 e instanceof ContactFirstNameException ||
240 e instanceof ContactFullNameException ||
241 e instanceof ContactLastNameException ||
242 e instanceof DuplicateOpenIdException ||
243 e instanceof DuplicateUserEmailAddressException ||
244 e instanceof DuplicateUserScreenNameException ||
245 e instanceof EmailAddressException ||
246 e instanceof GroupFriendlyURLException ||
247 e instanceof MembershipPolicyException ||
248 e instanceof NoSuchCountryException ||
249 e instanceof NoSuchListTypeException ||
250 e instanceof NoSuchRegionException ||
251 e instanceof PhoneNumberException ||
252 e instanceof RequiredUserException ||
253 e instanceof ReservedUserEmailAddressException ||
254 e instanceof ReservedUserScreenNameException ||
255 e instanceof UserEmailAddressException ||
256 e instanceof UserFieldException ||
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 String password1 = actionRequest.getParameter("password1");
276 String password2 = actionRequest.getParameter("password2");
277
278 boolean submittedPassword = false;
279
280 if (!Validator.isBlank(password1) ||
281 !Validator.isBlank(password2)) {
282
283 submittedPassword = true;
284 }
285
286 if (e instanceof CompanyMaxUsersException ||
287 e instanceof RequiredUserException ||
288 submittedPassword) {
289
290 String redirect = PortalUtil.escapeRedirect(
291 ParamUtil.getString(actionRequest, "redirect"));
292
293 if (submittedPassword) {
294 User user = PortalUtil.getSelectedUser(actionRequest);
295
296 redirect = HttpUtil.setParameter(
297 redirect, actionResponse.getNamespace() + "p_u_i_d",
298 user.getUserId());
299 }
300
301 if (Validator.isNotNull(redirect)) {
302 actionResponse.sendRedirect(redirect);
303 }
304 }
305 }
306 else {
307 throw e;
308 }
309 }
310 }
311
312 @Override
313 public ActionForward render(
314 ActionMapping actionMapping, ActionForm actionForm,
315 PortletConfig portletConfig, RenderRequest renderRequest,
316 RenderResponse renderResponse)
317 throws Exception {
318
319 try {
320 PortalUtil.getSelectedUser(renderRequest);
321 }
322 catch (Exception e) {
323 if (e instanceof PrincipalException) {
324 SessionErrors.add(renderRequest, e.getClass());
325
326 return actionMapping.findForward("portlet.users_admin.error");
327 }
328 else {
329 throw e;
330 }
331 }
332
333 return actionMapping.findForward(
334 getForward(renderRequest, "portlet.users_admin.edit_user"));
335 }
336
337 protected User addUser(ActionRequest actionRequest) throws Exception {
338 ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(
339 WebKeys.THEME_DISPLAY);
340
341 boolean autoPassword = ParamUtil.getBoolean(
342 actionRequest, "autoPassword", true);
343 String password1 = actionRequest.getParameter("password1");
344 String password2 = actionRequest.getParameter("password2");
345
346 String reminderQueryQuestion = ParamUtil.getString(
347 actionRequest, "reminderQueryQuestion");
348
349 if (reminderQueryQuestion.equals(UsersAdmin.CUSTOM_QUESTION)) {
350 reminderQueryQuestion = ParamUtil.getString(
351 actionRequest, "reminderQueryCustomQuestion");
352 }
353
354 String reminderQueryAnswer = ParamUtil.getString(
355 actionRequest, "reminderQueryAnswer");
356 boolean autoScreenName = ParamUtil.getBoolean(
357 actionRequest, "autoScreenName");
358 String screenName = ParamUtil.getString(actionRequest, "screenName");
359 String emailAddress = ParamUtil.getString(
360 actionRequest, "emailAddress");
361 long facebookId = 0;
362 String openId = ParamUtil.getString(actionRequest, "openId");
363 String languageId = ParamUtil.getString(actionRequest, "languageId");
364 String timeZoneId = ParamUtil.getString(actionRequest, "timeZoneId");
365 String greeting = ParamUtil.getString(actionRequest, "greeting");
366 String firstName = ParamUtil.getString(actionRequest, "firstName");
367 String middleName = ParamUtil.getString(actionRequest, "middleName");
368 String lastName = ParamUtil.getString(actionRequest, "lastName");
369 int prefixId = ParamUtil.getInteger(actionRequest, "prefixId");
370 int suffixId = ParamUtil.getInteger(actionRequest, "suffixId");
371 boolean male = ParamUtil.getBoolean(actionRequest, "male", true);
372 int birthdayMonth = ParamUtil.getInteger(
373 actionRequest, "birthdayMonth");
374 int birthdayDay = ParamUtil.getInteger(actionRequest, "birthdayDay");
375 int birthdayYear = ParamUtil.getInteger(actionRequest, "birthdayYear");
376 String comments = ParamUtil.getString(actionRequest, "comments");
377 String smsSn = ParamUtil.getString(actionRequest, "smsSn");
378 String aimSn = ParamUtil.getString(actionRequest, "aimSn");
379 String facebookSn = ParamUtil.getString(actionRequest, "facebookSn");
380 String icqSn = ParamUtil.getString(actionRequest, "icqSn");
381 String jabberSn = ParamUtil.getString(actionRequest, "jabberSn");
382 String msnSn = ParamUtil.getString(actionRequest, "msnSn");
383 String mySpaceSn = ParamUtil.getString(actionRequest, "mySpaceSn");
384 String skypeSn = ParamUtil.getString(actionRequest, "skypeSn");
385 String twitterSn = ParamUtil.getString(actionRequest, "twitterSn");
386 String ymSn = ParamUtil.getString(actionRequest, "ymSn");
387 String jobTitle = ParamUtil.getString(actionRequest, "jobTitle");
388 long[] groupIds = UsersAdminUtil.getGroupIds(actionRequest);
389 long[] organizationIds = UsersAdminUtil.getOrganizationIds(
390 actionRequest);
391 long[] roleIds = UsersAdminUtil.getRoleIds(actionRequest);
392 List<UserGroupRole> userGroupRoles = UsersAdminUtil.getUserGroupRoles(
393 actionRequest);
394 long[] userGroupIds = UsersAdminUtil.getUserGroupIds(actionRequest);
395 List<Address> addresses = UsersAdminUtil.getAddresses(actionRequest);
396 List<EmailAddress> emailAddresses = UsersAdminUtil.getEmailAddresses(
397 actionRequest);
398 List<Phone> phones = UsersAdminUtil.getPhones(actionRequest);
399 List<Website> websites = UsersAdminUtil.getWebsites(actionRequest);
400 List<AnnouncementsDelivery> announcementsDeliveries =
401 getAnnouncementsDeliveries(actionRequest);
402 boolean sendEmail = true;
403
404 ServiceContext serviceContext = ServiceContextFactory.getInstance(
405 User.class.getName(), actionRequest);
406
407 User user = UserServiceUtil.addUser(
408 themeDisplay.getCompanyId(), autoPassword, password1, password2,
409 autoScreenName, screenName, emailAddress, facebookId, openId,
410 LocaleUtil.getDefault(), firstName, middleName, lastName, prefixId,
411 suffixId, male, birthdayMonth, birthdayDay, birthdayYear, jobTitle,
412 groupIds, organizationIds, roleIds, userGroupIds, addresses,
413 emailAddresses, phones, websites, announcementsDeliveries,
414 sendEmail, serviceContext);
415
416 if (!userGroupRoles.isEmpty()) {
417 for (UserGroupRole userGroupRole : userGroupRoles) {
418 userGroupRole.setUserId(user.getUserId());
419 }
420
421 user = UserServiceUtil.updateUser(
422 user.getUserId(), StringPool.BLANK, StringPool.BLANK,
423 StringPool.BLANK, false, reminderQueryQuestion,
424 reminderQueryAnswer, user.getScreenName(),
425 user.getEmailAddress(), facebookId, openId, languageId,
426 timeZoneId, greeting, comments, firstName, middleName, lastName,
427 prefixId, suffixId, male, birthdayMonth, birthdayDay,
428 birthdayYear, smsSn, aimSn, facebookSn, icqSn, jabberSn, msnSn,
429 mySpaceSn, skypeSn, twitterSn, ymSn, jobTitle, groupIds,
430 organizationIds, roleIds, userGroupRoles, userGroupIds,
431 addresses, emailAddresses, phones, websites,
432 announcementsDeliveries, serviceContext);
433 }
434
435 long publicLayoutSetPrototypeId = ParamUtil.getLong(
436 actionRequest, "publicLayoutSetPrototypeId");
437 long privateLayoutSetPrototypeId = ParamUtil.getLong(
438 actionRequest, "privateLayoutSetPrototypeId");
439 boolean publicLayoutSetPrototypeLinkEnabled = ParamUtil.getBoolean(
440 actionRequest, "publicLayoutSetPrototypeLinkEnabled");
441 boolean privateLayoutSetPrototypeLinkEnabled = ParamUtil.getBoolean(
442 actionRequest, "privateLayoutSetPrototypeLinkEnabled");
443
444 SitesUtil.updateLayoutSetPrototypesLinks(
445 user.getGroup(), publicLayoutSetPrototypeId,
446 privateLayoutSetPrototypeId, publicLayoutSetPrototypeLinkEnabled,
447 privateLayoutSetPrototypeLinkEnabled);
448
449 return user;
450 }
451
452 protected void deleteRole(ActionRequest actionRequest) throws Exception {
453 User user = PortalUtil.getSelectedUser(actionRequest);
454
455 long roleId = ParamUtil.getLong(actionRequest, "roleId");
456
457 UserServiceUtil.deleteRoleUser(roleId, user.getUserId());
458 }
459
460 protected void deleteUsers(ActionRequest actionRequest) throws Exception {
461 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
462
463 long[] deleteUserIds = StringUtil.split(
464 ParamUtil.getString(actionRequest, "deleteUserIds"), 0L);
465
466 for (long deleteUserId : deleteUserIds) {
467 if (cmd.equals(Constants.DEACTIVATE) ||
468 cmd.equals(Constants.RESTORE)) {
469
470 int status = WorkflowConstants.STATUS_APPROVED;
471
472 if (cmd.equals(Constants.DEACTIVATE)) {
473 status = WorkflowConstants.STATUS_INACTIVE;
474 }
475
476 UserServiceUtil.updateStatus(deleteUserId, status);
477 }
478 else {
479 UserServiceUtil.deleteUser(deleteUserId);
480 }
481 }
482 }
483
484 protected List<AnnouncementsDelivery> getAnnouncementsDeliveries(
485 ActionRequest actionRequest) {
486
487 List<AnnouncementsDelivery> announcementsDeliveries =
488 new ArrayList<AnnouncementsDelivery>();
489
490 for (String type : AnnouncementsEntryConstants.TYPES) {
491 boolean email = ParamUtil.getBoolean(
492 actionRequest, "announcementsType" + type + "Email");
493 boolean sms = ParamUtil.getBoolean(
494 actionRequest, "announcementsType" + type + "Sms");
495 boolean website = ParamUtil.getBoolean(
496 actionRequest, "announcementsType" + type + "Website");
497
498 AnnouncementsDelivery announcementsDelivery =
499 new AnnouncementsDeliveryImpl();
500
501 announcementsDelivery.setType(type);
502 announcementsDelivery.setEmail(email);
503 announcementsDelivery.setSms(sms);
504 announcementsDelivery.setWebsite(website);
505
506 announcementsDeliveries.add(announcementsDelivery);
507 }
508
509 return announcementsDeliveries;
510 }
511
512 protected List<AnnouncementsDelivery> getAnnouncementsDeliveries(
513 ActionRequest actionRequest, User user)
514 throws Exception {
515
516 if (actionRequest.getParameter(
517 "announcementsType" + AnnouncementsEntryConstants.TYPES[0] +
518 "Email") == null) {
519
520 return AnnouncementsDeliveryLocalServiceUtil.getUserDeliveries(
521 user.getUserId());
522 }
523
524 return getAnnouncementsDeliveries(actionRequest);
525 }
526
527 protected User updateLockout(ActionRequest actionRequest) throws Exception {
528 User user = PortalUtil.getSelectedUser(actionRequest);
529
530 UserServiceUtil.updateLockoutById(user.getUserId(), false);
531
532 return user;
533 }
534
535 protected Object[] updateUser(
536 ActionRequest actionRequest, ActionResponse actionResponse)
537 throws Exception {
538
539 ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(
540 WebKeys.THEME_DISPLAY);
541
542 User user = PortalUtil.getSelectedUser(actionRequest);
543
544 boolean deleteLogo = ParamUtil.getBoolean(actionRequest, "deleteLogo");
545
546 if (deleteLogo) {
547 UserServiceUtil.deletePortrait(user.getUserId());
548 }
549
550 Contact contact = user.getContact();
551
552 String oldPassword = AdminUtil.getUpdateUserPassword(
553 actionRequest, user.getUserId());
554 String newPassword1 = actionRequest.getParameter("password1");
555 String newPassword2 = actionRequest.getParameter("password2");
556 boolean passwordReset = ParamUtil.getBoolean(
557 actionRequest, "passwordReset");
558
559 String reminderQueryQuestion = BeanParamUtil.getString(
560 user, actionRequest, "reminderQueryQuestion");
561
562 if (reminderQueryQuestion.equals(UsersAdmin.CUSTOM_QUESTION)) {
563 reminderQueryQuestion = BeanParamUtil.getStringSilent(
564 user, actionRequest, "reminderQueryCustomQuestion");
565 }
566
567 String reminderQueryAnswer = BeanParamUtil.getString(
568 user, actionRequest, "reminderQueryAnswer");
569 String oldScreenName = user.getScreenName();
570 String screenName = BeanParamUtil.getString(
571 user, actionRequest, "screenName");
572 String oldEmailAddress = user.getEmailAddress();
573 String emailAddress = BeanParamUtil.getString(
574 user, actionRequest, "emailAddress");
575 long facebookId = user.getFacebookId();
576 String openId = BeanParamUtil.getString(user, actionRequest, "openId");
577 String languageId = BeanParamUtil.getString(
578 user, actionRequest, "languageId");
579 String timeZoneId = BeanParamUtil.getString(
580 user, actionRequest, "timeZoneId");
581 String greeting = BeanParamUtil.getString(
582 user, actionRequest, "greeting");
583 String firstName = BeanParamUtil.getString(
584 user, actionRequest, "firstName");
585 String middleName = BeanParamUtil.getString(
586 user, actionRequest, "middleName");
587 String lastName = BeanParamUtil.getString(
588 user, actionRequest, "lastName");
589 int prefixId = BeanParamUtil.getInteger(
590 contact, actionRequest, "prefixId");
591 int suffixId = BeanParamUtil.getInteger(
592 contact, actionRequest, "suffixId");
593 boolean male = BeanParamUtil.getBoolean(
594 user, actionRequest, "male", true);
595
596 Calendar birthdayCal = CalendarFactoryUtil.getCalendar();
597
598 birthdayCal.setTime(contact.getBirthday());
599
600 int birthdayMonth = ParamUtil.getInteger(
601 actionRequest, "birthdayMonth", birthdayCal.get(Calendar.MONTH));
602 int birthdayDay = ParamUtil.getInteger(
603 actionRequest, "birthdayDay", birthdayCal.get(Calendar.DATE));
604 int birthdayYear = ParamUtil.getInteger(
605 actionRequest, "birthdayYear", birthdayCal.get(Calendar.YEAR));
606 String comments = BeanParamUtil.getString(
607 user, actionRequest, "comments");
608 String smsSn = BeanParamUtil.getString(contact, actionRequest, "smsSn");
609 String aimSn = BeanParamUtil.getString(contact, actionRequest, "aimSn");
610 String facebookSn = BeanParamUtil.getString(
611 contact, actionRequest, "facebookSn");
612 String icqSn = BeanParamUtil.getString(contact, actionRequest, "icqSn");
613 String jabberSn = BeanParamUtil.getString(
614 contact, actionRequest, "jabberSn");
615 String msnSn = BeanParamUtil.getString(contact, actionRequest, "msnSn");
616 String mySpaceSn = BeanParamUtil.getString(
617 contact, actionRequest, "mySpaceSn");
618 String skypeSn = BeanParamUtil.getString(
619 contact, actionRequest, "skypeSn");
620 String twitterSn = BeanParamUtil.getString(
621 contact, actionRequest, "twitterSn");
622 String ymSn = BeanParamUtil.getString(contact, actionRequest, "ymSn");
623 String jobTitle = BeanParamUtil.getString(
624 user, actionRequest, "jobTitle");
625 long[] groupIds = UsersAdminUtil.getGroupIds(actionRequest);
626 long[] organizationIds = UsersAdminUtil.getOrganizationIds(
627 actionRequest);
628 long[] roleIds = UsersAdminUtil.getRoleIds(actionRequest);
629
630 List<UserGroupRole> userGroupRoles = null;
631
632 if ((actionRequest.getParameter("addGroupRolesGroupIds") != null) ||
633 (actionRequest.getParameter("addGroupRolesRoleIds") != null) ||
634 (actionRequest.getParameter("deleteGroupRolesGroupIds") != null) ||
635 (actionRequest.getParameter("deleteGroupRolesRoleIds") != null)) {
636
637 userGroupRoles = UsersAdminUtil.getUserGroupRoles(actionRequest);
638 }
639
640 long[] userGroupIds = UsersAdminUtil.getUserGroupIds(actionRequest);
641 List<Address> addresses = UsersAdminUtil.getAddresses(
642 actionRequest, user.getAddresses());
643 List<EmailAddress> emailAddresses = UsersAdminUtil.getEmailAddresses(
644 actionRequest, user.getEmailAddresses());
645 List<Phone> phones = UsersAdminUtil.getPhones(
646 actionRequest, user.getPhones());
647 List<Website> websites = UsersAdminUtil.getWebsites(
648 actionRequest, user.getWebsites());
649 List<AnnouncementsDelivery> announcementsDeliveries =
650 getAnnouncementsDeliveries(actionRequest, user);
651
652 ServiceContext serviceContext = ServiceContextFactory.getInstance(
653 User.class.getName(), actionRequest);
654
655 user = UserServiceUtil.updateUser(
656 user.getUserId(), oldPassword, newPassword1, newPassword2,
657 passwordReset, reminderQueryQuestion, reminderQueryAnswer,
658 screenName, emailAddress, facebookId, openId, languageId,
659 timeZoneId, greeting, comments, firstName, middleName, lastName,
660 prefixId, suffixId, male, birthdayMonth, birthdayDay, birthdayYear,
661 smsSn, aimSn, facebookSn, icqSn, jabberSn, msnSn, mySpaceSn,
662 skypeSn, twitterSn, ymSn, jobTitle, groupIds, organizationIds,
663 roleIds, userGroupRoles, userGroupIds, addresses, emailAddresses,
664 phones, websites, announcementsDeliveries, serviceContext);
665
666 if (oldScreenName.equals(user.getScreenName())) {
667 oldScreenName = StringPool.BLANK;
668 }
669
670 boolean updateLanguageId = false;
671
672 if (user.getUserId() == themeDisplay.getUserId()) {
673
674
675
676 HttpServletRequest request = PortalUtil.getHttpServletRequest(
677 actionRequest);
678 HttpServletResponse response = PortalUtil.getHttpServletResponse(
679 actionResponse);
680 HttpSession session = request.getSession();
681
682 session.removeAttribute(Globals.LOCALE_KEY);
683
684 Locale locale = LocaleUtil.fromLanguageId(languageId);
685
686 LanguageUtil.updateCookie(request, response, locale);
687
688
689
690 PortletSession portletSession = actionRequest.getPortletSession();
691
692 InvokerPortletImpl.clearResponses(portletSession);
693
694
695
696 if (PropsValues.SESSION_STORE_PASSWORD &&
697 Validator.isNotNull(newPassword1)) {
698
699 portletSession.setAttribute(
700 WebKeys.USER_PASSWORD, newPassword1,
701 PortletSession.APPLICATION_SCOPE);
702 }
703
704 updateLanguageId = true;
705 }
706
707 String portletId = serviceContext.getPortletId();
708
709 if (!portletId.equals(PortletKeys.MY_ACCOUNT)) {
710 long publicLayoutSetPrototypeId = ParamUtil.getLong(
711 actionRequest, "publicLayoutSetPrototypeId");
712 long privateLayoutSetPrototypeId = ParamUtil.getLong(
713 actionRequest, "privateLayoutSetPrototypeId");
714 boolean publicLayoutSetPrototypeLinkEnabled = ParamUtil.getBoolean(
715 actionRequest, "publicLayoutSetPrototypeLinkEnabled");
716 boolean privateLayoutSetPrototypeLinkEnabled = ParamUtil.getBoolean(
717 actionRequest, "privateLayoutSetPrototypeLinkEnabled");
718
719 SitesUtil.updateLayoutSetPrototypesLinks(
720 user.getGroup(), publicLayoutSetPrototypeId,
721 privateLayoutSetPrototypeId,
722 publicLayoutSetPrototypeLinkEnabled,
723 privateLayoutSetPrototypeLinkEnabled);
724 }
725
726 Company company = PortalUtil.getCompany(actionRequest);
727
728 if (company.isStrangersVerify() &&
729 !StringUtil.equalsIgnoreCase(oldEmailAddress, emailAddress)) {
730
731 SessionMessages.add(actionRequest, "verificationEmailSent");
732 }
733
734 return new Object[] {user, oldScreenName, updateLanguageId};
735 }
736
737 }