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