Ok, big merge. here's the new xml-config stuff in action. There's a few
[mir.git] / source / mircoders / producer / ProducerContent.java
index bf4df63..c198f82 100755 (executable)
@@ -2,11 +2,13 @@ package mircoders.producer;
 
 import java.io.*;
 import java.lang.*;
+import java.lang.reflect.*;
 import java.util.*;
 
 import freemarker.template.*;
 
 import mir.misc.*;
+import mir.media.*;
 import mir.storage.*;
 import mir.module.*;
 import mir.entity.*;
@@ -66,7 +68,16 @@ public class ProducerContent extends Producer {
     EntityList          batchEntityList;
     HashMap             currentContentValues;
     SimpleHash          imageHash = new SimpleHash();
-    EntityGruppen       userEntity=null;
+    EntityUsers         userEntity=null;
+    Entity              mediaType;
+    Entity              upMedia;
+    SimpleHash          upMediaSimpleHash;
+    Class               mediaHandlerClass;
+    Class               mediaStorageClass;
+    String              mediaStorageName;
+    String              mediaHandlerName=null;
+    MirMedia            mediaHandler=null;
+    Database            mediaStorage=null;
 
 
 
@@ -136,15 +147,50 @@ public class ProducerContent extends Producer {
         //create the freemarker-model
         SimpleHash mergeData = HTMLTemplateProcessor.makeSimpleHash(currentContentValues);
 
-        // get the images
-        EntityList currentMedia = DatabaseContentToMedia.getInstance().getImages(currentContent);
-        if (currentMedia!=null && currentMedia.getCount()>=1) {
-          SimpleList mediaList = HTMLTemplateProcessor.makeSimpleList(currentMedia);
+        // get the uploaded media
+        EntityList currentMediaList = DatabaseContentToMedia.getInstance().getUploadedMedia(currentContent);
+        if (currentMediaList!=null && currentMediaList.getCount()>=1) {
+          SimpleList mediaList = new SimpleList();
+          for (int n=0; n < currentMediaList.size();n++) {
+            upMedia = currentMediaList.elementAt(n);
+            upMediaSimpleHash = HTMLTemplateProcessor.makeSimpleHash(upMedia);
+            mediaType = ((EntityMedia)upMedia).getMediaType();
+            //in case it's a non-existant to_media_type entry..
+            if (mediaType != null) {
+              try {
+                mediaHandlerName = mediaType.getValue("classname");
+                mediaStorageName = mediaType.getValue("tablename");
+                mediaStorageClass = Class.forName("mircoders.storage.Database"+mediaStorageName);
+                mediaHandlerClass = Class.forName("mir.media.MediaHandler"+mediaHandlerName);
+                mediaHandler = (MirMedia)mediaHandlerClass.newInstance();
+                Method m = mediaStorageClass.getMethod("getInstance", null);
+                mediaStorage = (Database)m.invoke(null, null);
+                //we most likely need further info
+                upMedia = mediaStorage.selectById(upMedia.getId());
+              } catch (Exception e) {
+                theLog.printError("ProducerStartpage:problem in reflection: "+mediaHandlerName);
+              } //end catch
+              upMediaSimpleHash.put("url", mediaHandler.getURL(upMedia, mediaType));
+             upMediaSimpleHash.put("type",mediaType.getValue("classname"));
+              mediaList.add(upMediaSimpleHash);
+            } //end if media_type != null
+          } //end for
           mergeData.put("to_media", mediaList);
-        }
+        } //end if currentMediaList != null
 
         // get the comments for the article
-        mergeData.put("comments", currentContent.getComments());
+        // and html-ize them
+        SimpleList commentList = currentContent.getComments();
+        try{
+          if(commentList.isEmpty()==false){
+            while(commentList.hasNext()){
+              SimpleHash comment = (SimpleHash)commentList.next();
+              SimpleScalar commentText = (SimpleScalar)comment.get("description");
+              comment.put("description",new SimpleScalar(StringUtil.createHTML(commentText.getAsString(),imageRoot,mailLinkName,extLinkName,intLinkName)));
+            }
+          }
+        } catch(Exception e){}
+        mergeData.put("comments", commentList);
 
         // get the topics of this article
         mergeData.put("topics",HTMLTemplateProcessor.makeSimpleList(DatabaseContentToTopics.getInstance().getTopics(currentContent)));
@@ -154,7 +200,7 @@ public class ProducerContent extends Producer {
         sessionConnectTime = new java.util.Date().getTime() - startTime;
         if (retVal == true && !"1".equals(currentContent.getValue("is_produced")))
             currentContent.setProduced(true);
-      }
+      }//while
 
       if (batchEntityList.hasNextBatch()){
         batchEntityList = contentModule.getContent(whereClause, orderBy, batchEntityList.getNextBatch(),contentBatchsize, userEntity);
@@ -167,5 +213,6 @@ public class ProducerContent extends Producer {
     sessionConnectTime = new java.util.Date().getTime() - startTime;
     logHTML(htmlout, "Producer.Content finished: " + sessionConnectTime + " ms.");
   }
-  
+
 }
+