1 package org.campware.cream.modules.actions; 2 3 42 43 import java.util.Date ; 44 import java.util.Enumeration ; 45 46 import org.apache.velocity.context.Context; 47 48 import org.apache.turbine.Turbine; 49 import org.apache.turbine.util.RunData; 50 import org.apache.turbine.util.parser.ParameterParser; 51 import org.apache.torque.util.Criteria; 52 import org.apache.torque.util.Transaction; 53 54 import java.sql.Connection ; 55 56 import org.campware.cream.om.NewsSubscription; 57 import org.campware.cream.om.NewsSubscriptionPeer; 58 import org.campware.cream.om.Project; 59 import org.campware.cream.om.ProjectPeer; 60 import org.campware.cream.om.Product; 61 import org.campware.cream.om.ProductPeer; 62 63 67 public class NewsletterSubscription extends CreamPublicAction 68 { 69 protected void initScreen() 70 { 71 setModuleType(DOCUMENT); 72 setModuleName("NEWSLETTER_SUBSCRIPTION"); 73 } 74 79 public void doSubscribe(RunData data, Context context) 80 throws Exception 81 { 82 83 String urlOk= data.getParameters().getString("urlok", "NONE"); 84 String urlError= data.getParameters().getString("urlerror", "NONE"); 85 86 try{ 87 88 String subsEmail= data.getParameters().getString("email"); 89 String subsNotes= data.getParameters().getString("notes"); 90 int subsStatus= data.getParameters().getInt("status", 30); 91 String projCode= data.getParameters().getString("campaignid", "NONE"); 92 int projId = 1000; 93 94 if (!projCode.equalsIgnoreCase("NONE")){ 95 Criteria projCriteria = new Criteria(); 96 projCriteria.add(ProjectPeer.PROJECT_CODE, projCode); 97 Project projEntry = (Project) ProjectPeer.doSelect(projCriteria).get(0); 98 projId= projEntry.getProjectId(); 99 } 100 101 ParameterParser pp= data.getParameters(); 102 Enumeration paramKeys= pp.keys(); 103 104 while(paramKeys.hasMoreElements()) { 105 String paramName = paramKeys.nextElement().toString(); 106 if(paramName.startsWith("productid")) { 107 String suffix=paramName.substring(9, paramName.length()); 108 109 NewsSubscription entry = new NewsSubscription(); 110 int prodId=1000; 111 String prodCode= pp.getString("productid" + suffix, "NONE"); 112 if (!prodCode.equalsIgnoreCase("NONE")){ 113 Criteria prodCriteria = new Criteria(); 114 prodCriteria.add(ProductPeer.PRODUCT_CODE, prodCode); 115 Product prodEntry = (Product) ProductPeer.doSelect(prodCriteria).get(0); 116 prodId= prodEntry.getProductId(); 117 } 118 entry.setNewsSubsCode(getTempCode()); 119 120 entry.setIssuedDate(new Date ()); 121 entry.setCreatedBy("system"); 122 entry.setCreated(new Date ()); 123 entry.setModifiedBy("system"); 124 entry.setModified(new Date ()); 125 126 entry.setEmail(subsEmail); 127 entry.setStatus(subsStatus); 128 entry.setNotes(subsNotes); 129 entry.setProductId(prodId); 130 entry.setProjectId(projId); 131 132 Connection conn = Transaction.begin(NewsSubscriptionPeer.DATABASE_NAME); 133 boolean success = false; 134 try { 135 entry.save(conn); 136 entry.setNewsSubsCode(getRowCode("NS", entry.getNewsSubsId())); 137 entry.save(conn); 138 Transaction.commit(conn); 139 success = true; 140 141 } finally { 142 if (!success) Transaction.safeRollback(conn); 143 } 144 145 } 146 } 147 148 if (!urlOk.equalsIgnoreCase("NONE")){ 149 data.setRedirectURI (urlOk); 150 data.setStatusCode(302); 151 }else{ 152 this.setTemplate( data, "NewsletterSubscribeOk.vm"); 153 } 154 155 }catch (Exception e){ 156 if (!urlError.equalsIgnoreCase("NONE")){ 157 data.setRedirectURI (urlError); 158 data.setStatusCode(302); 159 }else{ 160 this.setTemplate( data, "NewsletterSubscribeError.vm"); 161 } 162 } 163 164 165 } 166 167 171 public void doUnsubscribe(RunData data, Context context) 172 throws Exception 173 { 174 175 String urlOk= Turbine.getConfiguration().getString("news.unsubscribe.url.ok", "Default"); 176 String urlError= Turbine.getConfiguration().getString("news.unsubscribe.url.error", "Default"); 177 178 try{ 179 Criteria criteria = new Criteria(); 180 criteria.add(NewsSubscriptionPeer.NEWS_SUBS_CODE, data.getParameters().getString("subscriptionid")); 181 criteria.add(NewsSubscriptionPeer.EMAIL, data.getParameters().getString("email")); 182 NewsSubscription subsEntry = (NewsSubscription) NewsSubscriptionPeer.doSelect(criteria).get(0); 183 184 subsEntry.setStatus(50); 185 subsEntry.setClosedDate(new Date ()); 186 subsEntry.setModifiedBy("system"); 187 subsEntry.setModified(new Date ()); 188 189 subsEntry.setModified(true); 190 subsEntry.setNew(false); 191 subsEntry.save(); 192 193 if (!urlOk.equalsIgnoreCase("Default")){ 194 data.setRedirectURI (urlOk); 195 data.setStatusCode(302); 196 }else{ 197 this.setTemplate( data, "NewsletterUnsubscribeOk.vm"); 198 } 199 }catch (Exception e){ 200 if (!urlError.equalsIgnoreCase("Default")){ 201 data.setRedirectURI (urlError); 202 data.setStatusCode(302); 203 }else{ 204 this.setTemplate( data, "NewsletterUnsubscribeError.vm"); 205 } 206 } 207 208 } 209 210 } 211 | Popular Tags |