📄 wapaction.java
字号:
int offset = offsetString == null ? 0 : Integer.parseInt(offsetString);
int start = startString == null ? 0 : Integer.parseInt(startString);
if(tid == null){
wapService.forwardToMessage(request, response, settingMap, "非法请求", null, settingMap.get("bbname"), currentMember, "thread", formhashInSession, session.getId());
return null;
}
List<Map<String,String>> threadMapList = dataBaseService.executeQuery("SELECT * FROM "+tablePre+"threads WHERE tid='"+tid+"' AND displayorder>='0'");
if(threadMapList==null||threadMapList.size()==0){
wapService.forwardToMessage(request, response, settingMap, "指定主题不存在", null, settingMap.get("bbname"), currentMember, "thread", formhashInSession, session.getId());
return null;
}
Map<String,String> thread = threadMapList.get(0);
int readperm = Integer.parseInt(thread.get("readperm"));
short fid = Short.parseShort(thread.get("fid"));
int jsprun_uid = (Integer)session.getAttribute("jsprun_uid");
short groupId = (Short)session.getAttribute("jsprun_groupid");
List<Map<String, String>> forumslist = dataBaseService.executeQuery("SELECT ff.modrecommend, ff.viewperm, a.allowview, ff.postperm, ff.typemodels,ff.threadtypes,ff.replyperm,ff.getattachperm,ff.password FROM jrun_forumfields ff LEFT JOIN jrun_access a ON a.uid='"+ jsprun_uid+ "' AND a.fid=ff.fid WHERE ff.fid in (select fid from jrun_forums where status>0 and fid = "+thread.get("fid")+")");
Map<String, String> forumMap = forumslist.get(0);
forumslist = null;
String extgroupids=currentMember!=null?currentMember.getExtgroupids():null;
if (forumMap.get("alloview") == null) {
if (forumMap.get("viewperm").equals("") && (groupCache==null || groupCache.get("readaccess").equals("0"))) {
wapService.forwardToMessage(request, response, settingMap, "无权查看本主题", null, settingMap.get("bbname"), currentMember, "thread", formhashInSession, session.getId());
return null;
} else if (!forumMap.get("viewperm").equals("")&& !Common.forumperm(forumMap.get("viewperm"), groupId,extgroupids)) {
wapService.forwardToMessage(request, response, settingMap, "无权查看本主题", null, settingMap.get("bbname"), currentMember, "thread", formhashInSession, session.getId());
return null;
}
}
if(Common.toDigit(thread.get("digest"))>0 && (groupCache==null || groupCache.get("allowviewdigest").equals("0")) && !thread.get("authorid").equals(jsprun_uid+"")){
wapService.forwardToMessage(request, response, settingMap, "无权查看本主题", null, settingMap.get("bbname"), currentMember, "thread", formhashInSession, session.getId());
return null;
}
if(Common.toDigit(thread.get("price"))>0 && thread.get("special").equals("0")){
String maxchargespan = settingMap.get("maxchargespan");
int nowtime=(Integer)request.getAttribute("timestamp");
if(!maxchargespan.equals("0") && nowtime-Common.toDigit(thread.get("dateline"))>=Common.toDigit(maxchargespan)*3600){
dataBaseService.runQuery("update jrun_threads set price=0 where tid="+tid,true);
thread.put("price","0");
}else{
if(Common.ismoderator(fid, currentMember) && !thread.get("authorid").equals(jsprun_uid+"")){
List<Map<String, String>> paylog = dataBaseService.executeQuery("SELECT tid FROM jrun_paymentlog WHERE tid="+tid+" AND uid="+jsprun_uid);
if(paylog==null || paylog.size()<=0){
wapService.forwardToMessage(request, response, settingMap, "无权查看本主题", null, settingMap.get("bbname"), currentMember, "thread", formhashInSession, session.getId());
return null;
}
}
}
}
String dow = request.getParameter("do");
dow = dow!=null&&!dow.equals("")?dow:"";
request.setAttribute("valueObject", wapService.getThreadVO(request, response, currentMember, thread, settingMap, formhashInSession, session.getId(), dow, pageString, offset,pid,start,groupCache,timeoffset));
return mapping.findForward("thread");
}
public ActionForward goTo(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response){
HttpSession session = request.getSession();
Map<String,String> settingMap = (Map<String,String>)request.getAttribute("settings");
Members currentMember = (Members)session.getAttribute("user");
String formhashInSession = (String)session.getAttribute("formhash");
if(!wapService.validateWap(request, response, settingMap, currentMember, formhashInSession,session.getId())){
return null;
}
String dow = request.getParameter("do");
String fid = request.getParameter("fid");
String tid = request.getParameter("tid");
request.setAttribute("jsprun_action", "194");
if(!(dow!=null && (dow.equals("last")||dow.equals("next")))){
dow = "";
}
if(dow.equals("last")){
if(fid!=null && tid != null){
List<Map<String,String>> threadMapList = dataBaseService.executeQuery("SELECT lastpost FROM "+tablePre+"threads WHERE tid='"+tid+"' AND displayorder>='0'");
if(threadMapList!=null && threadMapList.size()>0){
Map<String,String> this_lastpostMap = threadMapList.get(0);
String this_lastpost = this_lastpostMap.get("lastpost");
List<Map<String,String>> threadMapList2 = dataBaseService.executeQuery("SELECT tid FROM "+tablePre+"threads WHERE fid='"+fid+"' AND displayorder>='0' AND lastpost>'"+this_lastpost+"' ORDER BY lastpost ASC LIMIT 1");
if(threadMapList2!=null && threadMapList2.size()>0){
Map<String,String> threadMap2 = threadMapList2.get(0);
String tid_last = threadMap2.get("tid");
String redirectURL = "index.jsp?action=thread&tid="+tid_last;
redirectURL = response.encodeRedirectURL(redirectURL);
try {
response.sendRedirect(redirectURL);
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}else{
wapService.forwardToMessage(request, response, settingMap, "没有比这个主题更早的主题了", null, settingMap.get("bbname"), currentMember, "goto", formhashInSession, session.getId());
return null;
}
}else{
wapService.forwardToMessage(request, response, settingMap, "该主题可能已经被删除,请刷新后重试!", null, settingMap.get("bbname"), currentMember, "goto", formhashInSession, session.getId());
return null;
}
}else{
wapService.forwardToMessage(request, response, settingMap, "未定义操作", null, settingMap.get("bbname"), currentMember, "goto", formhashInSession, session.getId());
return null;
}
}else if(dow.equals("next")){
if(fid!=null && tid != null){
List<Map<String,String>> threadLPMapList = dataBaseService.executeQuery("SELECT lastpost FROM "+tablePre+"threads WHERE tid='"+tid+"' AND displayorder>='0'");
if(threadLPMapList!=null && threadLPMapList.size()>0){
String this_lastpost = threadLPMapList.get(0).get("lastpost");
List<Map<String,String>> threadTidMapList = dataBaseService.executeQuery("SELECT tid FROM "+tablePre+"threads WHERE fid='"+fid+"' AND displayorder>='0' AND lastpost<'"+this_lastpost+"' ORDER BY lastpost DESC LIMIT 1");
if(threadTidMapList!=null && threadTidMapList.size()>0){
String nextTid = threadTidMapList.get(0).get("tid");
String redirectURL = "index.jsp?action=thread&tid="+nextTid;
redirectURL = response.encodeRedirectURL(redirectURL);
try {
response.sendRedirect(redirectURL);
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}else{
wapService.forwardToMessage(request, response, settingMap, "没有比这个主题更晚的主题了", null, settingMap.get("bbname"), currentMember, "goto", formhashInSession, session.getId());
return null;
}
}else{
wapService.forwardToMessage(request, response, settingMap, "该主题可能已经被删除,请刷新后重试!", null, settingMap.get("bbname"), currentMember, "goto", formhashInSession, session.getId());
return null;
}
}else{
wapService.forwardToMessage(request, response, settingMap, "未定义操作", null, settingMap.get("bbname"), currentMember, "goto", formhashInSession, session.getId());
return null;
}
}else{
String url = request.getParameter("url");
if(url != null){
try {
response.sendRedirect(response.encodeRedirectURL(url));
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
request.setAttribute("valueObject", wapService.getGoToVo(request, settingMap, currentMember, formhashInSession, session.getId()));
return mapping.findForward("goto");
}
}
public ActionForward post(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response){
int timestamp = (Integer)request.getAttribute("timestamp");
HttpSession session = request.getSession();
Map<String,String> settingMap = (Map<String,String>)request.getAttribute("settings");
Map<String,String> userGroupMap = (Map<String,String>)request.getAttribute("usergroups");
Integer jsprun_uid = (Integer)session.getAttribute("jsprun_uid");
Members currentMember = (Members)session.getAttribute("user");
String formhashInSession = (String)session.getAttribute("formhash");
if(!wapService.validateWap(request, response, settingMap, currentMember, formhashInSession,session.getId())){
return null;
}
Map<String,String> cacheForm = (Map<String, String>)request.getAttribute("forums");
String fid = request.getParameter("fid");
String forumsString = cacheForm.get("forums");
Map<String,Map<String,String>> forums = dataParse.characterParse(forumsString, false);
Map<String,String> currentForum = forums.get(fid);
if(currentForum==null || currentForum.get("type").equals("group")){
wapService.forwardToMessage(request, response, settingMap, "指定版块不存在", null, settingMap.get("bbname"), currentMember, "post", formhashInSession, session.getId());
return null;
}
String viewperm = currentForum.get("viewperm");
short groupid=(Short)session.getAttribute("jsprun_groupid");
String extgroupid=currentMember!=null?currentMember.getExtgroupids():null;
if(!viewperm.equals("")&&!Common.forumperm(viewperm, groupid, extgroupid)){
wapService.forwardToMessage(request, response, settingMap, "无权访问本版块", null, settingMap.get("bbname"), currentMember, "post", formhashInSession, session.getId());
return null;
}
String allowhidecode = userGroupMap.get("allowhidecode");
String bbcodeoff = request.getParameter("bbcodeoff");
String message = request.getParameter("message");
if(message != null){
if(bbcodeoff == null && (allowhidecode == null||allowhidecode.equals("")||allowhidecode.equals("0"))
&&message.toLowerCase().replaceAll("(\\[code\\].*\\[\\/code\\])", "").matches("\\[hide=?\\d*\\].+?\\[\\/hide\\]")){
wapService.forwardToMessage(request, response, settingMap, "无权使用[hide]代码", null, settingMap.get("bbname"), currentMember, "post", formhashInSession, session.getId());
return null;
}
}
if(currentMember!=null){
byte adminid = currentMember.getAdminid();
int newbiespan = Integer.parseInt(settingMap.get("newbiespan"));
int lastpost = currentMember.getLastpost();
if(adminid == 0 && newbiespan > 0 &&
(lastpost ==0 || timestamp - lastpost < newbiespan * 3600)){
int regdate = currentMember.getRegdate();
if(timestamp - regdate < newbiespan * 3600){
wapService.forwardToMessage(request, response, settingMap, "注册"+newbiespan+"小时后才可发帖", null, settingMap.get("bbname"), currentMember, "post", formhashInSession, session.getId());
return null;
}
}
}
List<Map<String,String>> ffMapList = dataBaseService.executeQuery("SELECT postcredits ,replycredits,postperm,threadtypes,replyperm FROM "+tablePre+"forumfields WHERE fid="+fid);
String postperm = "";
String threadtypesString = "";
String replyperm = "";
Map<Integer, Integer> postcredits = null;
Map<Integer, Integer> replycredits = null;
Map<String,Map<Integer,Integer>> creditspolicys = null;
if(ffMapList != null && ffMapList.size()>0){
Map<String,String> ffMap = ffMapList.get(0);
postcredits = dataParse.characterParse(ffMap.get("postcredits"),false);
replycredits = dataParse.characterParse(ffMap.get("replycredits"),false);
postperm = ffMap.get("postperm");
threadtypesString = ffMap.get("threadtypes");
replyperm = ffMap.get("replyperm");
}
if(postcredits == null || postcredits.size()<=0){
creditspolicys = dataParse.characterParse(settingMap.get("creditspolicy"),false);
postcredits = creditspolicys.get("post");
}
if(replycredits==null||replycredits.size()<=0){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -