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