Mercurial Hosting > nabble
diff src/nabble/view/web/mailing_list/Subscribe.java @ 0:7ecd1a4ef557
add content
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 21 Mar 2019 19:15:52 -0600 |
parents | |
children | 18cf4872fd7f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/nabble/view/web/mailing_list/Subscribe.java Thu Mar 21 19:15:52 2019 -0600 @@ -0,0 +1,58 @@ + +package nabble.view.web.mailing_list; + +import fschmidt.util.mail.Mail; +import fschmidt.util.servlet.ServletUtils; +import nabble.model.Init; +import nabble.model.ListServer; +import nabble.model.MailingList; +import nabble.model.ModelHome; +import nabble.model.Executors; +import nabble.model.Node; +import nabble.model.User; +import nabble.view.lib.Jtp; +import nabble.view.lib.SubscribeDefaultsMail; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.concurrent.TimeUnit; + + +public final class Subscribe extends HttpServlet { + + private static final Logger logger = LoggerFactory.getLogger(Subscribe.class); + + private final static long secondsUntilDeliveryOffMail = Init.get("secondsUntilDeliveryOffMail",20*60); // why so long? + + protected void service(HttpServletRequest request,HttpServletResponse response) + throws ServletException, IOException + { + User user = Jtp.getUser(request,response); + if (user == null) { + Jtp.login("You must login to be able to subscribe to a list.",request,response); + return; + } + Node forum = Jtp.getSiteNotNull(request).getNode(Long.parseLong(request.getParameter("forum"))); + MailingList mailingList = forum.getAssociatedMailingList(); + Mail userSubscribeMail = mailingList.subscribeMail(user); + ModelHome.send(userSubscribeMail); + logger.info("subscription request from "+user.getEmail()+" to "+mailingList.getListAddress()); + + if (mailingList.getListServer().needsDefaults() && mailingList.getListServer() != ListServer.google) { + String url = ServletUtils.getContextURL(request) + "/mailing_list/SubscribeDefaults.jtp?forum="+forum.getId()+"&k="+mailingList.getPassword(user); + final Mail mail = SubscribeDefaultsMail.newMail(user.getEmail(), mailingList, url); + Executors.schedule( + new Runnable(){public void run(){ + ModelHome.send(mail); + }}, secondsUntilDeliveryOffMail, TimeUnit.SECONDS + ); + } + response.sendRedirect("Subscribe2.jtp?forum="+forum.getId()); + } +} +