⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 forumdisplayaction.java

📁 论坛软件系统亦称电子公告板(BBS)系统
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
						}
						request.setAttribute("endrows", endrows);						
					}
					request.setAttribute("forumcolwidth", Math.floor(100 / forumcolumns)+ "%");
				}
				Map<String,String> collapseimg=new HashMap<String,String>();
				if(jsprun_collapse!=null&&jsprun_collapse.indexOf("subforum_"+fid)>0){
					collapse.put("subforum", "display: none");
					collapseimg.put("subforum", "collapsed_yes.gif");
				}
				else{
					collapse.put("subforum", "");
					collapseimg.put("subforum", "collapsed_no.gif");
				}
				request.setAttribute("collapseimg", collapseimg);
				request.setAttribute("lastposts", lastposts);
				request.setAttribute("subforums",subforums.size() > 0 ? subforums : null);
			}maps=null;
			if(settings.get("forumjump").equals("1")){
				List<Map<String,String>> forumlist=dataParse.characterParse(settings.get("forums"));
				if("1".equals(settings.get("jsmenu_1"))){
					request.setAttribute("forummenu", Common.forumselect(forumlist,groupid, extgroupid, String.valueOf(fid),forumdisplayurl));
				}
				else{
					request.setAttribute("forumselect", Common.forumselect(forumlist,false, false, groupid, extgroupid,null,forumdisplayurl));
				}				
			}
			request.setAttribute("forum", forum);
			request.setAttribute("threadsticky", settings.get("threadsticky").split(","));
			String viewthreadurl = settings.get("rewritestatus"); 
			boolean viewthread = (Integer.valueOf(viewthreadurl)&2)>0;
			short simple = Short.valueOf(forum.get("simple"));
			if((simple & 1)>0) {
				return mapping.findForward("toForumdisplay_simple");
			}
			int subforumsindex = -1;
			int defaultorderfield = 0;
			int defaultorder = 0;
			defaultorderfield = simple / 64;
			simple %= 64;
			defaultorder = simple / 32;
			simple %= 32;
			if (simple >= 16) {
				subforumsindex = 1;
				simple -= 16;
			}
			if (simple >= 8) {
				subforumsindex = 0;
				simple -= 8;
			}
			request.setAttribute("simple", simple);
			request.setAttribute("subforumsindex", subforumsindex);
			request.setAttribute("defaultorderfield", defaultorderfield);
			request.setAttribute("defaultorder", defaultorder);
			String filteradd = null;
			StringBuffer forumdisplayadd = new StringBuffer();
			int threadcount = 0;
			String filter = request.getParameter("filter");
			int typeid = Common.toDigit(request.getParameter("typeid"), 255L, 0L).intValue();
			if (filter == null) {
				threadcount = Integer.valueOf(forum.get("threads"));
				filteradd=" ";
			} else {
				if ("digest".equals(filter)) {
					forumdisplayadd.append("&amp;filter=digest");
					filteradd = " AND digest>'0'";
				}else if("type".equals(filter)&& typeid >0) {
					forumdisplayadd.append("&amp;filter=type&amp;typeid="+typeid);
					filteradd = " AND typeid="+typeid;
				} else if (filter.matches("^\\d+$")) {
					forumdisplayadd.append("&amp;filter=" + filter);
					filteradd = Integer.valueOf(filter) > 0 ? " AND lastpost>='"+ (timestamp - Integer.valueOf(filter)) + "'": "";
				} else if (specialtype.get(filter) != null) {
					forumdisplayadd.append("&amp;filter=" + filter);
					filteradd = " AND special='" + specialtype.get(filter)+ "'";
				} else {
					filteradd=" ";
					filter = "";
				}
				List<Map<String, String>> count = dataBaseService.executeQuery("SELECT COUNT(*) count FROM jrun_threads WHERE fid=" + fid + filteradd+ " AND displayorder>='0'");
				threadcount = Integer.valueOf(count.get(0).get("count"));
			}
			String orderby=request.getParameter("orderby");
			String ascdesc=request.getParameter("ascdesc");
			if(orderby!=null&&orderfields.contains(orderby)){
				forumdisplayadd.append("&amp;orderby="+orderby);
			}else{
				orderby=orderfields.get(defaultorderfield);
			}
			if(ascdesc!=null&&order.contains(ascdesc)){
				forumdisplayadd.append("&amp;ascdesc="+ascdesc);
			}else{
				ascdesc=order.get(defaultorder);
			}
			Map<String,String> checked=new HashMap<String,String>();
			checked.put(filter, "selected='selected'");
			checked.put(orderby, "selected='selected'");
			checked.put(ascdesc, "selected='selected'");
			request.setAttribute("checked", checked);
			Map threadtypes=dataParse.characterParse(forum.get("threadtypes"), true);
			request.setAttribute("threadtypes", threadtypes.size()>0?threadtypes:null);			
			int globalstick=Common.toDigit(settings.get("globalstick"), 255L, 0L).intValue();
			String thisgid = String.valueOf(type.equals("forum")? fup: forumService.findById(fup).getFup());
			request.setAttribute("thisgid", thisgid);
			int stickycount=0;
			StringBuffer stickytids=new StringBuffer();
			if(globalstick>0) {
				Map<String,String> globalstickMap=(Map<String,String>)request.getAttribute("globalstick");
				Map<String,Map<String,String>> globalsticks=dataParse.characterParse(globalstickMap.get("globalstick"),false);
				if(globalsticks!=null){
					Map<String,String> global=globalsticks.get("global");
					Map<String,String> categories=globalsticks.get(thisgid);
					if(global!=null){
						stickytids.append(global.get("tids"));
						stickycount=Integer.valueOf(global.get("count"));
					}
					if(categories!=null){
						stickytids.append(stickytids.length()==0?categories.get("tids"):","+categories.get("tids"));
						stickycount+=Integer.valueOf(categories.get("count"));
					}
				}
			}
			boolean filterbool = filter!=null &&"|digest|type|activity|poll|trade|reward|debate|video|".contains("|"+filter+"|");
			threadcount += filterbool ? 0 : stickycount;
			Long threadmaxpages =Long.valueOf(settings.get("threadmaxpages"));
			int page = Common.toDigit(request.getParameter("page"),threadmaxpages, 1L).intValue();
			int tpp = member != null && member.getTpp() > 0 ? member.getTpp(): Integer.valueOf(settings.get("topicperpage"));
			Map<String,Integer> multiInfo=Common.getMultiInfo(threadcount, tpp, page);
			page=multiInfo.get("curpage");
			int start_limit=multiInfo.get("start_limit");
			String extra=Common.encode("page="+page+ forumdisplayadd);
			boolean isstaticurl=false;
			String url=null;
			if(viewthread && forumdisplayadd.length()==0){
				isstaticurl=true;
				url="forum-"+fid;
				request.setAttribute("extra",page);
			}else{
				url="forumdisplay.jsp?fid=" + fid + forumdisplayadd;
				request.setAttribute("extra",extra);
			}
			Map<String,Object> multi=Common.multi(threadcount, tpp, page,url, threadmaxpages.intValue(), 10, true, false, null, isstaticurl);
			request.setAttribute("page",page);
			request.setAttribute("url",url);
			request.setAttribute("isstaticurl",isstaticurl);
			request.setAttribute("multi", multi);
			String displayorderadd=!filterbool&&stickycount>0?"t.displayorder IN (0, 1)":"t.displayorder IN (0, 1, 2, 3)";
			String querysticky=null;
			String query=null;
			if((start_limit>0&&start_limit>stickycount)||stickycount==0){
				query = "SELECT t.* FROM jrun_threads t WHERE t.fid='"+fid+"' "+filteradd+" AND "+displayorderadd+" ORDER BY t.displayorder DESC, t."+orderby+" "+ascdesc+" LIMIT "+(filterbool ? start_limit : start_limit - stickycount)+", "+tpp;
			}
			else{
				querysticky="SELECT t.* FROM jrun_threads t WHERE t.tid IN ("+stickytids+") AND t.displayorder IN (2, 3) ORDER BY displayorder DESC, "+orderby+" "+ascdesc+" LIMIT "+start_limit+", "+(stickycount - start_limit < tpp ? stickycount - start_limit:tpp);
				if(tpp-stickycount+start_limit>0){
					query = "SELECT t.* FROM jrun_threads t WHERE t.fid="+fid+" "+filteradd+" AND "+displayorderadd+" ORDER BY displayorder DESC, "+orderby+" "+ascdesc+" LIMIT "+(tpp - stickycount + start_limit);
				}
			}
			Map<String,String> announcement=(Map<String,String>)request.getAttribute("announcement");
			if(announcement!=null&&announcement.size()>0){
				announcement.put("starttime", Common.gmdate(dateformat, Integer.valueOf(announcement.get("starttime"))+timeoffset));
				request.setAttribute("announcement",announcement);
			}
			List<Map<String, String>> threadlists=new ArrayList<Map<String,String>>();
			if(querysticky!=null){
				threadlists = dataBaseService.executeQuery(querysticky);
			}
			if(query!=null){
				threadlists.addAll(dataBaseService.executeQuery(query));
			}
			if (threadlists != null && threadlists.size() > 0) {
				Map types=null;
				byte prefix=0;
				if(threadtypes.size()>0){
					types=(Map)threadtypes.get("types");
					prefix=(Byte)threadtypes.get("prefix");
				}
				int postperpage=Integer.valueOf(settings.get("postperpage"));
				int ppp= Byte.valueOf(forum.get("threadcaches")) > 0 &&jsprun_uid==0?postperpage:(member != null&& member.getPpp() > 0 ? member.getPpp() :postperpage);
				SimpleDateFormat sdf_dateformat=new SimpleDateFormat(dateformat);
				String closedby=null;
				short autoclose=Short.valueOf(forum.get("autoclose"));
				if(autoclose!=0){
					closedby = autoclose > 0 ? "dateline" : "lastpost";
					autoclose=(short)(Math.abs(autoclose)*86400);
				}
				int separatepos = 0;
				for (Map<String, String> thread : threadlists) {
					int thread_typeid=Integer.valueOf(thread.get("typeid"));
					if(thread_typeid>0&&prefix==1&&types.get(thread_typeid)!=null){
						thread.put("type", "<em>[<a href=\"forumdisplay.jsp?fid="+fid+"&amp;filter=type&amp;typeid="+thread_typeid+"\">"+types.get(thread_typeid)+"</a>]</em>");
					}
					int replies = Integer.valueOf(thread.get("replies"));
					int special = Integer.valueOf(thread.get("special"));
					int topicpages = special > 0 ? replies : replies + 1;
					if (topicpages > ppp) {
						StringBuffer pagelinks =new StringBuffer();
						topicpages = (int)(Math.ceil((double)topicpages/(double)ppp));
						for (int i = 1; i <= 6 && i <= topicpages; i++) {
							if(viewthread){
								pagelinks.append("<a href=\"thread-"+ thread.get("tid")+"-"+page+"-" + i + ".html\">" + i + "</a> ");
							}else{
								pagelinks.append("<a href=\"viewthread.jsp?tid="+ thread.get("tid")+"&amp;extra="+extra+"&amp;page=" + i + "\">" + i + "</a> ");
							}
						}
						if (topicpages > 6) {
							if(viewthread){
								pagelinks.append(" .. <a href=\"thread-"+ thread.get("tid")+"-"+page+"-" + topicpages + ".html\">"+ topicpages + "</a> ");
							}else{
								pagelinks.append(" .. <a href=\"viewthread.jsp?tid="+ thread.get("tid")+"&amp;extra="+extra+"&amp;page=" + topicpages + "\">"+ topicpages + "</a> ");
							}
						}
						thread.put("multipage", " &nbsp; " + pagelinks);
					}
					int highlight=Integer.valueOf(thread.get("highlight"));
					if(highlight>0)
					{
						StringBuffer style=new StringBuffer();
						style.append(" style=\"");
						style.append(highlight>=40?"font-weight: bold;":"");
						highlight=highlight%40;
						style.append(highlight>=20?"font-style: italic;":"");
						highlight=highlight%20;
						style.append(highlight>=10?"text-decoration: underline;":"");
						highlight=highlight%10;
						style.append("color: "+colorarray[highlight]);
						style.append("\"");
						thread.put("highlight",style.toString());
					}
					else{
						thread.put("highlight", "");
					}
					int closed = Integer.valueOf(thread.get("closed"));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -