package cn.jcenterhome.service; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import cn.jcenterhome.util.BeanFactory; import cn.jcenterhome.util.Common; import cn.jcenterhome.util.JavaCenterHome; import cn.jcenterhome.util.Serializer; public class FeedService { public void feedPublish(HttpServletRequest request, HttpServletResponse response, int id, String idType, boolean add) { Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig"); Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal"); DataBaseService dataBaseService = (DataBaseService) BeanFactory.getBean("dataBaseService"); Map<String, Object> setArr = new HashMap<String, Object>(); if ("blogid".equals(idType)) { List<Map<String, Object>> blogs = dataBaseService.executeQuery("SELECT b.*,bf.* FROM " + JavaCenterHome.getTableName("blog") + " b LEFT JOIN " + JavaCenterHome.getTableName("blogfield") + " bf ON bf.blogid=b.blogid WHERE b.blogid='" + id + "'"); if (blogs.size() > 0) { Map<String, Object> blog = blogs.get(0); if ((Integer) blog.get("friend") != 3) { setArr.put("icon", "blog"); setArr.put("id", blog.get("blogid")); setArr.put("idtype", idType); setArr.put("uid", blog.get("uid")); setArr.put("username", blog.get("username")); setArr.put("dateline", blog.get("dateline")); setArr.put("target_ids", blog.get("target_ids")); setArr.put("friend", blog.get("friend")); setArr.put("hot", blog.get("hot")); String url = "space.jsp?uid=" + blog.get("uid") + "&do=blog&id=" + blog.get("blogid"); if ((Integer) blog.get("friend") == 4) { setArr.put("title_template", Common.getMessage(request, "cp_feed_blog_password")); Map<String, Object> td = new HashMap<String, Object>(); td.put("subject", "<a href=\"" + url + "\">" + blog.get("subject") + "</a>"); setArr.put("title_data", td); setArr.put("body_template", ""); } else { if (!Common.empty(blog.get("pic"))) { setArr.put("image_1", Common.pic_cover_get(sConfig, (String) blog.get("pic"), (Integer) blog.get("picflag"))); setArr.put("image_1_link", url); } setArr.put("title_template", Common.getMessage(request, "cp_feed_blog")); setArr.put("body_template", "<b>{subject}</b><br>{summary}"); Map<String, Object> bd = new HashMap<String, Object>(); bd.put("subject", "<a href=\"" + url + "\">" + blog.get("subject") + "</a>"); try { bd.put("summary", Common.getStr((String) blog.get("message"), 150, true, true, false, 0, -1, request, response)); } catch (Exception e) { } setArr.put("body_data", bd); } } } } else if ("albumid".equals(idType)) { int key = 1; if (id > 0) { List<Map<String, Object>> query = dataBaseService .executeQuery("SELECT p.*, a.username, a.albumname, a.picnum, a.friend, a.target_ids FROM " + JavaCenterHome.getTableName("pic") + " p LEFT JOIN " + JavaCenterHome.getTableName("album") + " a ON a.albumid=p.albumid WHERE p.albumid='" + id + "' ORDER BY dateline DESC LIMIT 0,4"); for (Map<String, Object> album : query) { if ((Integer) album.get("friend") <= 2) { if (Common.empty(setArr.get("icon"))) { setArr.put("icon", "album"); setArr.put("id", album.get("albumid")); setArr.put("idtype", idType); setArr.put("uid", album.get("uid")); setArr.put("username", album.get("username")); setArr.put("dateline", album.get("dateline")); setArr.put("target_ids", album.get("target_ids")); setArr.put("friend", album.get("friend")); setArr.put("title_template", "{actor} " + Common.getMessage(request, "cp_upload_album")); setArr.put("body_template", "<b>{album}</b><br>" + Common.getMessage(request, "cp_the_total_picture", "{picnum}")); Map<String, Object> bd = new HashMap<String, Object>(); bd.put("album", "<a href=\"space.jsp?uid=" + album.get("uid") + "&do=album&id=" + album.get("albumid") + "\">" + album.get("albumname") + "</a>"); bd.put("picnum", album.get("picnum")); setArr.put("body_data", bd); } setArr.put("image_" + key, Common.pic_get(sConfig, (String) album.get("filepath"), (Integer) album.get("thumb"), (Integer) album.get("remote"), true)); setArr.put("image_" + key + "_link", "space.jsp?uid=" + album.get("uid") + "&do=album&picid=" + album.get("picid")); key++; } else { break; } } } else { List<String> result = dataBaseService.executeQuery("SELECT COUNT(*) FROM " + JavaCenterHome.getTableName("pic") + " WHERE uid='"+sGlobal.get("supe_uid")+"' AND albumid='0'", 1); int picNum = Common.intval(result.get(0)); if (picNum >= 1) { List<Map<String, Object>> query = dataBaseService.executeQuery("SELECT * FROM " + JavaCenterHome.getTableName("pic") + " WHERE uid='" + sGlobal.get("supe_uid") + "' AND albumid='0' ORDER BY dateline DESC LIMIT 0,4"); for (Map<String, Object> album : query) { if (Common.empty(setArr.get("icon"))) { setArr.put("icon", "album"); setArr.put("uid", album.get("uid")); setArr.put("username", album.get("username")); setArr.put("dateline", album.get("dateline")); setArr.put("title_template", "{actor} " + Common.getMessage(request, "cp_upload_album")); setArr.put("body_template", "<b>{album}</b><br>" + Common.getMessage(request, "cp_the_total_picture", "{picnum}")); Map<String, Object> bd = new HashMap<String, Object>(); bd.put("album", "<a href=\"space.jsp?uid=" + album.get("uid") + "&do=album&id=-1\">" + Common.getMessage(request, "default_albumname") + "</a>"); bd.put("picnum", picNum); setArr.put("body_data", bd); } setArr.put("image_" + key, Common.pic_get(sConfig, (String) album.get("filepath"), (Integer) album.get("thumb"), (Integer) album.get("remote"), true)); setArr.put("image_" + key + "_link", "space.jsp?uid=" + album.get("uid") + "&do=album&picid=" + album.get("picid")); key++; } } } } else if ("picid".equals(idType)) { String plusSql = id > 0 ? "p.picid='" + id + "'" : "p.uid='" + sGlobal.get("supe_uid") + "' ORDER BY dateline DESC LIMIT 1"; List<Map<String, Object>> query = dataBaseService .executeQuery("SELECT p.*, a.friend, a.target_ids, s.username FROM " + JavaCenterHome.getTableName("pic") + " p LEFT JOIN " + JavaCenterHome.getTableName("space") + " s ON s.uid=p.uid LEFT JOIN " + JavaCenterHome.getTableName("album") + " a ON a.albumid=p.albumid WHERE " + plusSql); if (query.size() != 0) { Map<String, Object> pic = query.get(0); if (Common.empty(pic.get("friend"))) { setArr.put("icon", "album"); setArr.put("id", pic.get("picid")); setArr.put("idtype", idType); setArr.put("uid", pic.get("uid")); setArr.put("username", pic.get("username")); setArr.put("dateline", pic.get("dateline")); setArr.put("target_ids", pic.get("target_ids")); setArr.put("friend", pic.get("friend")); setArr.put("hot", pic.get("hot")); String url = "space.jsp?uid=" + pic.get("uid") + "&do=album&picid=" + pic.get("picid"); setArr.put("image_1", Common.pic_get(sConfig, (String) pic.get("filepath"), (Integer) pic .get("thumb"), (Integer) pic.get("remote"), true)); setArr.put("image_1_link", url); setArr.put("title_template", "{actor} " + Common.getMessage(request, "cp_upload_a_new_picture")); setArr.put("body_template", "{title}"); Map<String, Object> bd = new HashMap<String, Object>(); bd.put("title", pic.get("title")); setArr.put("body_data", bd); } } } else if ("tid".equals(idType)) { List<Map<String, Object>> query = dataBaseService.executeQuery("SELECT t.*, p.* FROM " + JavaCenterHome.getTableName("thread") + " t LEFT JOIN " + JavaCenterHome.getTableName("post") + " p ON p.tid=t.tid AND p.isthread='1' WHERE t.tid='" + id + "'"); if (query.size() != 0) { Map<String, Object> thread = query.get(0); setArr.put("icon", "thread"); setArr.put("id", thread.get("tid")); setArr.put("idtype", idType); setArr.put("uid", thread.get("uid")); setArr.put("username", thread.get("username")); setArr.put("dateline", thread.get("dateline")); setArr.put("hot", thread.get("hot")); String url = "space.jsp?uid=" + thread.get("uid") + "&do=thread&id=" + thread.get("tid"); if (!Common.empty(thread.get("eventid"))) { query = dataBaseService.executeQuery("SELECT * FROM " + JavaCenterHome.getTableName("event") + " WHERE eventid='" + thread.get("eventid") + "'"); Map<String, Object> event = query.size() == 0 ? new HashMap<String, Object>() : query .get(0); setArr.put("title_template", Common.getMessage(request, "cp_feed_eventthread")); setArr.put("body_template", "<b>{subject}</b><br>" + Common.getMessage(request, "event") + ": {event}<br>{summary}"); Map<String, Object> bd = new HashMap<String, Object>(); bd.put("subject", "<a href=\"" + url + "&eventid=" + thread.get("eventid") + "\">" + thread.get("subject") + "</a>"); bd.put("event", "<a href=\"space.jsp?do=event&id=" + thread.get("eventid") + "\">" + event.get("title") + "</a>"); try { bd.put("summary", Common.getStr((String) thread.get("message"), 150, true, true, false, 0, -1, request, response)); } catch (Exception e) { } setArr.put("body_data", bd); } else { query = dataBaseService.executeQuery("SELECT * FROM " + JavaCenterHome.getTableName("mtag") + " WHERE tagid='" + thread.get("tagid") + "'"); Map<String, Object> mtag = query.size() == 0 ? new HashMap<String, Object>() : query .get(0); setArr.put("title_template", Common.getMessage(request, "cp_feed_thread")); setArr.put("body_template", "<b>{subject}</b><br>" + Common.getMessage(request, "cp_mtag") + ": {mtag}<br>{summary}"); Map<String, Object> bd = new HashMap<String, Object>(); bd.put("subject", "<a href=\"" + url + "\">" + thread.get("subject") + "</a>"); bd.put("mtag", "<a href=\"space.jsp?do=mtag&tagid=" + thread.get("tagid") + "\">" + mtag.get("tagname") + "</a>"); try { bd.put("summary", Common.getStr((String) thread.get("message"), 150, true, true, false, 0, -1, request, response)); } catch (Exception e) { } setArr.put("body_data", bd); } } } else if ("pid".equals(idType)) { List<Map<String, Object>> query = dataBaseService.executeQuery("SELECT * FROM " + JavaCenterHome.getTableName("poll") + " WHERE pid='" + id + "'"); if (query.size() != 0) { Map<String, Object> poll = query.get(0); setArr.put("icon", "poll"); setArr.put("id", poll.get("pid")); setArr.put("idtype", idType); setArr.put("uid", poll.get("uid")); setArr.put("username", poll.get("username")); setArr.put("dateline", poll.get("dateline")); setArr.put("hot", poll.get("hot")); String url = "space.jsp?uid=" + poll.get("uid") + "&do=poll&pid=" + poll.get("pid"); setArr.put("title_template", Common.getMessage(request, "cp_feed_poll")); setArr.put("body_template", "<a href=\"{url}\"><strong>{subject}</strong></a>{option}"); query = dataBaseService.executeQuery("SELECT * FROM " + JavaCenterHome.getTableName("polloption") + " WHERE pid='" + poll.get("pid") + "' LIMIT 0,2"); StringBuffer optionStr = new StringBuffer(); for (Map<String, Object> option : query) { optionStr.append("<br><input type=\"" + ((Integer) poll.get("maxchoice") > 1 ? "checkbox" : "radio") + "\" disabled name=\"poll_" + option.get("oid") + "\"/>" + option.get("option")); } Map<String, Object> bd = new HashMap<String, Object>(); bd.put("url", url); bd.put("subject", poll.get("subject")); bd.put("option", optionStr); setArr.put("body_data", bd); setArr.put("body_general", !Common.empty(poll.get("percredit")) ? Common.getMessage(request, "cp_reward_info", poll.get("percredit")) : ""); } } else if ("eventid".equals(idType)) { List<Map<String, Object>> query = dataBaseService.executeQuery("SELECT * FROM " + JavaCenterHome.getTableName("event") + " WHERE eventid='" + id + "'"); if (query.size() != 0) { Map<String, Object> event = query.get(0); setArr.put("icon", "event"); setArr.put("id", event.get("eventid")); setArr.put("idtype", idType); setArr.put("uid", event.get("uid")); setArr.put("username", event.get("username")); setArr.put("dateline", event.get("dateline")); setArr.put("hot", event.get("hot")); String url = "space.jsp?do=event&id=" + event.get("eventid"); setArr.put("title_template", Common.getMessage(request, "cp_event_add")); setArr.put("body_template", Common.getMessage(request, "cp_event_feed_info")); Map<String, Object> bd = new HashMap<String, Object>(); bd.put("title", "<a href=\"" + url + "\">" + event.get("title") + "</a>"); bd.put("province", event.get("province")); bd.put("city", event.get("city")); bd.put("location", event.get("location")); bd.put("starttime", Common.sgmdate(request, "MM-dd HH:mm", (Integer) event.get("starttime"))); bd.put("endtime", Common.sgmdate(request, "MM-dd HH:mm", (Integer) event.get("endtime"))); setArr.put("body_data", bd); if (!Common.empty(event.get("poster"))) { setArr.put("image_1", Common.pic_get(sConfig, (String) event.get("poster"), (Integer) event.get("thumb"), (Integer) event.get("remote"), true)); setArr.put("image_1_link", url); } } } else if ("sid".equals(idType)) { List<Map<String, Object>> query = dataBaseService.executeQuery("SELECT * FROM " + JavaCenterHome.getTableName("share") + " WHERE sid='" + id + "'"); if (query.size() != 0) { Map<String, Object> share = query.get(0); setArr.put("icon", "share"); setArr.put("id", share.get("sid")); setArr.put("idtype", idType); setArr.put("uid", share.get("uid")); setArr.put("username", share.get("username")); setArr.put("dateline", share.get("dateline")); setArr.put("hot", share.get("hot")); String url = "space.jsp?uid=" + share.get("uid") + "&do=share&id=" + share.get("sid"); Map<String, Object> title_data = new HashMap<String, Object>(); title_data.put("url", url); setArr.put("title_data", title_data); setArr.put("title_template", "{actor} <a href=\"{url}\">"+share.get("title_template")+"</a>" ); setArr.put("body_template", share.get("body_template")); setArr.put("body_data", share.get("body_data")); setArr.put("body_general", share.get("body_general")); setArr.put("image_1", share.get("image")); setArr.put("image_1_link", share.get("image_link")); } } if (setArr.get("icon") != null) { setArr.put("appid", Common.intval(JavaCenterHome.jchConfig.get("JC_APPID"))); setArr.put("title_data", Serializer.serialize(setArr.get("title_data"))); if (!"sid".equals(idType)) { setArr.put("body_data", Serializer.serialize(setArr.get("body_data"))); } setArr.put("hash_template", Common.md5(setArr.get("title_template") + "\t" + setArr.get("body_template"))); setArr.put("hash_data", Common.md5(setArr.get("title_template") + "\t" + setArr.get("title_data") + "\t" + setArr.get("body_template") + "\t" + setArr.get("body_data"))); Common.sAddSlashes(setArr); int feedId = 0; if (!add && !Common.empty(setArr.get("id"))) { List<String> query = dataBaseService.executeQuery("SELECT feedid FROM " + JavaCenterHome.getTableName("feed") + " WHERE id='" + id + "' AND idtype='" + idType + "'", 1); if (query.size() != 0) { feedId = Common.intval(query.get(0)); } } if (feedId != 0) { Map<String, Object> whereArr = new HashMap<String, Object>(); whereArr.put("feedid", feedId); dataBaseService.updateTable("feed", setArr, whereArr); } else { if (setArr.get("body_general") == null) { setArr.put("body_general", ""); } if (setArr.get("target_ids") == null) { setArr.put("target_ids", ""); } dataBaseService.insertTable("feed", setArr, false, false); } } } }