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

📄 cache.java

📁 论坛软件系统亦称电子公告板(BBS)系统
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
						{
							String[] choices=rules.get("choices").split("(\r\n|\n|\r)");
							StringBuffer temp=new StringBuffer();
							for (String choice:choices) {
								String[] items=choice.split("=");
								if(items.length==2){
									temp.append(","+items[1].trim());
								}
							}
							data.put("choices",temp.length()>0?temp.substring(1).replaceAll(",", "\\\\n"):"");
						}
						else if("text".equals(type)||"textarea".equals(type))
						{
							data.put("maxlength", rules.get("maxlength"));
						}
						else if("image".equals(type))
						{
							data.put("maxwidth",  rules.get("maxwidth"));
							data.put("maxheight",  rules.get("maxheight"));
						}
						else if("number".equals(type))
						{
							data.put("maxnum",  rules.get("maxnum"));
							data.put("minnum",  rules.get("minnum"));
						}
					}
					data.remove("rules");
					typelist.put(Integer.valueOf(data.get("optionid")),data);
					typelists.put(typeid, typelist);
				}
			}
			dataList=dataBaseDao.executeQuery("SELECT typeid, template FROM "+tablepre+"threadtypes WHERE special='1'");
			if(dataList!=null&&dataList.size()>0)
			{
				for (Map<String, String> data : dataList) {
					templatedata.put(Integer.valueOf(data.get("typeid")), data.get("template"));
				}
			}
			dataList=null;
			Set<Integer> typeids=typelists.keySet();
			for (Integer typeid : typeids) {
				datas.put("dtype",dataParse.combinationChar(typelists.get(typeid)));
				datas.put("dtypeTemplate",templatedata.get(typeid));
				this.writeToCacheFile(String.valueOf(typeid),arrayeval("threadtype", datas), "threadtype_", false);
			}
			datas=null;
			typeids=null;
			templatedata=null;
			typelists=null;
		}
	}
	@SuppressWarnings("unchecked")
	private void getDataList(String sql, String table,String cols,String conditions, String cachename, String cname, String prefix,boolean append) throws Exception {
		Map<String, String> datas = new HashMap<String, String>();
		List<Map<String, String>> dataList = new ArrayList<Map<String, String>>();
		dataList = dataBaseDao.executeQuery(sql!=null?sql:"SELECT "+(cols==null?"*":cols)+" FROM " + tablepre + table +(conditions!=null?" "+ conditions:""));
		if ("settings".equals(cname)) {
			Map<String,String> map=new HashMap<String, String>();
			for (Map<String, String> data : dataList) {
				datas.put(data.get("variable"), data.get("value"));
			}
			Map<Integer,Map> extcredits = dataParse.characterParse(datas.get("extcredits"), false);
			if(extcredits!=null&&extcredits.size()>0){
				int creditstrans=Integer.valueOf(datas.get("creditstrans"));
				Map<Integer,Map> exchcredits=new HashMap<Integer,Map>();
				Set<Integer> extcreditids=extcredits.keySet();
				boolean allowexchangein=false;
				boolean allowexchangeout=false;
				for(Integer extcreditid:extcreditids){
					Map extcredit=extcredits.get(extcreditid);
					if("1".equals(extcredit.get("available"))){
						extcredit.remove("available");
						exchcredits.put(extcreditid, extcredit);
						Object obj=extcredit.get("ratio");
						if(obj==null){
							obj=0;
						}
						double ratio=Double.valueOf(obj.toString());
						if(ratio>0){
							if("1".equals(extcredit.get("allowexchangein"))){
								allowexchangein=true;
							}
							if("1".equals(extcredit.get("allowexchangeout"))){
								allowexchangeout=true;
							}
						}
					}
				}
				datas.put("exchangestatus", (allowexchangein&&allowexchangeout?"1":"0"));
				datas.put("transferstatus", (exchcredits.get(creditstrans)!=null?"1":"0"));
				datas.put("extcredits",dataParse.combinationChar(exchcredits));
			}
			extcredits=null;
			int jsmenustatus=Integer.valueOf(datas.get("jsmenustatus"));
			datas.put("jsmenu_1",String.valueOf(jsmenustatus&1));
			datas.put("jsmenu_2",String.valueOf(jsmenustatus&2));
			datas.put("jsmenu_3",String.valueOf(jsmenustatus&4));
			datas.put("jsmenu_4",String.valueOf(jsmenustatus&8));
			datas.put("timeformat", datas.get("timeformat").equals("1")?"hh:mm a":"HH:mm");
			datas.put("onlinehold", String.valueOf(Integer.valueOf(datas.get("onlinehold"))*60));
			datas.put("version", JSPRUN_KERNEL_VERSION);
			map=dataBaseDao.executeQuery("SELECT COUNT(*) count FROM "+tablepre+"members").get(0);
			datas.put("totalmembers", map!=null?map.get("count"):"0");
			map=dataBaseDao.executeQuery("SELECT COUNT(*) count FROM "+tablepre+"forums WHERE status>0 AND threadcaches>0").get(0);
			datas.put("cachethreadon", map!=null&&Integer.valueOf(map.get("count"))>0?"1":"0");
			List<Map<String,String>> lastMember=dataBaseDao.executeQuery("SELECT username FROM "+tablepre+"members ORDER BY uid DESC LIMIT 1");
			map=lastMember!=null&&lastMember.size()>0?lastMember.get(0):null;
			lastMember=null;
			datas.put("lastmember", map!=null?map.get("username").replace("\\", "\\\\"):"");
			List<Map<String,String>> crons=dataBaseDao.executeQuery("SELECT nextrun FROM "+tablepre+"crons WHERE available>'0' AND nextrun>'0' ORDER BY nextrun LIMIT 1");
			datas.put("cronnextrun", crons!=null&&crons.size()>0?crons.get(0).get("nextrun"):"0");
			Map<String,String> google=dataParse.characterParse(datas.get("google"), false);
			datas.put("google_status",google.get("status"));
			datas.put("google_searchbox",google.get("searchbox"));
			google=null;
			datas.remove("google");
			Map<String,String> baidu=dataParse.characterParse(datas.get("baidu"), false);
			datas.put("baidu_status",baidu.get("status"));
			datas.put("baidu_searchbox",baidu.get("searchbox"));
			baidu=null;
			datas.remove("baidu");
			datas.put("stylejumpstatus", datas.get("stylejump"));
			List<Map<String,String>> styleList=dataBaseDao.executeQuery("SELECT styleid, name FROM "+tablepre+"styles WHERE available='1'");
			if(styleList!=null&&styleList.size()>0)
			{
				Map<Integer,String> styles=new HashMap<Integer, String>();
				for (Map<String, String> style : styleList) {
					styles.put(Integer.valueOf(style.get("styleid")), style.get("name"));
				}
				datas.put("stylejump", styles!=null?dataParse.combinationChar(styles):"");
			}
			styleList=null;
			Map globaladvs = advertisement("all");
			datas.put("globaladvs", globaladvs.get("all")!=null?dataParse.combinationChar((Map) globaladvs.get("all")):"");
			datas.put("redirectadvs", globaladvs.get("redirect")!=null?dataParse.combinationChar((Map)globaladvs.get("redirect")):"");
			globaladvs=null;
			List<Map<String,String>> plugins=dataBaseDao.executeQuery("SELECT available, name, identifier, directory, datatables, modules FROM "+tablepre+"plugins where available='1'");
			if(plugins!=null&&plugins.size()>0){
				Map<String,Map<String,Map<String,String>>> pluginlinks = new HashMap<String,Map<String,Map<String,String>>>();
				Map<Integer,Map<String,String>> links = new TreeMap<Integer,Map<String,String>>();
				Map<Integer,Map<String,String>> includes = new TreeMap<Integer,Map<String,String>>();
				Map<Integer,Map<String,String>> jsmenus = new TreeMap<Integer,Map<String,String>>();
				for (Map<String, String> plugin : plugins) {
					Map<Integer,Map>  modules=dataParse.characterParse(plugin.get("modules"), false);
					if(modules!=null&&modules.size()>0){
						Set<Integer> keys =modules.keySet();
						for (Integer key : keys) {
							Map module=modules.get(key);
							int type= Common.toDigit((String)module.get("type"));
							String identifier=plugin.get("identifier");
							if(type==1){
								Map<String,String> link=new HashMap<String, String>();
								link.put("adminid", String.valueOf(module.get("adminid")));
								link.put("url","<a href=\""+module.get("url")+"\">"+module.get("menu")+"</a>");
								links.put(links.size(), link);
							}else if(type==2){
								String name=String.valueOf(module.get("name"));
								String adminid=String.valueOf(module.get("adminid"));
								Map<String,String> link=new HashMap<String, String>();
								link.put("adminid", adminid);
								link.put("url","<a href=\"plugin.jsp?identifier="+identifier+"&module="+name+"\">"+name+"</a>");
								links.put(links.size(), link);
								Map<String,Map<String,String>> pluginlink=pluginlinks.get(identifier);
								if(pluginlink==null){
									pluginlink=new HashMap<String, Map<String,String>>();
									pluginlinks.put(identifier, pluginlink);
								}
								Map<String,String> templink=new HashMap<String, String>();
								templink.put("adminid", adminid);
								templink.put("directory", String.valueOf(plugin.get("directory")));
								pluginlink.put(name, templink);
							}else if(type==4){
								Map<String,String> include=new HashMap<String, String>();
								include.put("adminid", String.valueOf(module.get("adminid")));
								include.put("script",plugin.get("directory")+module.get("name"));
								includes.put(includes.size(), include);
							}else if(type==5){
								Map<String,String> jsmenu=new HashMap<String, String>();
								jsmenu.put("adminid", String.valueOf(module.get("adminid")));
								jsmenu.put("url","<a href=\""+module.get("url")+"\">"+module.get("menu")+"</a>");
								jsmenus.put(jsmenus.size(), jsmenu);
							}else if(type==6){
								String name=String.valueOf(module.get("name"));
								String adminid=String.valueOf(module.get("adminid"));
								Map<String,String> jsmenu=new HashMap<String, String>();
								jsmenu.put("adminid", String.valueOf(module.get("adminid")));
								jsmenu.put("url","<a href=\"plugin.jsp?identifier="+identifier+"&module="+name+"\">"+name+"</a>");
								jsmenus.put(jsmenus.size(), jsmenu);
								Map<String,Map<String,String>> pluginlink=pluginlinks.get(identifier);
								if(pluginlink==null){
									pluginlink=new HashMap<String, Map<String,String>>();
									pluginlinks.put(identifier, pluginlink);
								}
								Map<String,String> templink=new HashMap<String, String>();
								templink.put("adminid", adminid);
								templink.put("directory", String.valueOf(plugin.get("directory")));
								pluginlink.put(name, templink);
							}
						}
					}
				}
				Map<String,Map> pluginstemp=new HashMap<String,Map>();
				if(links.size()>0){
					pluginstemp.put("links", links);
				}
				if(includes.size()>0){
					pluginstemp.put("includes", includes);
				}
				if(jsmenus.size()>0){
					pluginstemp.put("jsmenus", jsmenus);
				}
				datas.put("plugins",  pluginstemp.size()>0?dataParse.combinationChar(pluginstemp):"");
				datas.put("pluginlinks", pluginlinks.size()>0?dataParse.combinationChar(pluginlinks):"");
			}
			List<Map<String,String>> pluginhooks=dataBaseDao.executeQuery("SELECT ph.title, ph.code, p.identifier FROM jrun_plugins p LEFT JOIN jrun_pluginhooks ph ON ph.pluginid=p.pluginid AND ph.available='1' WHERE p.available='1' ORDER BY p.identifier");
			if(pluginhooks!=null&&pluginhooks.size()>0){
				Map<String,String> hooks = new HashMap<String,String>();
				for (Map<String, String> pluginhook : pluginhooks) {
					String title=pluginhook.get("title");
					String code=pluginhook.get("code");
					if(title!=null&&code!=null){
						hooks.put(pluginhook.get("identifier")+"_"+pluginhook.get("title"), pluginhook.get("code"));
					}
				}
				datas.put("hooks", hooks.size()>0?dataParse.combinationChar(hooks):"");
			}
			List<Map<String,String>> forumList=dataBaseDao.executeQuery("SELECT f.fid, f.type, f.name, f.fup, ff.viewperm FROM jrun_forums f LEFT JOIN jrun_forumfields ff ON ff.fid=f.fid LEFT JOIN jrun_access a ON a.fid=f.fid AND a.allowview='1' WHERE f.status>0 ORDER BY f.type, f.displayorder");
			Common.setForums(forumList);
			String forums=dataParse.combinationChar(forumList);
			datas.put("forums", forums);
			writeToCacheFile(cachename, arrayeval(cname, datas), prefix, append);
		} else if ("admingroups".equals(cname)) {
			for (Map<String, String> data : dataList) {
				writeToCacheFile(cachename + "_" + data.get("admingid"),arrayeval(cname, data), "", append);
			}
		} else if ("usergroups".equals(cname)) {
			for (Map<String, String> data : dataList) {
				Set<String> keys = data.keySet();
				for (String key : keys) {
					if(data.get(key)==null){
						data.put(key, "0");
					}
				}
				writeToCacheFile(cachename + "_" + data.get("groupid"),arrayeval(cname, data), "", append);
			}
		} else if ("styles".equals(cname)) {
			List<Map<String, String>> styles = dataBaseDao.executeQuery("SELECT s.styleid,s.name,s.available,s.templateid, t.directory as tpldir FROM "+ tablepre+ "styles s LEFT JOIN "+ tablepre+ "templates t ON s.templateid=t.templateid WHERE s.available=1 OR s.styleid='0'");
			List<Map<String,String>> maxavatarpixel = dataBaseDao.executeQuery("select value from jrun_settings where variable='maxavatarpixel'");
			List<Map<String,String>>customauthorinfo = dataBaseDao.executeQuery("select value from jrun_settings where variable='customauthorinfo'");
			int maxavatarpic = maxavatarpixel.size()>0?Integer.valueOf(maxavatarpixel.get(0).get("value")):0;
			Map<String,String> maxsigrows = dataBaseDao.executeQuery("select value from jrun_settings where variable='maxsigrows'").get(0);
			Map custommap = dataParse.characterParse(customauthorinfo.get(0).get("value"), false);
			customauthorinfo=null;
			int left = 0;
			if (custommap != null && custommap.get(0) != null) {
				Map customreMap = (Map) custommap.get(0);
				Iterator its = customreMap.keySet().iterator();
				while(its.hasNext()){
					Object key = its.next();
					Map dismap = (Map)customreMap.get(key);
					if(dismap.get("left")!=null){
						left++;
					}
				}
			}
			for (Map<String, String> style : styles) {
				Set<String> keys = style.keySet();
				for (String key : keys) {
					datas.put(key.toUpperCase(), style.get(key));
				}
				String styleid = style.get("styleid");
				for (Map<String, String> data : dataList) {
					if (styleid.equals(data.get("styleid"))) {
						datas.put(data.get("variable").toUpperCase(), data.get("substitute"));
					}
				}
				datas.put("BGCODE", setcssbackground(datas, "BGCOLOR"));
				datas.put("CATBGCODE", setcssbackground(datas, "CATCOLOR"));
				datas.put("HEADERBGCODE", setcssbackground(datas, "HEADERCOLOR"));
				datas.put("HEADERMENUBGCODE", setcssbackground(datas,"HEADERMENU"));
				datas.put("PORTALBOXBGCODE", setcssbackground(datas,"PORTALBOXBGCODE"));
				String boardimg = datas.get("BOARDIMG");
				if (boardimg.indexOf(",") > -1) {
					String[] flash = boardimg.split(",");
					flash[0] = flash[0].trim();
					if(!Common.matches(flash[0], "^http:\\/\\/"))
					{
						flash[0] = datas.get("IMGDIR") + "/" + flash[0];
					}
					datas.put("BOARDLOGO","<embed src=\""+ flash[0]+ "\" width=\""+ flash[1].trim()+ "\" height=\""+ flash[2].trim()+ "\" type=\"application/x-shockwave-flash\"></embed>");
				} else {
					if(!Common.matches(boardimg, "^http:\\/\\/"))
					{
						boardimg=datas.get("IMGDIR") + "/" + boardimg;
					}
					datas.put("BOARDIMG",boardimg);
					datas.put("BOARDLOGO", "<img src=\"" + boardimg	+ "\" alt=\"JspRun\" border=\"0\" />");
				}
				datas.put("BOLD", datas.get("NOBOLD") != null&& !datas.get("NOBOLD").equals("") ? "normal" : "bold");
				datas.put("POSTMINHEIGHT", (maxavatarpic>300?300:maxavatarpic+left*20)+"");
				datas.put("MAXSIGROWS", maxsigrows.get("value"));
				writeToCssCache(datas);
				writeToCacheFile(cachename + "_" + styleid, arrayeval(cname, datas), "",append);
				datas.clear();
			}
			maxavatarpixel=null;
			maxsigrows=null;
		} else if ("icons".equals(cname)){
			for (Map<String, String> data : dataList) {
				datas.put(data.get("id"), data.get("url"));
			}
			writeToCacheFile(cachename, arrayeval(cname, datas), prefix, append);
		} else if ("medals".equals(cname)){
			Map<Integer,Map<String, String>> map = new HashMap<Integer,Map<String, String>>();
			int size= dataList.size();
			for (Integer i = 0; i < size; i++) {
				map.put(i, dataList.get(i));
			}
			datas.put(cname, dataParse.combinationChar(map.size() > 0 ? map	: null));
			writeToCacheFile(cachename, arrayeval(cname, datas), prefix, append);
		} else if ("censor".equals(cname)){
			StringBuffer banned=new StringBuffer();
			StringBuffer mod=new StringBuffer();
			Map<String,Map<String, String>> filters = new HashMap<String,Map<String, String>>();
			Map<String, String> finds = new HashMap<String, String>();
			Map<String, String> replaces = new HashMap<String, String>();
			for (Map<String, String> data : dataList) {
				String id=data.get("id");
				String find=data.get("find");
				String replacement=data.get("replacement");
				find=find.replaceAll("\\{(\\d+)\\}", ".{0,\\1}");
				if("{BANNED}".equals(replacement)){
					banned.append(find);
				}else if("{MOD}".equals(replacement)){
					mod.append(find);
				}else{

⌨️ 快捷键说明

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