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

📄 archiver.java

📁 论坛软件系统亦称电子公告板(BBS)系统
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
						threadList.add(thread);
					}
				}
				forum_inc.setFullversion(fullversion);
				forum_inc.setNavsub(navsub);
				forum_inc.setQm(qm);
				forum_inc.setStart(start);
				Multi_inc multi_inc = new Multi_inc(page,10,Integer.valueOf(forumMap.get("threads")),tpp,qm+"fid-"+fid);
				forum_inc.setMulti_inc(multi_inc);
			}else{
				forum_inc.setRefuse(true);
			}
		}else{
			forum_inc.setRefuse(true);
		}
		
		return forum_inc;
	}
	
	private Thread_inc executeThread_inc(int tid,int page,String qm,String navtitle,String meta_contentadd,String boardurl,Map<String,Map<String,String>> forumsMap_catch,Map<String,String> style_catch,Map<String,String> fullversion,Map<String,String> settingMap,Map<String,Map<String,String>> advList,Map<String,String> advitems,float timeoffset){
		Thread_inc thread_inc = new Thread_inc();
		String sql = "SELECT * FROM "+tablepre+"threads t " +
				"LEFT JOIN "+tablepre+"forums f ON f.fid=t.fid " +
				"LEFT JOIN "+tablepre+"forumfields ff ON ff.fid=f.fid " +
				"WHERE t.tid='"+tid+"' AND t.readperm='0' AND t.price<='0' AND t.displayorder>='0' " +
				"AND f.status>0 AND ff.password=''";
		List<Map<String,String>> t_f_ff_MapList = dataBaseService.executeQuery(sql);
		page = Math.max(1, page);
		if(t_f_ff_MapList!=null&&t_f_ff_MapList.size()>0){
			Map<String,String> t_f_ff_Map = t_f_ff_MapList.get(0);
			String viewperm = t_f_ff_Map.get("viewperm");
			String formulaperm = t_f_ff_Map.get("formulaperm");
			Forum currentForum = new Forum();
			currentForum.setFid(t_f_ff_Map.get("fid"));
			currentForum.setName(t_f_ff_Map.get("name"));
			
			String threadSubject = t_f_ff_Map.get("subject");
			if((viewperm==null||viewperm.equals("") || (forumperm(viewperm))) || !forumformulaperm(formulaperm)){
				
				navtitle = threadSubject+"("+"页"+" "+page+") ";
				boolean navsub = t_f_ff_Map.get("type").equals("sub");
				if(navsub){
					String superForumId = t_f_ff_Map.get("fup");
					String superForumName = Common.strip_tags(forumsMap_catch.get(superForumId).get("name"));
					Forum superForum = new Forum();
					superForum.setFid(superForumId);
					superForum.setName(superForumName);
					thread_inc.setSuperForum(superForum);
					
					navtitle += " - "+superForumName;
				}
				navtitle += " - "+Common.strip_tags(t_f_ff_Map.get("name"))+" - ";
				fullversion.put("title", threadSubject);
				fullversion.put("link", "viewthread.jsp?tid="+tid);
				int ppp = Integer.parseInt(settingMap.get("postperpage")) * 2;
				int start = (page - 1) * ppp;
				sql = "SELECT p.pid, p.author, p.dateline, p.subject, p.message, p.anonymous, p.status, m.groupid " +
						"FROM "+tablepre+"posts p " +
						"LEFT JOIN "+tablepre+"members m ON p.authorid=m.uid " +
						"WHERE p.tid='"+tid+"' AND p.invisible='0' " +
						"ORDER BY dateline LIMIT "+start+", "+ppp;
				List<Map<String,String>> post_memberMapList = dataBaseService.executeQuery(sql);
				if(post_memberMapList!=null&&post_memberMapList.size()>0){
					
					Map<String,String> post_member_thread = post_memberMapList.get(0);
					String tempGroupid = post_member_thread.get("groupid");
					if(tempGroupid==null||tempGroupid.equals("4")||tempGroupid.equals("5")||tempGroupid.equals("6")){
						post_member_thread.put("message", "*** 作者被禁止或删除 内容自动屏蔽 ***");
					}else if(post_member_thread.get("status").equals("1")){
						post_member_thread.put("message", "*** 该帖被屏蔽 ***");
					}
					meta_contentadd = Common.cutstr(Common.strip_tags(post_member_thread.get("message").replace("\r", "").replace("\n", "").replace("\t", "")), 200, null);
					String dateFormat = settingMap.get("dateformat");
					String timeFormat = settingMap.get("timeformat");
					SimpleDateFormat format = new SimpleDateFormat(dateFormat+" "+timeFormat);
					
					List<Posts> postsList = thread_inc.getPostsList();
					for(Map<String,String> post_memberMap : post_memberMapList){
						Posts posts = thread_inc.getPosts();
						tempGroupid = post_memberMap.get("groupid");
						if(tempGroupid==null||tempGroupid.equals("4")||tempGroupid.equals("5")||tempGroupid.equals("6")){
							post_memberMap.put("message", "*** 作者被禁止或删除 内容自动屏蔽 ***");
						}else if(post_memberMap.get("status").equals("1")){
							post_memberMap.put("message", "*** 该帖被屏蔽 ***");
						}
						String dateline = Common.gmdate(format, Integer.parseInt(post_memberMap.get("dateline")), timeoffset);
						String postSubject = post_memberMap.get("subject");
						
						String message = post_memberMap.get("message");
						String tempMessage = "";
						if(postSubject!=null&&!postSubject.equals("")){
							tempMessage = "<h2>"+postSubject+"</h2>";
						}
						message = message.replace("&", "&amp;").replace("\"", "&quot;").replace("<", "&lt;").replace(">", "&gt;").replace("\t", "&nbsp; &nbsp; &nbsp; &nbsp; ").replace("   ", "&nbsp; &nbsp;").replace("  ", "&nbsp;&nbsp;");
						message = message.replaceAll("^&amp;(#\\d{3,5};)$", "&\\1").replaceAll("\\[hide=?\\d*\\](.+?)\\[\\/hide\\]", "<b>**** Hidden Message *****</b>");
						message = tempMessage + message.replace("\n", "<br />");
						String jammer = t_f_ff_Map.get("jammer");
						if(jammer!=null&&!jammer.equals("")&&!jammer.equals("0")){
							message = message.replaceAll("^\\<br \\/\\>$", jammer(style_catch.get("ALTBG2")));
						}
						String anonymous = post_memberMap.get("anonymous");
						String author = post_memberMap.get("author");
						if(anonymous==null||Integer.parseInt(anonymous)>0){
							author = "匿名";
						}
						posts.setAuthor(author);
						posts.setDateline(dateline);
						posts.setMessage(message);
						postsList.add(posts);
					}
				}
				thread_inc.setBbname(settingMap.get("bbname"));
				thread_inc.setCurrentForum(currentForum);
				thread_inc.setNavsub(navsub);
				thread_inc.setQm(qm);
				thread_inc.setThreadSubject(threadSubject);
				thread_inc.setFullversion(fullversion);
				setHeaderAndFooter(thread_inc, advList, advitems, settingMap, fullversion, boardurl, meta_contentadd, navtitle);
				Multi_inc multi_inc = new Multi_inc(page,10,Integer.valueOf(t_f_ff_Map.get("replies")),ppp,qm+"tid-"+tid);
				thread_inc.setMulti_inc(multi_inc);
			}else{
				thread_inc.setRefuse(false);
			}
		}else{
			thread_inc.setRefuse(false);
		}
		return thread_inc;
	}
	
	private void setHeaderAndFooter(WithHeaderAndFoot withHeaderAndFoot,Map<String,Map<String,String>> advList,Map<String,String> advitems,Map<String,String> settingMap,Map<String,String> fullversion,String boardurl,String meta_contentadd,String navtitle){
		Header_inc header_inc = new Header_inc();
		header_inc.setBoardurl(boardurl);
		header_inc.setMeta_contentadd(meta_contentadd);
		header_inc.setNavtitle(navtitle);
		header_inc.setSettingMap(settingMap);
		
		Foot_inc foot_inc = new Foot_inc();
		foot_inc.setFullversion(fullversion);
		foot_inc.setVersion(settingMap.get("version"));
		
		String headerbanner = "";
		String footerbanner1 = "";
		String footerbanner2 = "";
		String footerbanner3 = "";
		
		if(advList != null && advitems!=null){
			Map<String,String> temp = advList.get("headerbanner");
			if(temp!=null){
				headerbanner = advitems.get(temp.get("0"));
				if(headerbanner==null){
					headerbanner = advitems.get(temp.get("all"));
				}
			}
			header_inc.setHeaderbanner(headerbanner);
			
			temp = advList.get("footerbanner1");
			if(temp!=null){
				footerbanner1 = advitems.get(temp.get("0"));
				if(footerbanner1==null){
					footerbanner1 = advitems.get(temp.get("all"));
				}
			}
			foot_inc.setFooterbanner1(footerbanner1 == null ? "" : footerbanner1);
			
			temp = advList.get("footerbanner2");
			if(temp!=null){
				footerbanner2 = advitems.get(temp.get("0"));
				if(footerbanner2==null){
					footerbanner2 = advitems.get(temp.get("all"));
				}
			}
			foot_inc.setFooterbanner2(footerbanner2 == null ? "" : footerbanner2);
			
			temp = advList.get("footerbanner3");
			if(temp!=null){
				footerbanner3 = advitems.get(temp.get("0"));
				if(footerbanner3==null){
					footerbanner3 = advitems.get(temp.get("all"));
				}
			}
			foot_inc.setFooterbanner3(footerbanner3 == null ? "" : footerbanner3);
		}
		
		withHeaderAndFoot.setHeader(header_inc);
		withHeaderAndFoot.setFooter(foot_inc);
	}
	private boolean forumperm(String viewperm){
		return  viewperm.equals("")  || viewperm.indexOf("\t7\t") >=0;
	}
	private boolean forumformulaperm(String formula){
		if(formula==null||formula.equals("")){
			return true;
		}
		Map<Integer,String> formulaMap = dataParse.characterParse(formula, false);
		formula = formulaMap.get(1);
		if(formula==null||formula.equals("")||formula.equals("0")){
			return true;
		}
		formula = formula.replaceAll("\\$_DSESSION\\['((extcredits[1-8])|(posts)|(oltime)|(digestposts)|(pageviews))'\\]", "0").trim();
		
		int equalMark = formula.indexOf("=");
		int gtMark = formula.indexOf(">");
		int ltMark = formula.indexOf("<");
		if((equalMark<0&&gtMark<0&&ltMark<0)||(equalMark>=0)&&(gtMark>=0)&&(ltMark>=0)){
			return false;
		}else{
			String[] expiressions = null;
			String sign = "";
			if(gtMark>0){ 
				equalMark = formula.indexOf("=",gtMark+1);
				if(equalMark>0){ 
					expiressions = formula.split(">\\s*=");
					sign=">=";
				}else{
					expiressions = formula.split(">");
					sign=">";
				}
			}else if(ltMark>0){ 
				equalMark = formula.indexOf("=",ltMark+1);
				if(equalMark>0){ 
					expiressions = formula.split("<\\s*=");
					sign="<=";
				}else{
					expiressions = formula.split("<");
					sign="<";
				}
			}else{ 
				int secEqualMark = formula.indexOf("=",equalMark+1);
				if(secEqualMark>0){ 
					expiressions = formula.split("=\\s*=");
					sign="==";
				}else {
					return true;
				}
			}
			double r1 = Double.parseDouble(excute(new StringBuffer(expiressions[0].replace(" ", ""))));
			double r2 = Double.parseDouble(excute(new StringBuffer(expiressions[1].replace(" ", ""))));
			if(sign.equals(">=")){
				return r1 >= r2;
			}else if(sign.equals(">")){
				return r1 > r2;
			}else if(sign.equals("<=")){
				return r1 <= r2;
			}else if(sign.equals("<")){
				return r1 < r2;
			}else{
				return r1 == r2;
			}
		}
	}
	
	private String jammer(String ALTBG2){
		StringBuffer randomStr = new StringBuffer();
		Random random = new Random();
		
		for(int i = 0;i<random.nextInt(11)+5;i++){
			randomStr.append((char)random.nextInt(60));
			randomStr.append((char)(random.nextInt(64)+63));
		}
		if(random.nextBoolean()){
			return "<font style=\"font-size:0px;color:"+ALTBG2+"\">"+randomStr.toString()+"</font><br />";

⌨️ 快捷键说明

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