SlideShare ist ein Scribd-Unternehmen logo
1 von 4
package com.liferay.portlet.newsletter.action;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Set;

import com.liferay.portal.DuplicateGroupException;
import com.liferay.portal.GroupFriendlyURLException;
import com.liferay.portal.GroupNameException;
import com.liferay.portal.NoSuchGroupException;
import com.liferay.portal.RequiredGroupException;
import com.liferay.portal.model.Group;
import com.liferay.portal.model.Role;
import com.liferay.portal.model.User;
import com.liferay.portal.model.UserGroup;
import com.liferay.portal.security.auth.PrincipalException;
import com.liferay.portal.service.GroupLocalServiceUtil;
import com.liferay.portal.service.GroupServiceUtil;
import com.liferay.portal.service.RoleLocalServiceUtil;
import com.liferay.portal.service.UserGroupLocalServiceUtil;
import com.liferay.portal.service.UserLocalServiceUtil;
import com.liferay.portal.service.persistence.RoleFinder;
import com.liferay.portal.service.persistence.UserUtil;
import com.liferay.portal.struts.PortletAction;
import com.liferay.portal.util.Constants;
import com.liferay.portal.util.PortalUtil;
import com.liferay.portal.util.WebKeys;
import com.liferay.portal.util.comparator.ContactLastNameComparator;
import com.liferay.util.ParamUtil;
import com.liferay.util.Validator;
import com.liferay.util.dao.hibernate.QueryUtil;
import com.liferay.util.mail.MailEngine;
import com.liferay.util.servlet.SessionErrors;

import javax.mail.internet.InternetAddress;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletConfig;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class SendEmail extends PortletAction {

public void processAction(
ActionMapping mapping, ActionForm form, PortletConfig config,
ActionRequest req, ActionResponse res)
throws Exception {

String[] userIds = req.getParameterValues("selected-users");
String[] userGroupIds = req.getParameterValues("selected-usergroups");
String[] groupIds = req.getParameterValues("selected-groups");
String[] roleIds = req.getParameterValues("selected-roles");

List addresses = new ArrayList();

List tempList = new ArrayList();

LinkedHashMap userParams = new LinkedHashMap();

// Get all users in the selected groups
if (userGroupIds != null) {
for (int i = 0; i < userGroupIds.length; i++) {

UserGroup UG = UserGroupLocalServiceUtil.getUserGroup(userGroupIds);

userParams.put("usersUserGroups", UG.getUserGroupId());

tempList = UserLocalServiceUtil.search(PortalUtil.getCompanyId(req), null, null, null,
null, true, userParams, true, QueryUtil.ALL_POS, QueryUtil.ALL_POS, null);

for (int j = 0; j < tempList.size(); j++) {
addresses.add(tempList.get(j));
}
}
}
userParams = new LinkedHashMap();
// now communities
if (groupIds != null) {
for (int i = 0; i < groupIds.length; i++) {
System.out.println(groupIds);
Group group =
GroupLocalServiceUtil.getUserGroup(PortalUtil.getCompanyId(req),groupIds);

userParams.put("usersGroups", String.valueOf(group.getGroupId()));
tempList = UserLocalServiceUtil.search(PortalUtil.getCompanyId(req), null, null, null,
null, true, userParams, true, QueryUtil.ALL_POS, QueryUtil.ALL_POS, null);

for (int j = 0; j < tempList.size(); j++) {
addresses.add(tempList.get(j));
}
}
}

if (roleIds != null) {
for (int i = 0; i < roleIds.length; i++) {

Role role = RoleLocalServiceUtil.getRole(roleIds);

userParams.put("usersRoles", role.getRoleId());

tempList = UserLocalServiceUtil.search(PortalUtil.getCompanyId(req), null, null, null,
null, true, userParams, true, QueryUtil.ALL_POS, QueryUtil.ALL_POS, null);

for (int j = 0; j < tempList.size(); j++) {
addresses.add(tempList.get(j));
}
}
}
if (userIds != null) {
for (int i = 0; i < userIds.length; i++) {
addresses.add(UserLocalServiceUtil.getUserById(userIds));
}
}

//remove dups

Set set = new HashSet();
set.addAll(addresses);

if(set.size() < addresses.size()) {
addresses.clear();
addresses.addAll(set);
}

InternetAddress[] bcc = new InternetAddress[addresses.size()];

for (int i = 0; i < addresses.size(); i++) {
User communityUser = (User)addresses.get(i);
bcc = new InternetAddress(communityUser.getEmailAddress(),
communityUser.getEmailAddress());
}

User user = PortalUtil.getUser(req);

InternetAddress from = new InternetAddress(user.getEmailAddress(),
user.getFullName());

String body = ParamUtil.getString(req, "body");
String subject = ParamUtil.getString(req, "subject");

MailEngine.send(from, null, null, bcc, subject, body);

}

public ActionForward render(
ActionMapping mapping, ActionForm form, PortletConfig config,
RenderRequest req, RenderResponse res)
throws Exception {

return mapping.findForward(
getForward(req, "portlet.newsletter.send_email"));
}
}

    •   Marcar como respuesta

Weitere ähnliche Inhalte

Andere mochten auch

Half yearly report -nicra
Half yearly report -nicraHalf yearly report -nicra
Half yearly report -nicraniranjannsahoo
 
A La Mar Fui Por Naranjas
A La Mar Fui Por NaranjasA La Mar Fui Por Naranjas
A La Mar Fui Por NaranjasMariaCollado
 
Fmp production log
Fmp production logFmp production log
Fmp production logsamgh1995
 
mi presentacion en slideshare(brianda pacheco)
mi presentacion en slideshare(brianda pacheco)mi presentacion en slideshare(brianda pacheco)
mi presentacion en slideshare(brianda pacheco)valeriio
 
Sound Sync Annotations
Sound Sync AnnotationsSound Sync Annotations
Sound Sync Annotationssamgh1995
 
Wwii Group & Indiv Assmt & Rubrics
Wwii Group & Indiv Assmt & RubricsWwii Group & Indiv Assmt & Rubrics
Wwii Group & Indiv Assmt & Rubricsguest9825a1
 
Final idea development
Final idea developmentFinal idea development
Final idea developmentsamgh1995
 
Trading Charts May 17, 2009 Montek For FM, Chidambaram Fine As HM, Says India...
Trading Charts May 17, 2009 Montek For FM, Chidambaram Fine As HM, Says India...Trading Charts May 17, 2009 Montek For FM, Chidambaram Fine As HM, Says India...
Trading Charts May 17, 2009 Montek For FM, Chidambaram Fine As HM, Says India...Jagannadham Thunuguntla
 
Presentation of tagmemic grammar
Presentation of tagmemic grammarPresentation of tagmemic grammar
Presentation of tagmemic grammarbiraytiful
 
Mcdonalds Case
Mcdonalds CaseMcdonalds Case
Mcdonalds Casesolomagyy
 
The Financial Express 19 May 2009 (New Delhi
The Financial Express 19 May 2009 (New DelhiThe Financial Express 19 May 2009 (New Delhi
The Financial Express 19 May 2009 (New DelhiJagannadham Thunuguntla
 
Fmp audience profiling
Fmp audience profilingFmp audience profiling
Fmp audience profilingsamgh1995
 
Sims Pictures
Sims PicturesSims Pictures
Sims Picturessamgh1995
 

Andere mochten auch (17)

גלאוקומה
גלאוקומהגלאוקומה
גלאוקומה
 
Half yearly report -nicra
Half yearly report -nicraHalf yearly report -nicra
Half yearly report -nicra
 
A La Mar Fui Por Naranjas
A La Mar Fui Por NaranjasA La Mar Fui Por Naranjas
A La Mar Fui Por Naranjas
 
Resume
ResumeResume
Resume
 
Fmp production log
Fmp production logFmp production log
Fmp production log
 
mi presentacion en slideshare(brianda pacheco)
mi presentacion en slideshare(brianda pacheco)mi presentacion en slideshare(brianda pacheco)
mi presentacion en slideshare(brianda pacheco)
 
Sound Sync Annotations
Sound Sync AnnotationsSound Sync Annotations
Sound Sync Annotations
 
Vilgi Enp2 1
Vilgi Enp2 1Vilgi Enp2 1
Vilgi Enp2 1
 
Wwii Group & Indiv Assmt & Rubrics
Wwii Group & Indiv Assmt & RubricsWwii Group & Indiv Assmt & Rubrics
Wwii Group & Indiv Assmt & Rubrics
 
Final idea development
Final idea developmentFinal idea development
Final idea development
 
Trading Charts May 17, 2009 Montek For FM, Chidambaram Fine As HM, Says India...
Trading Charts May 17, 2009 Montek For FM, Chidambaram Fine As HM, Says India...Trading Charts May 17, 2009 Montek For FM, Chidambaram Fine As HM, Says India...
Trading Charts May 17, 2009 Montek For FM, Chidambaram Fine As HM, Says India...
 
Pepai Ccho 2
Pepai Ccho 2Pepai Ccho 2
Pepai Ccho 2
 
Presentation of tagmemic grammar
Presentation of tagmemic grammarPresentation of tagmemic grammar
Presentation of tagmemic grammar
 
Mcdonalds Case
Mcdonalds CaseMcdonalds Case
Mcdonalds Case
 
The Financial Express 19 May 2009 (New Delhi
The Financial Express 19 May 2009 (New DelhiThe Financial Express 19 May 2009 (New Delhi
The Financial Express 19 May 2009 (New Delhi
 
Fmp audience profiling
Fmp audience profilingFmp audience profiling
Fmp audience profiling
 
Sims Pictures
Sims PicturesSims Pictures
Sims Pictures
 

newsletter_Liferay.rtf

  • 1. package com.liferay.portlet.newsletter.action; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Set; import com.liferay.portal.DuplicateGroupException; import com.liferay.portal.GroupFriendlyURLException; import com.liferay.portal.GroupNameException; import com.liferay.portal.NoSuchGroupException; import com.liferay.portal.RequiredGroupException; import com.liferay.portal.model.Group; import com.liferay.portal.model.Role; import com.liferay.portal.model.User; import com.liferay.portal.model.UserGroup; import com.liferay.portal.security.auth.PrincipalException; import com.liferay.portal.service.GroupLocalServiceUtil; import com.liferay.portal.service.GroupServiceUtil; import com.liferay.portal.service.RoleLocalServiceUtil; import com.liferay.portal.service.UserGroupLocalServiceUtil; import com.liferay.portal.service.UserLocalServiceUtil; import com.liferay.portal.service.persistence.RoleFinder; import com.liferay.portal.service.persistence.UserUtil; import com.liferay.portal.struts.PortletAction; import com.liferay.portal.util.Constants; import com.liferay.portal.util.PortalUtil; import com.liferay.portal.util.WebKeys; import com.liferay.portal.util.comparator.ContactLastNameComparator; import com.liferay.util.ParamUtil; import com.liferay.util.Validator; import com.liferay.util.dao.hibernate.QueryUtil; import com.liferay.util.mail.MailEngine; import com.liferay.util.servlet.SessionErrors; import javax.mail.internet.InternetAddress; import javax.portlet.ActionRequest; import javax.portlet.ActionResponse; import javax.portlet.PortletConfig; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward;
  • 2. import org.apache.struts.action.ActionMapping; public class SendEmail extends PortletAction { public void processAction( ActionMapping mapping, ActionForm form, PortletConfig config, ActionRequest req, ActionResponse res) throws Exception { String[] userIds = req.getParameterValues("selected-users"); String[] userGroupIds = req.getParameterValues("selected-usergroups"); String[] groupIds = req.getParameterValues("selected-groups"); String[] roleIds = req.getParameterValues("selected-roles"); List addresses = new ArrayList(); List tempList = new ArrayList(); LinkedHashMap userParams = new LinkedHashMap(); // Get all users in the selected groups if (userGroupIds != null) { for (int i = 0; i < userGroupIds.length; i++) { UserGroup UG = UserGroupLocalServiceUtil.getUserGroup(userGroupIds); userParams.put("usersUserGroups", UG.getUserGroupId()); tempList = UserLocalServiceUtil.search(PortalUtil.getCompanyId(req), null, null, null, null, true, userParams, true, QueryUtil.ALL_POS, QueryUtil.ALL_POS, null); for (int j = 0; j < tempList.size(); j++) { addresses.add(tempList.get(j)); } } } userParams = new LinkedHashMap(); // now communities if (groupIds != null) { for (int i = 0; i < groupIds.length; i++) { System.out.println(groupIds); Group group = GroupLocalServiceUtil.getUserGroup(PortalUtil.getCompanyId(req),groupIds); userParams.put("usersGroups", String.valueOf(group.getGroupId()));
  • 3. tempList = UserLocalServiceUtil.search(PortalUtil.getCompanyId(req), null, null, null, null, true, userParams, true, QueryUtil.ALL_POS, QueryUtil.ALL_POS, null); for (int j = 0; j < tempList.size(); j++) { addresses.add(tempList.get(j)); } } } if (roleIds != null) { for (int i = 0; i < roleIds.length; i++) { Role role = RoleLocalServiceUtil.getRole(roleIds); userParams.put("usersRoles", role.getRoleId()); tempList = UserLocalServiceUtil.search(PortalUtil.getCompanyId(req), null, null, null, null, true, userParams, true, QueryUtil.ALL_POS, QueryUtil.ALL_POS, null); for (int j = 0; j < tempList.size(); j++) { addresses.add(tempList.get(j)); } } } if (userIds != null) { for (int i = 0; i < userIds.length; i++) { addresses.add(UserLocalServiceUtil.getUserById(userIds)); } } //remove dups Set set = new HashSet(); set.addAll(addresses); if(set.size() < addresses.size()) { addresses.clear(); addresses.addAll(set); } InternetAddress[] bcc = new InternetAddress[addresses.size()]; for (int i = 0; i < addresses.size(); i++) { User communityUser = (User)addresses.get(i); bcc = new InternetAddress(communityUser.getEmailAddress(), communityUser.getEmailAddress());
  • 4. } User user = PortalUtil.getUser(req); InternetAddress from = new InternetAddress(user.getEmailAddress(), user.getFullName()); String body = ParamUtil.getString(req, "body"); String subject = ParamUtil.getString(req, "subject"); MailEngine.send(from, null, null, bcc, subject, body); } public ActionForward render( ActionMapping mapping, ActionForm form, PortletConfig config, RenderRequest req, RenderResponse res) throws Exception { return mapping.findForward( getForward(req, "portlet.newsletter.send_email")); } } • Marcar como respuesta