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