📄 cache.java
字号:
{
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 + -