1
22
23 package com.liferay.portlet.invitation.action;
24
25 import com.liferay.mail.service.MailServiceUtil;
26 import com.liferay.portal.kernel.mail.MailMessage;
27 import com.liferay.portal.kernel.servlet.SessionErrors;
28 import com.liferay.portal.kernel.servlet.SessionMessages;
29 import com.liferay.portal.kernel.util.ParamUtil;
30 import com.liferay.portal.kernel.util.StringUtil;
31 import com.liferay.portal.kernel.util.Validator;
32 import com.liferay.portal.model.Layout;
33 import com.liferay.portal.model.User;
34 import com.liferay.portal.struts.PortletAction;
35 import com.liferay.portal.theme.ThemeDisplay;
36 import com.liferay.portal.util.PortalUtil;
37 import com.liferay.portal.util.PortletKeys;
38 import com.liferay.portal.util.WebKeys;
39 import com.liferay.portlet.PortletPreferencesFactoryUtil;
40 import com.liferay.portlet.invitation.util.InvitationUtil;
41
42 import java.util.ArrayList;
43 import java.util.HashSet;
44 import java.util.List;
45 import java.util.Set;
46
47 import javax.mail.internet.InternetAddress;
48
49 import javax.portlet.ActionRequest;
50 import javax.portlet.ActionResponse;
51 import javax.portlet.PortletConfig;
52 import javax.portlet.PortletPreferences;
53 import javax.portlet.RenderRequest;
54 import javax.portlet.RenderResponse;
55
56 import org.apache.struts.action.ActionForm;
57 import org.apache.struts.action.ActionForward;
58 import org.apache.struts.action.ActionMapping;
59
60
66 public class ViewAction extends PortletAction {
67
68 public void processAction(
69 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
70 ActionRequest actionRequest, ActionResponse actionResponse)
71 throws Exception {
72
73 List<String> validEmailAddresses = new ArrayList<String>();
74 Set<String> invalidEmailAddresses = new HashSet<String>();
75
76 int emailMessageMaxRecipients =
77 InvitationUtil.getEmailMessageMaxRecipients();
78
79 for (int i = 0; i < emailMessageMaxRecipients; i++) {
80 String emailAddress = ParamUtil.getString(
81 actionRequest, "emailAddress" + i);
82
83 if (Validator.isEmailAddress(emailAddress)) {
84 validEmailAddresses.add(emailAddress);
85 }
86 else if (Validator.isNotNull(emailAddress)) {
87 invalidEmailAddresses.add("emailAddress" + i);
88 }
89 }
90
91 if (invalidEmailAddresses.size() > 0) {
92 SessionErrors.add(
93 actionRequest, "emailAddresses", invalidEmailAddresses);
94
95 return;
96 }
97
98 ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(
99 WebKeys.THEME_DISPLAY);
100
101 User user = themeDisplay.getUser();
102
103 String fromAddress = user.getEmailAddress();
104 String fromName = user.getFullName();
105
106 InternetAddress from = new InternetAddress(fromAddress, fromName);
107
108 Layout layout = themeDisplay.getLayout();
109
110 String portalURL = PortalUtil.getPortalURL(actionRequest);
111
112 String pageURL =
113 portalURL + PortalUtil.getLayoutURL(layout, themeDisplay);
114
115 PortletPreferences prefs =
116 PortletPreferencesFactoryUtil.getPortletSetup(
117 actionRequest, PortletKeys.INVITATION);
118
119 String subject = InvitationUtil.getEmailMessageSubject(prefs);
120 String body = InvitationUtil.getEmailMessageBody(prefs);
121
122 subject = StringUtil.replace(
123 subject,
124 new String[] {
125 "[$FROM_ADDRESS$]",
126 "[$FROM_NAME$]",
127 "[$PAGE_URL$]",
128 "[$PORTAL_URL$]"
129 },
130 new String[] {
131 fromAddress,
132 fromName,
133 pageURL,
134 portalURL
135 });
136
137 body = StringUtil.replace(
138 body,
139 new String[] {
140 "[$FROM_ADDRESS$]",
141 "[$FROM_NAME$]",
142 "[$PAGE_URL$]",
143 "[$PORTAL_URL$]"
144 },
145 new String[] {
146 fromAddress,
147 fromName,
148 pageURL,
149 portalURL
150 });
151
152 for (String emailAddress : validEmailAddresses) {
153 InternetAddress to = new InternetAddress(emailAddress);
154
155 MailMessage message = new MailMessage(
156 from, to, subject, body, true);
157
158 MailServiceUtil.sendEmail(message);
159 }
160
161 SessionMessages.add(actionRequest, "invitationSent");
162
163 String redirect = ParamUtil.getString(actionRequest, "redirect");
164
165 actionResponse.sendRedirect(redirect);
166 }
167
168 public ActionForward render(
169 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
170 RenderRequest renderRequest, RenderResponse renderResponse)
171 throws Exception {
172
173 return mapping.findForward(
174 getForward(renderRequest, "portlet.invitation.view"));
175 }
176
177 }