1 package mircoders.producer;
5 import java.lang.reflect.*;
9 import freemarker.template.*;
17 import mircoders.entity.*;
18 import mircoders.storage.*;
22 public class ProducerTopics extends ProducerList {
25 String currentMediaId;
26 EntityList upMediaEntityList;
27 EntityList imageEntityList;
28 EntityList currentMediaList;
30 EntityMedia uploadedMedia;
31 Class mediaHandlerClass=null;
32 MirMedia mediaHandler=null;
33 String mediaHandlerName=null;
34 Database mediaStorage=null;
38 public void setAdditional(String key, TemplateModel value) {
39 additional.put(key,value);
42 public void handle(PrintWriter htmlout, EntityUsers user, boolean force, boolean sync, String id)
43 throws StorageObjectException, ModuleException {
45 handle(htmlout,user,force,sync);
48 public void handle(PrintWriter htmlout, EntityUsers user, boolean force, boolean sync)
49 throws StorageObjectException, ModuleException {
51 orderBy="date desc, webdb_create desc";
52 listTemplate = MirConfig.getProp("Producer.TopicList.Template");
54 EntityList topicsEntityList;
56 topicsEntityList = topicsModule.getByWhereClause("","title", -1);
58 topicsEntityList = topicsModule.getByWhereClause(where,"title", -1);
60 SimpleList topicsList = HTMLTemplateProcessor.makeSimpleList(topicsEntityList);
62 for(int i=0; i < topicsEntityList.size(); i++){
64 EntityTopics currentTopic = (EntityTopics)topicsEntityList.elementAt(i);
67 EntityList contentEntityList = DatabaseContentToTopics.getInstance().getContent(currentTopic);
68 String whereClauseSpecial=null;
70 if (contentEntityList!=null || force==true) {
71 if (contentEntityList!=null){
73 whereClause="is_published='1' AND to_article_type >= 1 AND to_article_type <=2 AND id IN (";
74 whereClauseSpecial="is_published='1' AND to_article_type=3 AND id IN (";
75 for(int j=0; j < contentEntityList.size(); j++){
78 whereClauseSpecial += ",";
80 EntityContent currentContent = (EntityContent)contentEntityList.elementAt(j);
81 whereClause += currentContent.getId();
82 whereClauseSpecial += currentContent.getId();
84 setAdditional("topic",HTMLTemplateProcessor.makeSimpleHash(currentTopic));
89 whereClauseSpecial += ")";
92 if(contentEntityList==null && force==true){
93 //hihi, das ist eigentlich boese
94 whereClause="is_published='1' AND to_article_type>=1 AND id IN (0)";
97 fileDesc = currentTopic.getValue("filename");
99 // get the startarticle
100 EntityList entityList = contentModule.getContent(whereClauseSpecial,"date desc, webdb_create desc",0,1);
101 String currentMediaId = null;
102 SimpleHash imageHash = new SimpleHash();
103 EntityContent currentContent;
104 if(entityList != null && entityList.size()==1){
105 currentContent = (EntityContent)entityList.elementAt(0);
107 SimpleHash specialHash = HTMLTemplateProcessor.makeSimpleHash(currentContent);
109 currentMediaList = DatabaseContentToMedia.getInstance().getUploadedMedia(currentContent);
110 if (currentMediaList!=null && currentMediaList.getCount()>=1) {
111 SimpleList mediaListAudio = new SimpleList();
112 SimpleList mediaListImages = new SimpleList();
113 SimpleList mediaListVideo = new SimpleList();
114 SimpleList mediaListOther = new SimpleList();
115 for (int n=0; n < currentMediaList.size();n++) {
116 upMedia = currentMediaList.elementAt(n);
117 upMediaSimpleHash = HTMLTemplateProcessor.makeSimpleHash(upMedia);
118 mediaType = ((EntityMedia)upMedia).getMediaType();
119 //must be a non-existant to_media_type entry..
120 if (mediaType != null) {
121 mediaHandlerName = mediaType.getValue("classname");
122 mediaStorageName = mediaType.getValue("tablename");
123 mediaStorageClass = Class.forName("mircoders.storage.Database"+mediaStorageName);
124 mediaHandlerClass = Class.forName("mir.media.MediaHandler"+mediaHandlerName);
125 mediaHandler = (MirMedia)mediaHandlerClass.newInstance();
126 Method m = mediaStorageClass.getMethod("getInstance", null);
127 mediaStorage = (Database)m.invoke(null, null);
128 //we most likely need further info
129 upMedia = mediaStorage.selectById(upMedia.getId());
130 upMediaSimpleHash.put("url", mediaHandler.getListView(upMedia, mediaType));
131 if (upMedia.getValue("is_published").equals("1")) {
132 if (mediaHandler.isImage()) {
133 mediaListImages.add(upMediaSimpleHash);
134 } else if (mediaHandler.isAudio()) {
135 mediaListAudio.add(upMediaSimpleHash);
136 } else if (mediaHandler.isVideo()) {
137 mediaListVideo.add(upMediaSimpleHash);
139 mediaListOther.add(upMediaSimpleHash);
141 } //end if is_published
142 } //end if media_type != null
144 specialHash.put("to_media_audio", mediaListAudio);
145 specialHash.put("to_media_images", mediaListImages);
146 specialHash.put("to_media_video", mediaListVideo);
147 specialHash.put("to_media_other", mediaListOther);
148 } //end if currentMediaList != null
150 setAdditional("special",specialHash);
151 } catch (Exception e) {
152 theLog.printError("ProducerTopics: problem with start special media: "+currentContent.getId()+" "+e.toString()+" <font color=\"red\">skipping</font>");
153 logHTML(htmlout,"ProducerTopics: problem with start special media: "+currentContent.getId()+" "+e.toString());
157 //set the list of topics
158 setAdditional("topicslist",topicsList);
160 handleIt(htmlout,user,force);
162 } catch (Exception e) {
163 logHTML(htmlout,"ProducerTopics: problem with topic id: "
164 +currentTopic.getId()+ "<font color=\"red\">skipping</font>");
169 public static void main(String argv[]){
171 new ProducerOpenPosting().handle(new PrintWriter(System.out), null,false, false);
172 } catch(Exception e) {
173 System.err.println(e.toString());