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

📄 viewthreadaction.java

📁 论坛软件系统亦称电子公告板(BBS)系统
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
package cn.jsprun.struts.foreg.actions;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.lang.StringUtils;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.apache.struts.util.MessageResources;

import cn.jsprun.domain.Memberfields;
import cn.jsprun.domain.Members;
import cn.jsprun.domain.Memberspaces;
import cn.jsprun.domain.Polloptions;
import cn.jsprun.domain.Polls;
import cn.jsprun.domain.Posts;
import cn.jsprun.foreg.service.PolloptionsService;
import cn.jsprun.foreg.service.PollsService;
import cn.jsprun.foreg.utils.Jspruncode;
import cn.jsprun.foreg.vo.ActivitappliesVO;
import cn.jsprun.foreg.vo.ViewThreadVO;
import cn.jsprun.page.LogPage;
import cn.jsprun.service.posts.PostsService;
import cn.jsprun.service.system.DataBaseService;
import cn.jsprun.service.user.MemberService;
import cn.jsprun.service.user.SpaceService;
import cn.jsprun.utils.Base64Encoder;
import cn.jsprun.utils.BeanFactory;
import cn.jsprun.utils.Common;
import cn.jsprun.utils.DataParse;
import cn.jsprun.utils.FormDataCheck;
import cn.jsprun.utils.JspRunConfig;

public class ViewThreadAction extends DispatchAction {
	private MemberService memberService = (MemberService) BeanFactory.getBean("memberService");
	private PostsService postService = (PostsService) BeanFactory.getBean("postsService");
	private PollsService pollService = (PollsService) BeanFactory.getBean("pollsService");
	private PolloptionsService optionService = (PolloptionsService) BeanFactory.getBean("polloptionsService");
	private DataBaseService dataBaseService = (DataBaseService) BeanFactory.getBean("dataBaseService");
	private SpaceService spaceServer = (SpaceService) BeanFactory.getBean("spaceServer");
	private DataParse dataParse=((DataParse) BeanFactory.getBean("dataParse"));
	private Jspruncode jspcode = (Jspruncode)BeanFactory.getBean("jspruncode");
	Random random = new Random();
	private final String[] coloroptions = { "Black", "Sienna", "DarkOliveGreen","DarkGreen", "DarkSlateBlue", "Navy", "Indigo","DarkSlateGray", "DarkRed", "DarkOrange", "Olive", "Green","Teal", "Blue", "SlateGray", "DimGray", "Red", "SandyBrown","YellowGreen", "SeaGreen", "MediumTurquoise", "RoyalBlue","Purple", "Gray", "Magenta", "Orange", "Yellow", "Lime","Cyan", "DeepSkyBlue", "DarkOrchid", "Silver", "Pink", "Wheat","LemonChiffon", "PaleGreen", "PaleTurquoise", "LightBlue","Plum", "White" };
	Map<String,String> attatypemap = new HashMap<String,String>();
	{
		attatypemap.put("text/css", "text.gif");
		attatypemap.put("application/zip", "zip.gif");
		attatypemap.put("text/plain", "text.gif");
		attatypemap.put("image/pjpeg", "image.gif");
	}
	@SuppressWarnings("unused")
	private int convertInt(String s) {
		int count = 0;
		try {
			count = Integer.valueOf(s);
		} catch (Exception e) {
		}
		return count;
	}
	@SuppressWarnings({ "unchecked", "static-access" })
	public ActionForward viewthreadpost(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
		Map<String, String> settings = (Map<String, String>) request.getAttribute("settings");
		HttpSession session = request.getSession();
		int uid = (Integer)session.getAttribute("jsprun_uid");
		int tid =Common.toDigit(request.getParameter("tid"));
		List<Map<String,String>> threadpost = dataBaseService.executeQuery("select t.*,f.threadcaches,f.fup,f.name,f.allowpostspecial,f.allowbbcode,f.allowmediacode,f.allowimgcode,f.jammer,f.allowsmilies,f.displayorder as dis,f.type,f.allowspecialonly,f.allowshare,f.allowhtml,f.autoclose from jrun_threads t left join jrun_forums f on t.fid=f.fid  where  t.displayorder>=0 and t.tid="+tid);
		if (threadpost == null || threadpost.size()<=0) {
			request.setAttribute("errorInfo", "指定的主题不存在或已被删除或正在被审核,请返回");
			return mapping.findForward("showMessage");
		}
		Map<String,String> threads = threadpost.get(0);
		threadpost=null;
		int timestamp = (Integer)(request.getAttribute("timestamp"));
		request.setAttribute("nowtime", timestamp);
		String cachethreadlife = settings.get("cachethreadlife");
		String page = request.getParameter("page");
		if(page==null){
			page="1";
		}
		String realPath=servlet.getServletContext().getRealPath("/");
		if(!cachethreadlife.equals("0") && Common.toDigit(threads.get("threadcaches"))>0 && uid==0 && page.equals("1") && threads.get("special").equals("0")){
			if(viewthread_loadcache(timestamp, threads, settings, realPath+settings.get("cachethreaddir"), request, response))
			{
				return null;
			}
		}
		Map<String,String> usergroups = (Map<String,String>)request.getAttribute("usergroups");
		int readaccess = Common.toDigit(usergroups.get("readaccess"));
		request.setAttribute("readaccess", readaccess);
		Members members = (Members)session.getAttribute("user");
		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,ff.formulaperm FROM  jrun_forumfields ff LEFT JOIN jrun_access a ON a.uid='"+ uid+ "' AND a.fid=ff.fid WHERE ff.fid = "+threads.get("fid"));
		Map<String, String> forumMap = forumslist.get(0);
		String modrecommend = forumMap.get("modrecommend");
		Map modrecommendMap = dataParse.characterParse(modrecommend, false);
		request.setAttribute("modrecommendMap", modrecommendMap);
		forumslist = null;
		String extgroupids=members!=null?members.getExtgroupids():null;
		boolean allowgetattach = false;
		if (forumMap.get("alloview") == null) {
			if (forumMap.get("viewperm").equals("") && (usergroups==null || usergroups.get("readaccess").equals("0"))) {
				String grouptitle = usergroups==null?"游客":usergroups.get("grouptitle");
				request.setAttribute("show_message", "您所在的用户组(" + grouptitle+ ")无法进行此操作。");
				return mapping.findForward("nopermission");
			} else if (!forumMap.get("viewperm").equals("")&& !Common.forumperm(forumMap.get("viewperm"), groupid,extgroupids)) {
				request.setAttribute("show_message", " 本版块只有特定用户组可以访问。");
				return mapping.findForward("nopermission");
			}
			String getattachperm = forumMap.get("getattachperm");
			allowgetattach = (getattachperm.equals("")&&(usergroups!=null&&!usergroups.get("readaccess").equals("0")))||(!getattachperm.equals("")&&Common.forumperm(getattachperm, groupid,extgroupids))||(usergroups!=null&&!usergroups.get("allowgetattach").equals("0"));
		}
		request.setAttribute("allowgetattach",allowgetattach);
		boolean modertar = Common.ismoderator(Common.toDigit(threads.get("fid"),100000000L, 0L).shortValue(), members);
		request.setAttribute("modertar", modertar);
		String extcredit = settings.get("extcredits");
		Map<Integer,Map<String,String>> extcredits=dataParse.characterParse(extcredit, false);
		String formulaperm=forumMap.get("formulaperm");
		if(formulaperm.length()>0){
			Map<String,String> messages=Common.forumformulaperm(formulaperm, members,modertar, extcredits);
			if(messages!=null){
				request.setAttribute("show_message", "您不满足访问这个版块所需的条件。</b><br />&nbsp;&nbsp;&nbsp;访问条件: "+messages.get("formulamessage")+"<br />&nbsp;&nbsp;&nbsp;您的信息: "+messages.get("usermsg")+"<b>");
				return mapping.findForward("nopermission");
			}				
		}
		if(usergroups!=null && Common.toDigit(threads.get("readperm"))>Common.toDigit(usergroups.get("readaccess")) && !modertar && !threads.get("authorid").equals(uid+"")){
			request.setAttribute("show_message", "对不起,本帖要求阅读权限高于 "+threads.get("readperm")+" 才可浏览,请返回。");
			return mapping.findForward("nopermission");
		}
		if(Common.toDigit(threads.get("digest"))>0 && usergroups.get("allowviewdigest").equals("0") && !threads.get("authorid").equals(uid+"")){
			request.setAttribute("show_message", "对不起,你所在的用户组("+usergroups.get("grouptitle")+")不能浏览精华帖。");
			return mapping.findForward("nopermission");
		}
		String password=forumMap.get("password");
		if(password!=null&&!"".equals(password))
		{
			 if(!password.equals(session.getAttribute("fidpw"+threads.get("fid")))){
				request.setAttribute("fid", threads.get("fid"));
				return mapping.findForward("toForumdisplay_passwd");
			}
		}

		boolean threadpay = false;
		if(Common.toDigit(threads.get("price"))>0 && threads.get("special").equals("0")){
			String maxchargespan = settings.get("maxchargespan");
			if(!maxchargespan.equals("0") && timestamp-Common.toDigit(threads.get("dateline"))>=Common.toDigit(maxchargespan)*3600){
				dataBaseService.runQuery("update jrun_threads set price=0 where tid="+tid,true);
				threads.put("price","0");
			}else{
				if(!modertar && !threads.get("authorid").equals(uid+"")){
					List<Map<String, String>> paylog = dataBaseService.executeQuery("SELECT tid FROM jrun_paymentlog WHERE tid="+tid+" AND uid="+uid);
					if(paylog==null || paylog.size()<=0){
						threadpay = true;
					}
					paylog = null;
				}
			}
		}
		int creditstransid = Common.toDigit(settings.get("creditstrans"));
		Map extcrditsMap = dataParse.characterParse(extcredit, true);
		Map creditstrans=(Map)extcrditsMap.get(creditstransid);
		request.setAttribute("creditstrans", creditstrans);
		String extcreditname = creditstrans!=null?(String)creditstrans.get("title"):"";
		String postperm=forumMap.get("postperm");
		boolean allowpost=(("".equals(postperm))&&Common.toDigit(usergroups.get("allowpost"), 255L, 0L).intValue()>0)||((!"".equals(postperm))&&Common.forumperm(postperm, groupid,extgroupids));
		boolean showpoll=false;
		boolean showtrade=false;
		boolean showreward=false;
		boolean showactivity=false;
		boolean showdebate=false;
		boolean showvideo=false;
		short allowpostspecial= Common.toDigit(threads.get("allowpostspecial"),10000000000L,0L).shortValue();
		if(allowpostspecial>0)
		{
			showpoll=(allowpostspecial&1)>0;
			showtrade=(allowpostspecial&2)>0;
			showreward=(allowpostspecial&4)>0;
			showactivity=(allowpostspecial&8)>0;
			showdebate=(allowpostspecial&16)>0;
			showvideo=(allowpostspecial&32)>0&&"1".equals(settings.get("videoopen"));
			request.setAttribute("showpoll",showpoll );
			request.setAttribute("showtrade",showtrade );
			request.setAttribute("showreward",showreward );
			request.setAttribute("showactivity",showactivity );
			request.setAttribute("showdebate",showdebate );
			request.setAttribute("showvideo",showvideo);
		}
		if(allowpost&&usergroups!=null)
		{
			request.setAttribute("allowpostpoll",usergroups.get("allowpostpoll").equals("1")&&showpoll);
			request.setAttribute("allowposttrade",usergroups.get("allowposttrade").equals("1")&&showtrade );
			request.setAttribute("allowpostreward",usergroups.get("allowpostreward").equals("1")&&showreward&&extcrditsMap.get(creditstransid)!=null);
			request.setAttribute("allowpostactivity",usergroups.get("allowpostactivity").equals("1")&&showactivity );
			request.setAttribute("allowpostdebate",usergroups.get("allowpostdebate").equals("1")&&showdebate );
			request.setAttribute("allowpostvideo",usergroups.get("allowpostvideo").equals("1")&&showvideo);
		}
		request.setAttribute("allowpost", allowpost);
		Map threadtypes=dataParse.characterParse(forumMap.get("threadtypes"),true);
		request.setAttribute("threadtypes", threadtypes.size()>0?threadtypes:null);
		request.setAttribute("typemodels", dataParse.characterParse(forumMap.get("typemodels"),true));
		Map<Short,String> visitedforums=(Map<Short,String>)session.getAttribute("visitedforums");
		request.setAttribute("visitedforums",visitedforums!=null && visitedforums.size()>1?visitedforums:null);
		visitedforums=null;
		if(members!=null&&members.getNewpm()>0){
			Map<String,String> announcementsMap=(Map<String,String>)request.getAttribute("announcements");
			Map<Integer,Map> announcements=dataParse.characterParse(announcementsMap!=null?announcementsMap.get("announcements"):null,true);
			announcementsMap=null;
			List<Map<String,String>> pmlists=new ArrayList<Map<String,String>>();;
			if(announcements!=null&&announcements.size()>0)
			{
				int announcepm=0;
				Set<Integer> keys=announcements.keySet();
				for (Integer key : keys) {
					Map<String,String> announcement=announcements.get(key);
					if(announcement.get("type")!=null&&announcement.get("type").equals("2"))
					{
						announcement.put("announce", "true");
						pmlists.add(announcement);
						announcepm++;
					}
				}
				announcements=null;
				request.setAttribute("announcepm", announcepm);
			}
			String sql="SELECT pmid, msgfrom, msgfromid, subject, message FROM jrun_pms WHERE msgtoid="+members.getUid()+" AND folder='inbox' AND delstatus!='2' AND new='1'";
			List<Map<String,String>> maps=dataBaseService.executeQuery(sql);
			int newpmnum=maps!=null?maps.size():0;
			if(newpmnum>0&&newpmnum<=10)
			{

⌨️ 快捷键说明

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