001
014
015 package com.liferay.portlet.invitation.action;
016
017 import com.liferay.mail.service.MailServiceUtil;
018 import com.liferay.portal.kernel.mail.MailMessage;
019 import com.liferay.portal.kernel.servlet.SessionErrors;
020 import com.liferay.portal.kernel.servlet.SessionMessages;
021 import com.liferay.portal.kernel.util.ParamUtil;
022 import com.liferay.portal.kernel.util.StringUtil;
023 import com.liferay.portal.kernel.util.Validator;
024 import com.liferay.portal.model.Layout;
025 import com.liferay.portal.model.User;
026 import com.liferay.portal.struts.PortletAction;
027 import com.liferay.portal.theme.ThemeDisplay;
028 import com.liferay.portal.util.PortalUtil;
029 import com.liferay.portal.util.PortletKeys;
030 import com.liferay.portal.util.WebKeys;
031 import com.liferay.portlet.PortletPreferencesFactoryUtil;
032 import com.liferay.portlet.invitation.util.InvitationUtil;
033
034 import java.util.HashSet;
035 import java.util.Set;
036
037 import javax.mail.internet.InternetAddress;
038
039 import javax.portlet.ActionRequest;
040 import javax.portlet.ActionResponse;
041 import javax.portlet.PortletConfig;
042 import javax.portlet.PortletPreferences;
043 import javax.portlet.RenderRequest;
044 import javax.portlet.RenderResponse;
045
046 import org.apache.struts.action.ActionForm;
047 import org.apache.struts.action.ActionForward;
048 import org.apache.struts.action.ActionMapping;
049
050
053 public class ViewAction extends PortletAction {
054
055 @Override
056 public void processAction(
057 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
058 ActionRequest actionRequest, ActionResponse actionResponse)
059 throws Exception {
060
061 Set<String> invalidEmailAddresses = new HashSet<String>();
062 Set<String> validEmailAddresses = new HashSet<String>();
063
064 int emailMessageMaxRecipients =
065 InvitationUtil.getEmailMessageMaxRecipients();
066
067 for (int i = 0; i < emailMessageMaxRecipients; i++) {
068 String emailAddress = ParamUtil.getString(
069 actionRequest, "emailAddress" + i);
070
071 if (Validator.isEmailAddress(emailAddress)) {
072 validEmailAddresses.add(emailAddress);
073 }
074 else if (Validator.isNotNull(emailAddress)) {
075 invalidEmailAddresses.add("emailAddress" + i);
076 }
077 }
078
079 if (validEmailAddresses.isEmpty() && invalidEmailAddresses.isEmpty()) {
080 invalidEmailAddresses.add("emailAddress0");
081 }
082
083 if (!invalidEmailAddresses.isEmpty()) {
084 SessionErrors.add(
085 actionRequest, "emailAddresses", invalidEmailAddresses);
086
087 return;
088 }
089
090 ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(
091 WebKeys.THEME_DISPLAY);
092
093 User user = themeDisplay.getUser();
094
095 String fromAddress = user.getEmailAddress();
096 String fromName = user.getFullName();
097
098 InternetAddress from = new InternetAddress(fromAddress, fromName);
099
100 Layout layout = themeDisplay.getLayout();
101
102 String portalURL = PortalUtil.getPortalURL(actionRequest);
103
104 String layoutFullURL = PortalUtil.getLayoutFullURL(
105 layout, themeDisplay);
106
107 PortletPreferences preferences =
108 PortletPreferencesFactoryUtil.getPortletSetup(
109 actionRequest, PortletKeys.INVITATION);
110
111 String subject = InvitationUtil.getEmailMessageSubject(preferences);
112 String body = InvitationUtil.getEmailMessageBody(preferences);
113
114 subject = StringUtil.replace(
115 subject,
116 new String[] {
117 "[$FROM_ADDRESS$]", "[$FROM_NAME$]", "[$PAGE_URL$]",
118 "[$PORTAL_URL$]"
119 },
120 new String[] {
121 fromAddress, fromName, layoutFullURL, portalURL
122 });
123
124 body = StringUtil.replace(
125 body,
126 new String[] {
127 "[$FROM_ADDRESS$]", "[$FROM_NAME$]", "[$PAGE_URL$]",
128 "[$PORTAL_URL$]"
129 },
130 new String[] {
131 fromAddress, fromName, layoutFullURL, portalURL
132 });
133
134 for (String emailAddress : validEmailAddresses) {
135 InternetAddress to = new InternetAddress(emailAddress);
136
137 MailMessage message = new MailMessage(
138 from, to, subject, body, true);
139
140 MailServiceUtil.sendEmail(message);
141 }
142
143 SessionMessages.add(actionRequest, "invitationSent");
144
145 String redirect = PortalUtil.escapeRedirect(
146 ParamUtil.getString(actionRequest, "redirect"));
147
148 if (Validator.isNotNull(redirect)) {
149 actionResponse.sendRedirect(redirect);
150 }
151 }
152
153 @Override
154 public ActionForward render(
155 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
156 RenderRequest renderRequest, RenderResponse renderResponse)
157 throws Exception {
158
159 return mapping.findForward(
160 getForward(renderRequest, "portlet.invitation.view"));
161 }
162
163 }