📄 forumdisplayaction.java
字号:
if (closed != 0 ||( autoclose!=0&& (timestamp- Integer.valueOf(thread.get(closedby)) > autoclose))) {
thread.put("new", "0");
if (closed > 1) {
thread.put("moved", thread.get("tid"));
thread.put("tid", String.valueOf(closed));
thread.put("replies", "-");
thread.put("views", "-");
}
thread.put("folder", "lock");
} else {
thread.put("folder", "common");
if (member != null&& member.getLastvisit() < Integer.valueOf(thread.get("lastpost"))) {
thread.put("new", "1");
thread.put("folder", "new");
} else {
thread.put("new", "0");
}
if (Integer.valueOf(thread.get("replies"))>Integer.valueOf(thread.get("views"))) {
thread.put("views", thread.get("replies"));
}
if (Integer.valueOf(thread.get("replies"))>Integer.valueOf(settings.get("hottopic"))) {
thread.put("folder", "hot");
}
}
thread.put("dateline", Common.gmdate(sdf_dateformat,Integer.valueOf(thread.get("dateline"))+timeoffset));
thread.put("lastpost", Common.gmdate(sdf_all, Integer.valueOf(thread.get("lastpost"))+timeoffset));
int displayorder = Integer.valueOf(thread.get("displayorder"));
if (displayorder == 1 || displayorder == 2|| displayorder == 3) {
thread.put("id", "stickthread_" + thread.get("tid"));
separatepos++;
} else if (displayorder == 4 || displayorder == 5) {
thread.put("id", "floatthread_" + thread.get("tid"));
thread.put("displaystyle", "style='display:none'");
} else {
thread.put("id", "normalthread_" + thread.get("tid"));
}
}
separatepos = separatepos>0 ? separatepos +1: (announcement!=null&&announcement.size()>0? 1 : 0);
request.setAttribute("threadlists", threadlists != null&& threadlists.size() > 0 ? threadlists : null);
request.setAttribute("creditstrans",creditstrans);
request.setAttribute("extcredits", extcredits);
request.setAttribute("separatepos", separatepos);
}
String postperm=forum.get("postperm");
Map<String, String> usergroups = (Map<String, String>) request.getAttribute("usergroups");
boolean allowpost=(("".equals(postperm))&&Integer.valueOf(usergroups.get("allowpost")).intValue()>0)||((!"".equals(postperm))&&Common.forumperm(postperm, groupid, extgroupid));
boolean showpoll=false;
boolean showtrade=false;
boolean showreward=false;
boolean showactivity=false;
boolean showdebate=false;
boolean showvideo=false;
short allowpostspecial= Short.valueOf(forum.get("allowpostspecial"));
if(allowpostspecial>0){
showpoll=(allowpostspecial&1)>0;
showtrade=(allowpostspecial&2)>0;
showreward=(allowpostspecial&4)>0;
showactivity=(allowpostspecial&8)>0;
showdebate=(allowpostspecial&16)>0;
showvideo=(allowpostspecial&32)>0&&"1".equals(settings.get("videoopen"));
request.setAttribute("showpoll",showpoll );
request.setAttribute("showtrade",showtrade );
request.setAttribute("showreward",showreward );
request.setAttribute("showactivity",showactivity );
request.setAttribute("showdebate",showdebate );
request.setAttribute("showvideo",showvideo);
}
if(allowpost&&usergroups!=null){
request.setAttribute("allowpostpoll",usergroups.get("allowpostpoll").equals("1")&&showpoll);
request.setAttribute("allowposttrade",usergroups.get("allowposttrade").equals("1")&&showtrade );
request.setAttribute("allowpostreward",usergroups.get("allowpostreward").equals("1")&&showreward&& extcredits.get(creditstrans)!=null);
request.setAttribute("allowpostactivity",usergroups.get("allowpostactivity").equals("1")&&showactivity );
request.setAttribute("allowpostdebate",usergroups.get("allowpostdebate").equals("1")&&showdebate );
request.setAttribute("allowpostvideo",usergroups.get("allowpostvideo").equals("1")&&showvideo);
}
request.setAttribute("allowpost", allowpost);
request.setAttribute("typemodels", dataParse.characterParse(forum.get("typemodels"), true));
request.setAttribute("forumdisplayadd", forumdisplayadd);
request.setAttribute("filter", filter);
request.setAttribute("typeid", typeid);
int whosonlinestatus=Integer.valueOf(settings.get("whosonlinestatus"));
if(whosonlinestatus==2||whosonlinestatus==3){
whosonlinestatus=1;
String[] onlineinfo=settings.get("onlinerecord").split("\t");
String showoldetails=request.getParameter("showoldetails");
if(showoldetails!=null){
if("no".equals(showoldetails)){
CookieUtil.setCookie(request, response, "onlineforum", "0", 31536000, true, settings);
}else if("yes".equals(showoldetails)){
CookieUtil.setCookie(request, response, "onlineforum", "1", 31536000, true, settings);
}
}
String onlineforum=CookieUtil.getCookie(request, "onlineforum", true, settings);
boolean detailstatus=showoldetails!=null&&showoldetails.equals("yes")||(onlineforum==null&&settings.get("whosonline_contract").equals("0"))||"1".equals(onlineforum)&&(!"yes".equals(showoldetails))&&Integer.valueOf(onlineinfo[0])<500;
if(detailstatus){
Common.updatesession(request,settings);
request.setAttribute("forumname", Common.strip_tags(name));
Map<String, String> onlinelist = (Map<String, String>) request.getAttribute("onlinelist");
List<Map<String,String>> onlines=dataBaseService.executeQuery("SELECT uid, username, groupid, invisible, action, lastactivity, fid FROM jrun_sessions WHERE fid="+fid+" "+(onlinelist.get("7")!=null?"":"AND uid > 0")+" AND invisible='0'");
if(onlines!=null&&onlines.size()>0){
SimpleDateFormat sdf_timeformat=new SimpleDateFormat((String)session.getAttribute("timeformat"));
MessageResources mr=getResources(request);
Locale locale=getLocale(request);
for (Map<String, String> online : onlines) {
if(!online.get("uid").equals("0")){
online.put("icon", onlinelist.get(online.get("groupid"))!=null?onlinelist.get(online.get("groupid")):onlinelist.get("0"));
}else{
online.put("icon", onlinelist.get("7"));
online.put("username", onlinelist.get("guest"));
}
online.put("action", mr.getMessage(locale,online.get("action")));
online.put("lastactivity",Common.gmdate(sdf_timeformat, Integer.valueOf(online.get("lastactivity"))+timeoffset));
}
request.setAttribute("whosonline", onlines);
}
}
request.setAttribute("detailstatus",detailstatus);
}
else{
whosonlinestatus=0;
}
request.setAttribute("whosonlinestatus",whosonlinestatus>0?true:false);
int visitedforumcount=Integer.valueOf(settings.get("visitedforums"));
if(visitedforumcount>0){
Map<Short,String> visitedforums=(Map<Short,String>)session.getAttribute("visitedforums");
if(visitedforums==null){
visitedforums=new HashMap<Short,String>();
}
visitedforums.put(fid, name);
if(visitedforums.size()>visitedforumcount+1){
Set<Short> keys=visitedforums.keySet();
for (Short key : keys) {
visitedforums.remove(key);
break;
}
}
session.setAttribute("visitedforums", visitedforums);
request.setAttribute("visitedforums",visitedforums!=null && visitedforums.size()>1?visitedforums:null);
}
String rsshead = "";
String rssstatus = settings.get("rssstatus");
String rssauth = "0";
if(rssstatus!=null&&rssstatus.equals("1")){
if(member!=null){
Md5Token md5 = Md5Token.getInstance();
rssauth = Common.authcode(member.getUid()+"\t"+fid+"\t"+md5.getLongToken(member.getPassword()+member.getSecques()).substring(0,8), "ENCODE", md5.getLongToken(settings.get("authkey")),null);
try {
rssauth = URLEncoder.encode(rssauth, JspRunConfig.charset);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
String boardurl = (String)session.getAttribute("boardurl");
if (boardurl == null) {
boardurl = (request.getScheme().concat("://").concat(request.getServerName()).concat(":")+request.getServerPort()).concat(request.getContextPath()).concat("/");
}
rsshead = "<link rel=\"alternate\" type=\"application/rss+xml\" title=\""+settings.get("bbname")+" - "+navtitle+"\" href=\""+boardurl+"rss.jsp?fid="+fid+"&auth="+rssauth+"\" />\n";
}
request.setAttribute("rssauth", rssauth);
request.setAttribute("rsshead", rsshead);
request.setAttribute("collapse", collapse);
settings=null;
} else {
request.setAttribute("errorInfo", "指定的版块不存在,请返回。");
return mapping.findForward("showMessage");
}
request.setAttribute("coloroptions", coloroptions);
return mapping.findForward("toForumdisplay");
}
@SuppressWarnings("unchecked")
private List<Map<String, String>> recommendupdate(short fid,Map modrecommend, boolean force, int timestamp) {
int maxlength=(Byte)modrecommend.get("maxlength");
List<Map<String, String>> recommendlist = new ArrayList<Map<String, String>>();
int num = modrecommend.get("num") != null ? (Byte) modrecommend.get("num") : 10;
List<Map<String, String>> recommends = dataBaseService.executeQuery("SELECT * FROM jrun_forumrecommend WHERE fid="+ fid + " ORDER BY displayorder LIMIT 0, " + num);
if (recommends != null) {
for (Map<String, String> recommend : recommends) {
int expiration = Integer.valueOf(recommend.get("expiration"));
if ((expiration > 0 && expiration > timestamp)|| expiration == 0) {
String subject= recommend.get("subject");
recommend.put("subject", maxlength>0&&subject.length()>maxlength?subject.substring(0,maxlength)+" ...":subject);
recommendlist.add(recommend);
}
}
recommends=null;
}
if ("1".equals(modrecommend.get("sort"))&& (recommendlist.size() == 0|| (timestamp - (Integer) modrecommend.get("updatetime")) > (Integer) modrecommend.get("cachelife") || force)) {
if (recommendlist.size() > 0) {
dataBaseService.runQuery("DELETE FROM jrun_forumrecommend WHERE fid=" + fid,true);
}
recommendlist.clear();
int dataline = (Integer) modrecommend.get("dateline");
String orderby = "dateline";
String conditions = dataline > 0 ? " AND dateline>"+ (timestamp - dataline * 3600) : "";
String order = modrecommend.get("orderby").toString();
int orderid = order != null && !"".equals(order) ? Integer.valueOf(order) : 0;
switch (orderid) {
case 1:
orderby = "lastpost";
break;
case 2:
orderby = "views";
break;
case 3:
orderby = "replies";
break;
case 4:
orderby = "digest";
break;
}
StringBuffer addthread = new StringBuffer();
int i = 0;
List<Map<String, String>> threads = dataBaseService.executeQuery("SELECT fid, tid, author, authorid, subject FROM jrun_threads WHERE fid=" + fid + " AND displayorder>='0' "+ conditions + " ORDER BY " + orderby + " DESC LIMIT 0, "+ num);
if (threads != null && threads.size() > 0) {
for (Map<String, String> thread : threads) {
String subject= thread.get("subject");
thread.put("subject", maxlength>0&&subject.length()>maxlength?subject.substring(0,maxlength)+" ...":subject);
recommendlist.add(thread);
addthread.append("('" + thread.get("fid") + "', '"+ thread.get("tid") + "', '" + i + "', '"+ thread.get("subject") + "', '"+ thread.get("author") + "', '"+ thread.get("authorid") + "', '0', '0')"+", ");
i++;
}
}
if (addthread.length()>0) {
dataBaseService.runQuery("REPLACE INTO jrun_forumrecommend (fid, tid, displayorder, subject, author, authorid, moderatorid, expiration) VALUES "+ addthread.substring(0,addthread.length()-2),true);
modrecommend.put("updatetime", timestamp);
dataBaseService.runQuery("UPDATE jrun_forumfields SET modrecommend='"+ dataParse.combinationChar(modrecommend)+ "' WHERE fid=" + fid,true);
}
}
return recommendlist.size() > 0 ? recommendlist : null;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -