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