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