0
|
1
|
|
2 package nabble.view.web.mailing_list;
|
|
3
|
|
4 import fschmidt.util.mail.Mail;
|
|
5 import fschmidt.util.servlet.ServletUtils;
|
|
6 import nabble.model.Init;
|
|
7 import nabble.model.ListServer;
|
|
8 import nabble.model.MailingList;
|
|
9 import nabble.model.ModelHome;
|
|
10 import nabble.model.Executors;
|
|
11 import nabble.model.Node;
|
|
12 import nabble.model.User;
|
|
13 import nabble.view.lib.Jtp;
|
|
14 import nabble.view.lib.SubscribeDefaultsMail;
|
|
15 import org.slf4j.Logger;
|
|
16 import org.slf4j.LoggerFactory;
|
|
17
|
|
18 import javax.servlet.ServletException;
|
|
19 import javax.servlet.http.HttpServlet;
|
|
20 import javax.servlet.http.HttpServletRequest;
|
|
21 import javax.servlet.http.HttpServletResponse;
|
|
22 import java.io.IOException;
|
|
23 import java.util.concurrent.TimeUnit;
|
|
24
|
|
25
|
|
26 public final class Subscribe extends HttpServlet {
|
|
27
|
|
28 private static final Logger logger = LoggerFactory.getLogger(Subscribe.class);
|
|
29
|
|
30 private final static long secondsUntilDeliveryOffMail = Init.get("secondsUntilDeliveryOffMail",20*60); // why so long?
|
|
31
|
|
32 protected void service(HttpServletRequest request,HttpServletResponse response)
|
|
33 throws ServletException, IOException
|
|
34 {
|
|
35 User user = Jtp.getUser(request,response);
|
|
36 if (user == null) {
|
|
37 Jtp.login("You must login to be able to subscribe to a list.",request,response);
|
|
38 return;
|
|
39 }
|
|
40 Node forum = Jtp.getSiteNotNull(request).getNode(Long.parseLong(request.getParameter("forum")));
|
|
41 MailingList mailingList = forum.getAssociatedMailingList();
|
|
42 Mail userSubscribeMail = mailingList.subscribeMail(user);
|
|
43 ModelHome.send(userSubscribeMail);
|
|
44 logger.info("subscription request from "+user.getEmail()+" to "+mailingList.getListAddress());
|
|
45
|
|
46 if (mailingList.getListServer().needsDefaults() && mailingList.getListServer() != ListServer.google) {
|
|
47 String url = ServletUtils.getContextURL(request) + "/mailing_list/SubscribeDefaults.jtp?forum="+forum.getId()+"&k="+mailingList.getPassword(user);
|
|
48 final Mail mail = SubscribeDefaultsMail.newMail(user.getEmail(), mailingList, url);
|
|
49 Executors.schedule(
|
|
50 new Runnable(){public void run(){
|
|
51 ModelHome.send(mail);
|
|
52 }}, secondsUntilDeliveryOffMail, TimeUnit.SECONDS
|
|
53 );
|
|
54 }
|
|
55 response.sendRedirect("Subscribe2.jtp?forum="+forum.getId());
|
|
56 }
|
|
57 }
|
|
58
|