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

📄 forumdisplayaction.java

📁 论坛软件系统亦称电子公告板(BBS)系统
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
					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+"&amp;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 + -