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

📄 forumdisplayaction.java

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

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

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

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.Members;
import cn.jsprun.foreg.utils.CookieUtil;
import cn.jsprun.service.forumsedit.ForumService;
import cn.jsprun.service.system.DataBaseService;
import cn.jsprun.utils.BeanFactory;
import cn.jsprun.utils.Common;
import cn.jsprun.utils.DataParse;
import cn.jsprun.utils.JspRunConfig;
import cn.jsprun.utils.Md5Token;

public class ForumdisplayAction extends DispatchAction {
	private ForumService forumService = (ForumService) BeanFactory.getBean("forumService");
	private DataBaseService dataBaseService = (DataBaseService) BeanFactory.getBean("dataBaseService");
	private DataParse dataParse = (DataParse) BeanFactory.getBean("dataParse");
	private String[] colorarray={"", "red", "orange", "yellow", "green", "cyan", "blue", "purple", "gray"};
	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" };
	private Map<String, Integer> specialtype = new HashMap<String, Integer>();
	private List<String> orderfields=new ArrayList<String>();
	private List<String> order=new ArrayList<String>();
	{
		specialtype.put("poll", 1);
		specialtype.put("trade", 2);
		specialtype.put("reward", 3);
		specialtype.put("activity", 4);
		specialtype.put("debate", 5);
		specialtype.put("video", 6);
		orderfields.add("lastpost");
		orderfields.add("dateline");
		orderfields.add("replies");
		orderfields.add("views");
		order.add("DESC");
		order.add("ASC");
	}
	@SuppressWarnings("unchecked")
	public ActionForward forumdisplay(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
		request.setAttribute("jsprun_action", "2");
		short fid = (short)Common.toDigit(request.getParameter("fid"));
		List<Map<String,String>> forums=dataBaseService.executeQuery("SELECT f.*, ff.* FROM jrun_forums f LEFT JOIN jrun_forumfields ff ON ff.fid=f.fid WHERE f.fid='"+fid+"'");
		if (forums != null&&forums.size()>0) {
			Map<String,String> forum=forums.get(0);
			Map<String, String> settings = (Map<String, String>) request.getAttribute("settings");
			short fup=Short.valueOf(forum.get("fup"));
			String type=forum.get("type");
			String name=forum.get("name");
			String redirect=null;
			if(forum.get("redirect").length()>0) {
				redirect=forum.get("redirect");
			}else if("group".equals(type)) {
				redirect=settings.get("indexname") + "?gid" + fid;
			}
			if (redirect!=null) {
				try {
					response.sendRedirect(redirect);
				} catch (Exception e) {
					e.printStackTrace();
				}
				return null;
			}
			request.setAttribute("fid", fid);
			short styleid=Short.valueOf(forum.get("styleid"));
			if(styleid>0){
				request.setAttribute("styleid",styleid);
			}
			int rewritestatus = Integer.parseInt(settings.get("rewritestatus"));
			boolean forumdisplayurl=(rewritestatus & 1)>0;
			String navtitle="";
			if(type.equals("forum")){
				request.setAttribute("navigation","&raquo; "+name);
				navtitle=Common.strip_tags(name);
			}
			else{
				Map<String,String> sub=dataBaseService.executeQuery("SELECT name FROM jrun_forums WHERE fid="+fup+" limit 1").get(0);
				String subName=Common.strip_tags(sub.get("name"));
				if(forumdisplayurl){
					request.setAttribute("navigation","&raquo; <a href=\"forum-"+fup+"-1.html\">"+subName+"</a> &raquo; "+name);
				}else{
					request.setAttribute("navigation","&raquo; <a href=\"forumdisplay.jsp?fid="+fup+"\">"+subName+"</a> &raquo; "+name);
				}
				navtitle=Common.strip_tags(name)+" - "+subName;
			}
			request.setAttribute("navtitle", navtitle+" - ");
			request.setAttribute("metakeywords", forum.get("keywords").length()>0?forum.get("keywords"):Common.strip_tags(name));
			request.setAttribute("metadescription", forum.get("description").length()>0?Common.strip_tags(forum.get("description")):Common.strip_tags(name));
			request.setAttribute("google_searchbox", Integer.valueOf(settings.get("google_searchbox"))&1);
			request.setAttribute("baidu_searchbox", Integer.valueOf(settings.get("baidu_searchbox"))&1);
			HttpSession session = request.getSession();
			Members member = (Members) session.getAttribute("user");
			String extgroupid=member!=null?member.getExtgroupids():null;
			short groupid=(Short)session.getAttribute("jsprun_groupid");
			String viewperm=forum.get("viewperm");
			int creditstrans=Integer.valueOf(settings.get("creditstrans"));
			if(!viewperm.equals("")&&!Common.forumperm(viewperm, groupid, extgroupid)){
				request.setAttribute("show_message", "本版块只有特定用户组可以访问。");
				return mapping.findForward("nopermission");
			}
			boolean ismoderator=Common.ismoderator(fid, member);
			request.setAttribute("ismoderator",ismoderator);
			Map<Integer,Map<String,String>> extcredits=dataParse.characterParse(settings.get("extcredits"), false);
			String formulaperm=forum.get("formulaperm");
			if(formulaperm.length()>0){
				Map<String,String> messages=Common.forumformulaperm(formulaperm, member,ismoderator, 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");
				}				
			}
			String password=forum.get("password");
			if(!"".equals(password)){
				String pwverify=request.getParameter("pwverify");
				if("true".equals(pwverify)){
					String pw=request.getParameter("pw");
					if(password.equals(pw)){
						CookieUtil.setCookie(request, response, "fidpw"+fid, pw, 31536000, true, settings);
						session.setAttribute("fidpw"+fid, password);
						request.setAttribute("successInfo", "密码验证成功,现在将转入主题列表。");
						request.setAttribute("requestPath", "forumdisplay.jsp?fid="+fid);
						return mapping.findForward("showMessage");
					}else{
						request.setAttribute("resultInfo", "您输入的密码不正确,不能访问这个版块。");
						return mapping.findForward("showMessage");
					}
				}
				String pw=CookieUtil.getCookie(request, "fidpw"+fid, true, settings);
				if(!password.equals(pw)){
					return mapping.findForward("toForumdisplay_passwd");
				}
			}
			boolean spaceurlurl = (rewritestatus & 4)>0;
			request.setAttribute("moderatedby", Common.moddisplay(forum.get("moderators"),"forumdisplay", false,spaceurlurl));
			int timestamp = (Integer)request.getAttribute("timestamp");
			String jsprun_collapse=CookieUtil.getCookie(request, "jsprun_collapse", false,settings);
			Map<String,String> collapse=new HashMap<String,String>();
			if(forum.get("rules").length()>0) {
				if(jsprun_collapse!=null&&jsprun_collapse.indexOf("rules")>0){
					collapse.put("rules", "display: none");
					collapse.put("rules_link", "");
				}
				else{
					collapse.put("rules", "");
					collapse.put("rules_link", "display: none");
				}
			}
			Map modrecommend = dataParse.characterParse(forum.get("modrecommend"), false);
			if (modrecommend != null && "1".equals(modrecommend.get("open"))) {
				request.setAttribute("modrecommend", modrecommend);
				List<Map<String, String>> recommendlist=recommendupdate(fid,modrecommend, false, timestamp);
				if(recommendlist!=null&&recommendlist.size()>0){
					if(jsprun_collapse!=null&&jsprun_collapse.indexOf("recommendlist")>0){
						collapse.put("recommendlist", "display: none");
						collapse.put("recommendlist_link", "");
					}
					else{
						collapse.put("recommendlist", "");
						collapse.put("recommendlist_link", "display: none");
					}
					request.setAttribute("recommendlist", recommendlist);
				}
			}
			if(member!=null&&member.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);
				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++;
						}
					}
					request.setAttribute("announcepm", announcepm);
				}
				List<Map<String,String>> maps=dataBaseService.executeQuery("SELECT pmid, msgfrom, msgfromid, subject, message FROM jrun_pms WHERE msgtoid="+member.getUid()+" AND folder='inbox' AND delstatus!='2' AND new='1'");
				int newpmnum=maps!=null?maps.size():0;
				if(newpmnum>0&&newpmnum<=10)
				{
					pmlists.addAll(maps);
				}
				request.setAttribute("newpmnum", newpmnum);
				request.setAttribute("pmlists", pmlists.size()>0?pmlists:null);
			}
			int timeoffset=(int)((Float)session.getAttribute("timeoffset")*3600);
			String timeformat=(String)session.getAttribute("timeformat");
			String dateformat=(String)session.getAttribute("dateformat");
			SimpleDateFormat sdf_all=new SimpleDateFormat(dateformat+" "+timeformat);
			byte accessmasks = member != null ? member.getAccessmasks() : 0;
			int jsprun_uid=(Integer)session.getAttribute("jsprun_uid");
			String sql = accessmasks > 0 ? "SELECT f.fid, f.fup, f.type, f.name, f.threads, f.posts, f.todayposts, f.lastpost, f.inheritedmod, f.forumcolumns, f.simple, ff.description, ff.moderators, ff.icon, ff.viewperm, ff.redirect, a.allowview FROM jrun_forums f LEFT JOIN jrun_forumfields ff ON ff.fid=f.fid LEFT JOIN jrun_access a ON a.uid="+ jsprun_uid+ " AND a.fid=f.fid WHERE fup="+ fid+ " AND f.status>0 AND type='sub' ORDER BY f.displayorder": "SELECT f.fid, f.fup, f.type, f.name, f.threads, f.posts, f.todayposts, f.lastpost, f.inheritedmod, f.forumcolumns, f.simple, ff.description, ff.moderators, ff.icon, ff.viewperm, ff.redirect FROM jrun_forums f LEFT JOIN jrun_forumfields ff USING(fid) WHERE fup="+ fid+ " AND f.status>0 AND type='sub' ORDER BY f.displayorder";
			List<Map<String, String>> maps = dataBaseService.executeQuery(sql);
			if (maps != null && maps.size() > 0) {
				Map<String, Map<String, String>> lastposts = new TreeMap<String, Map<String, String>>();
				List<Map<String, String>> subforums = new ArrayList<Map<String, String>>();
				String hideprivate=settings.get("hideprivate");
				Integer lastvisit=member!=null?member.getLastvisit():null;
				for (Map<String, String> forumMap : maps) {
					if (Common.forum(forumMap, hideprivate, groupid, lastvisit, extgroupid, lastposts,sdf_all,timeoffset,rewritestatus)) {
						subforums.add(forumMap);
					}
				}
				short forumcolumns=Short.valueOf(forum.get("forumcolumns"));
				if (forumcolumns > 0) {
					int colspan = subforums.size() % forumcolumns;
					if (colspan > 0) {
						StringBuffer endrows = new StringBuffer();
						while (forumcolumns - colspan > 0) {
							endrows.append("<td>&nbsp;</td>");
							colspan++;

⌨️ 快捷键说明

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