merged 1.1 branch into head
[mir.git] / source / mircoders / localizer / basic / MirBasicEmailArticleHandler.java
index 39d0908..5038b6a 100755 (executable)
@@ -32,12 +32,12 @@ package mircoders.localizer.basic;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
-import java.util.Vector;
-import java.util.Collections;
 
 import mir.config.MirPropertiesConfiguration;
 import mir.generator.Generator;
@@ -56,7 +56,6 @@ import mircoders.entity.EntityContent;
 import mircoders.global.CacheKey;
 import mircoders.global.MirGlobal;
 import mircoders.module.ModuleContent;
-import mircoders.storage.DatabaseContent;
 
 import org.apache.commons.net.smtp.SMTPClient;
 import org.apache.commons.net.smtp.SMTPReply;
@@ -118,21 +117,32 @@ public class MirBasicEmailArticleHandler implements SessionHandler {
     if (articleID == null){
       throw new SessionExc("makeInitialResponse: article id not set!");
     }
-    else {
-      aSession.setAttribute("email.aid",articleID);
-      aResponse.setResponseValue("errors", null);
-
-      String mail_language = configuration.getString("Mir.Login.DefaultLanguage", "en");
-      aResponse.setResponseValue("mail_language",mail_language);
-      aResponse.setResponseValue("mail_to","");
-      aResponse.setResponseValue("mail_from","");
-      aResponse.setResponseValue("mail_from_name","");
-      aResponse.setResponseValue("mail_comment","");
 
-      aResponse.setResponseGenerator(configuration.getString("Localizer.OpenSession.email.PrepareTemplate"));
+    EntityContent article;
+    try {
+      article = (EntityContent) (new ModuleContent()).getById(articleID);
+    }
+    catch (Throwable t) {
+      throw new SessionExc("Unknown article: " + articleID);
+    }
 
+    if (!MirGlobal.localizer().openPostings().allowArticlePublication(article)) {
 
     }
+
+
+
+    aSession.setAttribute("email.aid",articleID);
+    aResponse.setResponseValue("errors", null);
+
+    String mail_language = configuration.getString("Mir.Login.DefaultLanguage", "en");
+    aResponse.setResponseValue("mail_language",mail_language);
+    aResponse.setResponseValue("mail_to","");
+    aResponse.setResponseValue("mail_from","");
+    aResponse.setResponseValue("mail_from_name","");
+    aResponse.setResponseValue("mail_comment","");
+
+    aResponse.setResponseGenerator(configuration.getString("Localizer.OpenSession.email.PrepareTemplate"));
   }
 
   protected boolean shouldSendMail(Request aRequest, Session aSession, Response aResponse,List aValidationErrors) throws SessionExc, SessionFailure{
@@ -144,11 +154,9 @@ public class MirBasicEmailArticleHandler implements SessionHandler {
           || to.indexOf(',') != -1) {
        throw new SessionExc("Invalid to address"); // we might want to see this in a log, so it is not a validation error
       }
-      else return true; // go for it
-    }
-    else{
-      return false; //validation failed, but not in a potentially abusive way
+                       return true; // go for it
     }
+               return false; //validation failed, but not in a potentially abusive way
 
   }
 
@@ -191,7 +199,9 @@ public class MirBasicEmailArticleHandler implements SessionHandler {
 
        String emailAnArticleTemplate = configuration.getString("Localizer.OpenSession.email.MailTemplate");
 
-       Generator generator = MirGlobal.localizer().generators().makeOpenPostingGeneratorLibrary().makeGenerator(emailAnArticleTemplate);
+       Generator generator =
+      MirGlobal.localizer().generators().makeOpenPostingGeneratorLibrary().
+          makeGenerator(emailAnArticleTemplate, null);
 
        StringWriter theEmailStringWriter = new StringWriter();
        PrintWriter theEmailPrintWriter = new PrintWriter(theEmailStringWriter);
@@ -212,7 +222,7 @@ public class MirBasicEmailArticleHandler implements SessionHandler {
 
   protected String getExtraEmailHeaders(Request aRequest,String to,String from) throws SessionExc {
 
-    String headers = "To: " + to + "\nReply-To: "+ from+"\n";;
+    String headers = "To: " + to + "\nReply-To: "+ from+"\n";
     if (configuration.getString("Localizer.OpenSession.email.includeSenderIP","no").equals("yes"))
       headers= headers+"X-Originating-IP: "+ ((HTTPRequestAdapter)aRequest).getRequest().getRemoteAddr() + "\n";
 
@@ -259,8 +269,7 @@ public class MirBasicEmailArticleHandler implements SessionHandler {
      // mission accomplished??
      if (! trueIfItWorked)
        throw new SessionExc(client.getReplyString());
-     else
-       return trueIfItWorked;
+               return trueIfItWorked;
    }
    catch(IOException e) {
       if(client.isConnected()) {
@@ -292,7 +301,7 @@ public class MirBasicEmailArticleHandler implements SessionHandler {
 
 
   protected void subsequentRequest(Request aRequest, Session aSession, Response aResponse) throws SessionExc, SessionFailure {
-    List validationErrors = new Vector();
+    List validationErrors = new ArrayList();
     if (shouldSendMail(aRequest,aSession,aResponse,validationErrors)){
 
       sendMail(aRequest,aSession,aResponse);