1 package com.dotmarketing.portlets.mailinglistbuilder.action; 2 3 import java.util.List ; 4 5 import javax.portlet.ActionRequest; 6 import javax.portlet.ActionResponse; 7 import javax.portlet.PortletConfig; 8 import javax.portlet.PortletSession; 9 import javax.portlet.RenderRequest; 10 import javax.portlet.RenderResponse; 11 12 import org.apache.struts.action.ActionForm; 13 import org.apache.struts.action.ActionForward; 14 import org.apache.struts.action.ActionMapping; 15 16 import com.dotmarketing.beans.UserProxy; 17 import com.dotmarketing.cms.factories.PublicUserFactory; 18 import com.dotmarketing.db.DotHibernate; 19 import com.dotmarketing.factories.InodeFactory; 20 import com.dotmarketing.factories.UserProxyFactory; 21 import com.dotmarketing.portal.struts.DotPortletAction; 22 import com.dotmarketing.portlets.mailinglistbuilder.struts.MailingListSearchForm; 23 import com.dotmarketing.portlets.mailinglists.factories.MailingListFactory; 24 import com.dotmarketing.portlets.mailinglists.model.MailingList; 25 import com.dotmarketing.util.WebKeys; 26 import com.liferay.portal.model.User; 27 import com.liferay.util.servlet.SessionMessages; 28 29 public class EditMailingListAction extends DotPortletAction { 30 31 public ActionForward render(ActionMapping mapping, ActionForm form, PortletConfig config, RenderRequest req, 32 RenderResponse res) throws Exception { 33 return mapping.findForward("portlet.ext.mailinglistbuilder.view_mailinglist"); 34 } 35 36 public void processAction(ActionMapping mapping, ActionForm form, PortletConfig config, ActionRequest req, 37 ActionResponse res) throws Exception { 38 String cmd = req.getParameter(com.liferay.portal.util.Constants.CMD); 39 40 String referer = req.getParameter("referer"); 41 42 User user = _getUser(req); 43 PortletSession sess = req.getPortletSession(); 44 String [][] matchesArray = (String [][])sess.getAttribute(WebKeys.MAILINGLIST); 45 req.setAttribute(WebKeys.MAILINGLIST, matchesArray); 46 MailingListSearchForm mlForm = (MailingListSearchForm) form; 47 req.setAttribute(WebKeys.MAILINGLISTFORM, mlForm); 48 49 if (com.liferay.portal.util.Constants.SAVE.equals(cmd)) { 51 try { 52 _saveMarketingList(form,req,res, "0"); 53 } 54 catch (Exception e) { 55 _handleException(e,req); 56 } 57 } 58 if (com.liferay.portal.util.Constants.UPDATE.equals(cmd)) { 59 try { 60 if (mlForm.getMailingListInode().equals("")) { 61 SessionMessages.add(req, "message", "message.mailinglistbuilder.nolist"); 62 } else { 63 _saveMarketingList(form,req,res, mlForm.getMailingListInode()); 64 } 65 } 66 catch (Exception e) { 67 _handleException(e,req); 68 } 69 } 70 if (com.liferay.portal.util.Constants.DELETE.equals(cmd)) { 71 72 try { 73 if (mlForm.getMailingListInode().equals("")) { 74 SessionMessages.add(req, "message", "message.mailinglistbuilder.nolist"); 75 } else { 76 _removeFromMarketingList(form,req,res, mlForm.getMailingListInode()); 77 } 78 } 79 catch (Exception e) { 80 _handleException(e,req); 81 } 82 } 83 84 85 List list = MailingListFactory.getMailingListsByUser(user); 86 list.add(MailingListFactory.getUnsubscribersMailingList()); 87 req.setAttribute(WebKeys.MAILING_LIST_VIEW, list); 88 89 setForward(req, "portlet.ext.mailinglistbuilder.view_mailinglist"); 90 } 91 92 private void _saveMarketingList(ActionForm form, ActionRequest req, ActionResponse res, String mailingListInode) throws Exception { 93 94 User user = _getUser(req); 95 MailingListSearchForm mlForm = (MailingListSearchForm) form; 96 PortletSession sess = req.getPortletSession(); 97 String [][] matchesArray = (String [][])sess.getAttribute(WebKeys.MAILINGLIST); 98 99 MailingList ml = (MailingList) InodeFactory.getInode(mailingListInode,MailingList.class); 101 String cmd = req.getParameter(com.liferay.portal.util.Constants.CMD); 102 if (com.liferay.portal.util.Constants.SAVE.equals(cmd)) { 103 ml.setTitle(mlForm.getMailingListTitle()); 104 ml.setPublicList(mlForm.isAllowPublicToSubscribe()); 105 ml.setUserId(user.getUserId()); 106 } 107 InodeFactory.saveInode(ml); 108 mlForm.setMailingListTitle(""); 109 mlForm.setAllowPublicToSubscribe(false); 110 111 for (int i = 0; i < matchesArray.length; i++) { 113 User userSubscriber = PublicUserFactory.findUserByUserId(matchesArray[i][0]); 114 UserProxy s = UserProxyFactory.getUserProxy(userSubscriber); 115 116 if (s.getInode() == 0) { 117 s.setUserId(userSubscriber.getUserId()); 118 s.setLastResult(0); 119 InodeFactory.saveInode(s); 120 } 121 122 ml.addChild(s); 123 } 124 125 DotHibernate.flush(); 126 DotHibernate.closeSession(); 127 128 ml.setSubscriberCount(InodeFactory.getChildrenClass(ml, UserProxy.class).size()); 129 InodeFactory.saveInode(ml); 130 131 SessionMessages.add(req, "message", "message.mailinglistbuilder.save"); 132 } 133 134 private void _removeFromMarketingList(ActionForm form, ActionRequest req, ActionResponse res, String mailingListInode) throws Exception { 135 136 User user = _getUser(req); 137 MailingListSearchForm mlForm = (MailingListSearchForm) form; 138 PortletSession sess = req.getPortletSession(); 139 String [][] matchesArray = (String [][])sess.getAttribute(WebKeys.MAILINGLIST); 140 141 MailingList ml = (MailingList) InodeFactory.getInode(mailingListInode,MailingList.class); 143 144 for (int i = 0; i < matchesArray.length; i++) { 146 User userSubscriber = PublicUserFactory.findUserByUserId(matchesArray[i][0]); 147 UserProxy s = UserProxyFactory.getUserProxy(userSubscriber); 148 if (s.getInode() > 0) 149 ml.deleteChild(s); 150 } 151 152 DotHibernate.flush(); 153 DotHibernate.closeSession(); 154 155 ml.setSubscriberCount(InodeFactory.getChildrenClass(ml, UserProxy.class).size()); 156 InodeFactory.saveInode(ml); 157 158 SessionMessages.add(req, "message", "message.mailinglistbuilder.subscribers.removed"); 159 } 160 } 161 | Popular Tags |