1 23 24 25 package org.infoglue.deliver.applications.inputhandlers; 26 27 import java.io.PrintWriter ; 28 import java.io.StringWriter ; 29 import java.util.HashMap ; 30 31 import javax.servlet.http.HttpServletRequest ; 32 33 import org.infoglue.cms.security.InfoGluePrincipal; 34 import org.infoglue.cms.util.mail.MailServiceFactory; 35 import org.infoglue.deliver.applications.databeans.DatabaseWrapper; 36 import org.infoglue.deliver.applications.databeans.DeliveryContext; 37 import org.infoglue.deliver.controllers.kernel.impl.simple.BasicTemplateController; 38 import org.infoglue.deliver.controllers.kernel.impl.simple.ContentDeliveryController; 39 import org.infoglue.deliver.controllers.kernel.impl.simple.IntegrationDeliveryController; 40 import org.infoglue.deliver.controllers.kernel.impl.simple.NodeDeliveryController; 41 import org.infoglue.deliver.controllers.kernel.impl.simple.TemplateController; 42 import org.infoglue.deliver.util.VelocityTemplateProcessor; 43 44 53 54 public class MailSender implements InfoGlueInputHandler 55 { 56 57 60 61 public void processInput(DatabaseWrapper databaseWrapper, Integer siteNodeId, Integer languageId, Integer contentId, Integer formContentId, HashMap parameters, HttpServletRequest request, InfoGluePrincipal infogluePrincipal) throws Exception 62 { 63 String template = ContentDeliveryController.getContentDeliveryController().getContentAttribute(databaseWrapper.getDatabase(), formContentId, languageId, "MailSender_template", siteNodeId, true, DeliveryContext.getDeliveryContext(), infogluePrincipal, false); 64 String fromAddress = ContentDeliveryController.getContentDeliveryController().getContentAttribute(databaseWrapper.getDatabase(), formContentId, languageId, "MailSender_fromAddress", siteNodeId, true, DeliveryContext.getDeliveryContext(), infogluePrincipal, false); 65 String toAddress = ContentDeliveryController.getContentDeliveryController().getContentAttribute(databaseWrapper.getDatabase(), formContentId, languageId, "MailSender_toAddress", siteNodeId, true, DeliveryContext.getDeliveryContext(), infogluePrincipal, false); 66 String subject = ContentDeliveryController.getContentDeliveryController().getContentAttribute(databaseWrapper.getDatabase(), formContentId, languageId, "MailSender_subject", siteNodeId, true, DeliveryContext.getDeliveryContext(), infogluePrincipal, false); 67 String body = renderMailBody(databaseWrapper, siteNodeId, languageId, contentId, template, parameters, request, infogluePrincipal); 68 69 MailServiceFactory.getService().send(fromAddress, toAddress, subject, body, "text/html", "UTF-8"); 71 } 72 73 74 75 78 79 private String renderMailBody(DatabaseWrapper databaseWrapper, Integer siteNodeId, Integer languageId, Integer contentId, String template, HashMap parameters, HttpServletRequest request, InfoGluePrincipal infogluePrincipal) throws Exception 80 { 81 parameters.put("templateLogic", getTemplateController(databaseWrapper, siteNodeId, languageId, contentId, request, infogluePrincipal)); 82 83 StringWriter tempString = new StringWriter (); 84 PrintWriter pw = new PrintWriter (tempString); 85 new VelocityTemplateProcessor().renderTemplate(parameters, pw, template); 86 return tempString.toString(); 87 } 88 89 90 96 97 public TemplateController getTemplateController(DatabaseWrapper databaseWrapper, Integer siteNodeId, Integer languageId, Integer contentId, HttpServletRequest request, InfoGluePrincipal infogluePrincipal) throws Exception 98 { 99 NodeDeliveryController nodeDeliveryController = NodeDeliveryController.getNodeDeliveryController(siteNodeId, languageId, contentId); 100 IntegrationDeliveryController integrationDeliveryController = IntegrationDeliveryController.getIntegrationDeliveryController(siteNodeId, languageId, contentId); 101 102 TemplateController templateController = new BasicTemplateController(databaseWrapper, infogluePrincipal); 103 templateController.setStandardRequestParameters(siteNodeId, languageId, contentId); 104 templateController.setHttpRequest(request); 105 templateController.setDeliveryControllers(nodeDeliveryController, null, integrationDeliveryController); 106 return templateController; 107 } 108 109 } 110 | Popular Tags |