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