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.EmailAddressException;
026 import com.liferay.portal.GroupFriendlyURLException;
027 import com.liferay.portal.NoSuchCountryException;
028 import com.liferay.portal.NoSuchListTypeException;
029 import com.liferay.portal.NoSuchRegionException;
030 import com.liferay.portal.NoSuchUserException;
031 import com.liferay.portal.PhoneNumberException;
032 import com.liferay.portal.RequiredUserException;
033 import com.liferay.portal.ReservedUserEmailAddressException;
034 import com.liferay.portal.ReservedUserScreenNameException;
035 import com.liferay.portal.UserEmailAddressException;
036 import com.liferay.portal.UserFieldException;
037 import com.liferay.portal.UserIdException;
038 import com.liferay.portal.UserPasswordException;
039 import com.liferay.portal.UserReminderQueryException;
040 import com.liferay.portal.UserScreenNameException;
041 import com.liferay.portal.UserSmsException;
042 import com.liferay.portal.WebsiteURLException;
043 import com.liferay.portal.kernel.bean.BeanParamUtil;
044 import com.liferay.portal.kernel.language.LanguageUtil;
045 import com.liferay.portal.kernel.repository.model.FileEntry;
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.FileUtil;
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.security.membershippolicy.MembershipPolicyException;
071 import com.liferay.portal.security.permission.ActionKeys;
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.service.permission.GroupPermissionUtil;
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.documentlibrary.service.DLAppLocalServiceUtil;
090 import com.liferay.portlet.sites.util.SitesUtil;
091 import com.liferay.portlet.usersadmin.util.UsersAdmin;
092 import com.liferay.portlet.usersadmin.util.UsersAdminUtil;
093
094 import java.util.ArrayList;
095 import java.util.Calendar;
096 import java.util.List;
097 import java.util.Locale;
098
099 import javax.portlet.ActionRequest;
100 import javax.portlet.ActionResponse;
101 import javax.portlet.PortletConfig;
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 EmailAddressException ||
245 e instanceof GroupFriendlyURLException ||
246 e instanceof MembershipPolicyException ||
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 UserFieldException ||
256 e instanceof UserIdException ||
257 e instanceof UserPasswordException ||
258 e instanceof UserReminderQueryException ||
259 e instanceof UserScreenNameException ||
260 e instanceof UserSmsException ||
261 e instanceof WebsiteURLException) {
262
263 if (e instanceof NoSuchListTypeException) {
264 NoSuchListTypeException nslte = (NoSuchListTypeException)e;
265
266 SessionErrors.add(
267 actionRequest,
268 e.getClass().getName() + nslte.getType());
269 }
270 else {
271 SessionErrors.add(actionRequest, e.getClass(), e);
272 }
273
274 if (e instanceof CompanyMaxUsersException ||
275 e instanceof RequiredUserException) {
276
277 String redirect = PortalUtil.escapeRedirect(
278 ParamUtil.getString(actionRequest, "redirect"));
279
280 if (Validator.isNotNull(redirect)) {
281 actionResponse.sendRedirect(redirect);
282 }
283 }
284 }
285 else {
286 throw e;
287 }
288 }
289 }
290
291 @Override
292 public ActionForward render(
293 ActionMapping actionMapping, ActionForm actionForm,
294 PortletConfig portletConfig, RenderRequest renderRequest,
295 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 actionMapping.findForward("portlet.users_admin.error");
306 }
307 else {
308 throw e;
309 }
310 }
311
312 return actionMapping.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(UsersAdmin.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 = UsersAdminUtil.getGroupIds(actionRequest);
368 long[] organizationIds = UsersAdminUtil.getOrganizationIds(
369 actionRequest);
370 long[] roleIds = UsersAdminUtil.getRoleIds(actionRequest);
371 List<UserGroupRole> userGroupRoles = UsersAdminUtil.getUserGroupRoles(
372 actionRequest);
373 long[] userGroupIds = UsersAdminUtil.getUserGroupIds(actionRequest);
374 List<Address> addresses = UsersAdminUtil.getAddresses(actionRequest);
375 List<EmailAddress> emailAddresses = UsersAdminUtil.getEmailAddresses(
376 actionRequest);
377 List<Phone> phones = UsersAdminUtil.getPhones(actionRequest);
378 List<Website> websites = UsersAdminUtil.getWebsites(actionRequest);
379 List<AnnouncementsDelivery> announcementsDeliveries =
380 getAnnouncementsDeliveries(actionRequest);
381 boolean sendEmail = true;
382
383 ServiceContext serviceContext = ServiceContextFactory.getInstance(
384 User.class.getName(), actionRequest);
385
386 User user = UserServiceUtil.addUser(
387 themeDisplay.getCompanyId(), autoPassword, password1, password2,
388 autoScreenName, screenName, emailAddress, facebookId, openId,
389 LocaleUtil.getDefault(), firstName, middleName, lastName, prefixId,
390 suffixId, male, birthdayMonth, birthdayDay, birthdayYear, jobTitle,
391 groupIds, organizationIds, roleIds, userGroupIds, addresses,
392 emailAddresses, phones, websites, announcementsDeliveries,
393 sendEmail, serviceContext);
394
395 if (!userGroupRoles.isEmpty()) {
396 for (UserGroupRole userGroupRole : userGroupRoles) {
397 userGroupRole.setUserId(user.getUserId());
398 }
399
400 user = UserServiceUtil.updateUser(
401 user.getUserId(), StringPool.BLANK, StringPool.BLANK,
402 StringPool.BLANK, false, reminderQueryQuestion,
403 reminderQueryAnswer, user.getScreenName(),
404 user.getEmailAddress(), facebookId, openId, true, null,
405 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 boolean publicLayoutSetPrototypeLinkEnabled = ParamUtil.getBoolean(
419 actionRequest, "publicLayoutSetPrototypeLinkEnabled");
420 boolean privateLayoutSetPrototypeLinkEnabled = ParamUtil.getBoolean(
421 actionRequest, "privateLayoutSetPrototypeLinkEnabled");
422
423 SitesUtil.updateLayoutSetPrototypesLinks(
424 user.getGroup(), publicLayoutSetPrototypeId,
425 privateLayoutSetPrototypeId, publicLayoutSetPrototypeLinkEnabled,
426 privateLayoutSetPrototypeLinkEnabled);
427
428 return user;
429 }
430
431 protected void deleteRole(ActionRequest actionRequest) throws Exception {
432 User user = PortalUtil.getSelectedUser(actionRequest);
433
434 long roleId = ParamUtil.getLong(actionRequest, "roleId");
435
436 UserServiceUtil.deleteRoleUser(roleId, user.getUserId());
437 }
438
439 protected void deleteUsers(ActionRequest actionRequest) throws Exception {
440 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
441
442 long[] deleteUserIds = StringUtil.split(
443 ParamUtil.getString(actionRequest, "deleteUserIds"), 0L);
444
445 for (long deleteUserId : deleteUserIds) {
446 if (cmd.equals(Constants.DEACTIVATE) ||
447 cmd.equals(Constants.RESTORE)) {
448
449 int status = WorkflowConstants.STATUS_APPROVED;
450
451 if (cmd.equals(Constants.DEACTIVATE)) {
452 status = WorkflowConstants.STATUS_INACTIVE;
453 }
454
455 UserServiceUtil.updateStatus(
456 deleteUserId, status, new ServiceContext());
457 }
458 else {
459 UserServiceUtil.deleteUser(deleteUserId);
460 }
461 }
462 }
463
464 protected List<AnnouncementsDelivery> getAnnouncementsDeliveries(
465 ActionRequest actionRequest) {
466
467 List<AnnouncementsDelivery> announcementsDeliveries =
468 new ArrayList<AnnouncementsDelivery>();
469
470 for (String type : AnnouncementsEntryConstants.TYPES) {
471 boolean email = ParamUtil.getBoolean(
472 actionRequest, "announcementsType" + type + "Email");
473 boolean sms = ParamUtil.getBoolean(
474 actionRequest, "announcementsType" + type + "Sms");
475 boolean website = ParamUtil.getBoolean(
476 actionRequest, "announcementsType" + type + "Website");
477
478 AnnouncementsDelivery announcementsDelivery =
479 new AnnouncementsDeliveryImpl();
480
481 announcementsDelivery.setType(type);
482 announcementsDelivery.setEmail(email);
483 announcementsDelivery.setSms(sms);
484 announcementsDelivery.setWebsite(website);
485
486 announcementsDeliveries.add(announcementsDelivery);
487 }
488
489 return announcementsDeliveries;
490 }
491
492 protected List<AnnouncementsDelivery> getAnnouncementsDeliveries(
493 ActionRequest actionRequest, User user)
494 throws Exception {
495
496 if (actionRequest.getParameter(
497 "announcementsType" + AnnouncementsEntryConstants.TYPES[0] +
498 "Email") == null) {
499
500 return AnnouncementsDeliveryLocalServiceUtil.getUserDeliveries(
501 user.getUserId());
502 }
503
504 return getAnnouncementsDeliveries(actionRequest);
505 }
506
507 protected User updateLockout(ActionRequest actionRequest) throws Exception {
508 User user = PortalUtil.getSelectedUser(actionRequest);
509
510 UserServiceUtil.updateLockoutById(user.getUserId(), false);
511
512 return user;
513 }
514
515 protected Object[] updateUser(
516 ActionRequest actionRequest, ActionResponse actionResponse)
517 throws Exception {
518
519 ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(
520 WebKeys.THEME_DISPLAY);
521
522 User user = PortalUtil.getSelectedUser(actionRequest);
523
524 Contact contact = user.getContact();
525
526 String oldPassword = AdminUtil.getUpdateUserPassword(
527 actionRequest, user.getUserId());
528 String newPassword1 = actionRequest.getParameter("password1");
529 String newPassword2 = actionRequest.getParameter("password2");
530 boolean passwordReset = ParamUtil.getBoolean(
531 actionRequest, "passwordReset");
532
533 String reminderQueryQuestion = BeanParamUtil.getString(
534 user, actionRequest, "reminderQueryQuestion");
535
536 if (reminderQueryQuestion.equals(UsersAdmin.CUSTOM_QUESTION)) {
537 reminderQueryQuestion = BeanParamUtil.getStringSilent(
538 user, actionRequest, "reminderQueryCustomQuestion");
539 }
540
541 String reminderQueryAnswer = BeanParamUtil.getString(
542 user, actionRequest, "reminderQueryAnswer");
543 String oldScreenName = user.getScreenName();
544 String screenName = BeanParamUtil.getString(
545 user, actionRequest, "screenName");
546 String oldEmailAddress = user.getEmailAddress();
547 String emailAddress = BeanParamUtil.getString(
548 user, actionRequest, "emailAddress");
549 long facebookId = user.getFacebookId();
550 String openId = BeanParamUtil.getString(user, actionRequest, "openId");
551 boolean deleteLogo = ParamUtil.getBoolean(actionRequest, "deleteLogo");
552
553 byte[] portraitBytes = null;
554
555 long fileEntryId = ParamUtil.getLong(actionRequest, "fileEntryId");
556
557 if (fileEntryId > 0) {
558 FileEntry fileEntry = DLAppLocalServiceUtil.getFileEntry(
559 fileEntryId);
560
561 portraitBytes = FileUtil.getBytes(fileEntry.getContentStream());
562 }
563
564 String languageId = BeanParamUtil.getString(
565 user, actionRequest, "languageId");
566 String timeZoneId = BeanParamUtil.getString(
567 user, actionRequest, "timeZoneId");
568 String greeting = BeanParamUtil.getString(
569 user, actionRequest, "greeting");
570 String firstName = BeanParamUtil.getString(
571 user, actionRequest, "firstName");
572 String middleName = BeanParamUtil.getString(
573 user, actionRequest, "middleName");
574 String lastName = BeanParamUtil.getString(
575 user, actionRequest, "lastName");
576 int prefixId = BeanParamUtil.getInteger(
577 contact, actionRequest, "prefixId");
578 int suffixId = BeanParamUtil.getInteger(
579 contact, actionRequest, "suffixId");
580 boolean male = BeanParamUtil.getBoolean(
581 user, actionRequest, "male", true);
582
583 Calendar birthdayCal = CalendarFactoryUtil.getCalendar();
584
585 birthdayCal.setTime(contact.getBirthday());
586
587 int birthdayMonth = ParamUtil.getInteger(
588 actionRequest, "birthdayMonth", birthdayCal.get(Calendar.MONTH));
589 int birthdayDay = ParamUtil.getInteger(
590 actionRequest, "birthdayDay", birthdayCal.get(Calendar.DATE));
591 int birthdayYear = ParamUtil.getInteger(
592 actionRequest, "birthdayYear", birthdayCal.get(Calendar.YEAR));
593 String comments = BeanParamUtil.getString(
594 user, actionRequest, "comments");
595 String smsSn = BeanParamUtil.getString(contact, actionRequest, "smsSn");
596 String aimSn = BeanParamUtil.getString(contact, actionRequest, "aimSn");
597 String facebookSn = BeanParamUtil.getString(
598 contact, actionRequest, "facebookSn");
599 String icqSn = BeanParamUtil.getString(contact, actionRequest, "icqSn");
600 String jabberSn = BeanParamUtil.getString(
601 contact, actionRequest, "jabberSn");
602 String msnSn = BeanParamUtil.getString(contact, actionRequest, "msnSn");
603 String mySpaceSn = BeanParamUtil.getString(
604 contact, actionRequest, "mySpaceSn");
605 String skypeSn = BeanParamUtil.getString(
606 contact, actionRequest, "skypeSn");
607 String twitterSn = BeanParamUtil.getString(
608 contact, actionRequest, "twitterSn");
609 String ymSn = BeanParamUtil.getString(contact, actionRequest, "ymSn");
610 String jobTitle = BeanParamUtil.getString(
611 user, actionRequest, "jobTitle");
612 long[] groupIds = UsersAdminUtil.getGroupIds(actionRequest);
613 long[] organizationIds = UsersAdminUtil.getOrganizationIds(
614 actionRequest);
615 long[] roleIds = UsersAdminUtil.getRoleIds(actionRequest);
616
617 List<UserGroupRole> userGroupRoles = null;
618
619 if ((actionRequest.getParameter("addGroupRolesGroupIds") != null) ||
620 (actionRequest.getParameter("addGroupRolesRoleIds") != null) ||
621 (actionRequest.getParameter("deleteGroupRolesGroupIds") != null) ||
622 (actionRequest.getParameter("deleteGroupRolesRoleIds") != null)) {
623
624 userGroupRoles = UsersAdminUtil.getUserGroupRoles(actionRequest);
625 }
626
627 long[] userGroupIds = UsersAdminUtil.getUserGroupIds(actionRequest);
628 List<Address> addresses = UsersAdminUtil.getAddresses(
629 actionRequest, user.getAddresses());
630 List<EmailAddress> emailAddresses = UsersAdminUtil.getEmailAddresses(
631 actionRequest, user.getEmailAddresses());
632 List<Phone> phones = UsersAdminUtil.getPhones(
633 actionRequest, user.getPhones());
634 List<Website> websites = UsersAdminUtil.getWebsites(
635 actionRequest, user.getWebsites());
636 List<AnnouncementsDelivery> announcementsDeliveries =
637 getAnnouncementsDeliveries(actionRequest, user);
638
639 ServiceContext serviceContext = ServiceContextFactory.getInstance(
640 User.class.getName(), actionRequest);
641
642 user = UserServiceUtil.updateUser(
643 user.getUserId(), oldPassword, newPassword1, newPassword2,
644 passwordReset, reminderQueryQuestion, reminderQueryAnswer,
645 screenName, emailAddress, facebookId, openId, !deleteLogo,
646 portraitBytes, languageId, timeZoneId, greeting, comments,
647 firstName, middleName, lastName, prefixId, suffixId, male,
648 birthdayMonth, birthdayDay, birthdayYear, smsSn, aimSn, facebookSn,
649 icqSn, jabberSn, msnSn, mySpaceSn, skypeSn, twitterSn, ymSn,
650 jobTitle, groupIds, organizationIds, roleIds, userGroupRoles,
651 userGroupIds, addresses, emailAddresses, phones, websites,
652 announcementsDeliveries, serviceContext);
653
654 if (oldScreenName.equals(user.getScreenName())) {
655 oldScreenName = StringPool.BLANK;
656 }
657
658 boolean updateLanguageId = false;
659
660 if (user.getUserId() == themeDisplay.getUserId()) {
661
662
663
664 HttpServletRequest request = PortalUtil.getHttpServletRequest(
665 actionRequest);
666 HttpServletResponse response = PortalUtil.getHttpServletResponse(
667 actionResponse);
668 HttpSession session = request.getSession();
669
670 session.removeAttribute(Globals.LOCALE_KEY);
671
672 Locale locale = LocaleUtil.fromLanguageId(languageId);
673
674 LanguageUtil.updateCookie(request, response, locale);
675
676
677
678 PortletSession portletSession = actionRequest.getPortletSession();
679
680 InvokerPortletImpl.clearResponses(portletSession);
681
682
683
684 if (PropsValues.SESSION_STORE_PASSWORD &&
685 Validator.isNotNull(newPassword1)) {
686
687 portletSession.setAttribute(
688 WebKeys.USER_PASSWORD, newPassword1,
689 PortletSession.APPLICATION_SCOPE);
690 }
691
692 updateLanguageId = true;
693 }
694
695 String portletId = serviceContext.getPortletId();
696
697 if (!portletId.equals(PortletKeys.MY_ACCOUNT)) {
698 Group group = user.getGroup();
699
700 boolean hasGroupUpdatePermission = GroupPermissionUtil.contains(
701 themeDisplay.getPermissionChecker(), group.getGroupId(),
702 ActionKeys.UPDATE);
703
704 long publicLayoutSetPrototypeId = ParamUtil.getLong(
705 actionRequest, "publicLayoutSetPrototypeId");
706 long privateLayoutSetPrototypeId = ParamUtil.getLong(
707 actionRequest, "privateLayoutSetPrototypeId");
708 boolean publicLayoutSetPrototypeLinkEnabled = ParamUtil.getBoolean(
709 actionRequest, "publicLayoutSetPrototypeLinkEnabled");
710 boolean privateLayoutSetPrototypeLinkEnabled = ParamUtil.getBoolean(
711 actionRequest, "privateLayoutSetPrototypeLinkEnabled");
712
713 if (hasGroupUpdatePermission &&
714 ((publicLayoutSetPrototypeId > 0) ||
715 (privateLayoutSetPrototypeId > 0))) {
716
717 SitesUtil.updateLayoutSetPrototypesLinks(
718 group, publicLayoutSetPrototypeId,
719 privateLayoutSetPrototypeId,
720 publicLayoutSetPrototypeLinkEnabled,
721 privateLayoutSetPrototypeLinkEnabled);
722 }
723 }
724
725 Company company = PortalUtil.getCompany(actionRequest);
726
727 if (company.isStrangersVerify() &&
728 !StringUtil.equalsIgnoreCase(oldEmailAddress, emailAddress)) {
729
730 SessionMessages.add(actionRequest, "verificationEmailSent");
731 }
732
733 return new Object[] {user, oldScreenName, updateLanguageId};
734 }
735
736 }