diff src/nabble/view/web/mailing_list/Subscribe.jtp @ 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.jtp	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());
+	}
+}
+%>