entered some unwanted posting protection for indymedia.nl. Extended the localization...
[mir.git] / source / mirlocal / indymedia.nl / IndyNLOpenPostingLocalizer.java
index 537d7b1..c386084 100755 (executable)
@@ -1,19 +1,82 @@
 package mirlocal.indymedia.nl;
 
+import java.util.*;
+import mir.util.*;
+import mir.entity.*;
+import mir.storage.*;
 import mircoders.localizer.*;
 import mircoders.global.*;
 import mircoders.localizer.basic.*;
+import mircoders.entity.*;
+import mircoders.storage.*;
 
 public class IndyNLOpenPostingLocalizer extends MirBasicOpenPostingLocalizer {
+  
+//  private static String[] CONTENT_FIELDS_TO_CHECK = { "content_data", "description", "title", "creator" };
 
-  public void afterContentPosting() {
+
+  public void afterContentPosting(EntityContent aContent) {
+    if (checkEntity(aContent)) {
+      try {
+        aContent.setValueForProperty("to_article_type", "8");
+        aContent.update();
+      }
+      catch (Throwable t) {
+      }
+    }
+    
     MirGlobal.producerEngine().addJob("media", "new");
     MirGlobal.producerEngine().addJob("content", "new");
     MirGlobal.producerEngine().addJob("startpage", "(default)");
     MirGlobal.producerEngine().addJob("synchronization", "run");
   }
 
-  public void afterCommentPosting() {
-    super.afterCommentPosting();
+  public void afterCommentPosting(EntityComment aComment) {
+    if (checkEntity(aComment)) {
+      try {
+        aComment.setValueForProperty("is_published", "0");
+        aComment.update();
+      }
+      catch (Throwable t) {
+      }
+    }
+    super.afterCommentPosting(aComment);
+  }
+  
+  private boolean checkEntity(Entity anEntity) {
+    String forbiddenWordsSpecification = MirGlobal.getConfigPropertyWithDefault("IndymediaNL.forbiddenExpressions", "");
+    List forbiddenWords = ParameterExpander.splitString(forbiddenWordsSpecification, ":");
+    Iterator i, j;
+    boolean found = false;
+    String field;
+    
+
+    try {    
+      j = anEntity.getFields().iterator();
+      while (!found && j.hasNext()) {
+        field = anEntity.getValue((String) j.next());
+        
+        if (field!=null) {
+          field=field.toLowerCase();
+          i = forbiddenWords.iterator();
+          while (!found && i.hasNext()) {
+            String forbiddenWord = (String) i.next();
+          
+            try {
+              if (field.indexOf(forbiddenWord.toLowerCase())>=0) {
+                found = true;
+              }
+            }
+            catch (Throwable t) {
+              logger.printError("Error while matching " + field + " to " + forbiddenWord + ": " + t.toString());
+            }
+          }
+        }
+      }
+    }
+    catch (Throwable t) {
+    }
+    
+    return found;
   }
 }