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.util.ParamUtil;
28 import com.liferay.portal.kernel.util.StringUtil;
29 import com.liferay.portal.kernel.util.Validator;
30 import com.liferay.portal.model.Layout;
31 import com.liferay.portal.model.User;
32 import com.liferay.portal.struts.PortletAction;
33 import com.liferay.portal.theme.ThemeDisplay;
34 import com.liferay.portal.util.PortalUtil;
35 import com.liferay.portal.util.PortletKeys;
36 import com.liferay.portal.util.WebKeys;
37 import com.liferay.portlet.PortletPreferencesFactoryUtil;
38 import com.liferay.portlet.invitation.util.InvitationUtil;
39 import com.liferay.util.servlet.SessionErrors;
40 import com.liferay.util.servlet.SessionMessages;
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 config,
70 ActionRequest req, ActionResponse res)
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(req, "emailAddress" + i);
81
82 if (Validator.isEmailAddress(emailAddress)) {
83 validEmailAddresses.add(emailAddress);
84 }
85 else if (Validator.isNotNull(emailAddress)) {
86 invalidEmailAddresses.add("emailAddress" + i);
87 }
88 }
89
90 if (invalidEmailAddresses.size() > 0) {
91 SessionErrors.add(req, "emailAddresses", invalidEmailAddresses);
92
93 return;
94 }
95
96 ThemeDisplay themeDisplay = (ThemeDisplay)req.getAttribute(
97 WebKeys.THEME_DISPLAY);
98
99 User user = themeDisplay.getUser();
100
101 String fromAddress = user.getEmailAddress();
102 String fromName = user.getFullName();
103
104 InternetAddress from = new InternetAddress(fromAddress, fromName);
105
106 Layout layout = themeDisplay.getLayout();
107
108 String portalURL = PortalUtil.getPortalURL(req);
109
110 String pageURL =
111 portalURL + PortalUtil.getLayoutURL(layout, themeDisplay);
112
113 PortletPreferences prefs =
114 PortletPreferencesFactoryUtil.getPortletSetup(
115 req, PortletKeys.INVITATION);
116
117 String subject = InvitationUtil.getEmailMessageSubject(prefs);
118 String body = InvitationUtil.getEmailMessageBody(prefs);
119
120 subject = StringUtil.replace(
121 subject,
122 new String[] {
123 "[$FROM_ADDRESS$]",
124 "[$FROM_NAME$]",
125 "[$PAGE_URL$]",
126 "[$PORTAL_URL$]"
127 },
128 new String[] {
129 fromAddress,
130 fromName,
131 pageURL,
132 portalURL
133 });
134
135 body = StringUtil.replace(
136 body,
137 new String[] {
138 "[$FROM_ADDRESS$]",
139 "[$FROM_NAME$]",
140 "[$PAGE_URL$]",
141 "[$PORTAL_URL$]"
142 },
143 new String[] {
144 fromAddress,
145 fromName,
146 pageURL,
147 portalURL
148 });
149
150 for (String emailAddress : validEmailAddresses) {
151 InternetAddress to = new InternetAddress(emailAddress);
152
153 MailMessage message = new MailMessage(
154 from, to, subject, body, true);
155
156 MailServiceUtil.sendEmail(message);
157 }
158
159 SessionMessages.add(req, "invitationSent");
160
161 String redirect = ParamUtil.getString(req, "redirect");
162
163 res.sendRedirect(redirect);
164 }
165
166 public ActionForward render(
167 ActionMapping mapping, ActionForm form, PortletConfig config,
168 RenderRequest req, RenderResponse res)
169 throws Exception {
170
171 return mapping.findForward(getForward(req, "portlet.invitation.view"));
172 }
173
174 }