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

📄 wapaction.java

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