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

📄 indexmanageaction.java

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

import java.io.File;
import java.io.IOException;
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 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.system.DataBaseService;
import cn.jsprun.utils.Base64Encoder;
import cn.jsprun.utils.BeanFactory;
import cn.jsprun.utils.Cache;
import cn.jsprun.utils.Common;
import cn.jsprun.utils.DataParse;
import cn.jsprun.utils.Md5Token;

public class IndexManageAction extends DispatchAction {
	private DataBaseService dataBaseService = (DataBaseService) BeanFactory.getBean("dataBaseService");
	private DataParse dataParse = (DataParse) BeanFactory.getBean("dataParse");
	@SuppressWarnings("unchecked")
	public ActionForward getData(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
		request.setAttribute("jsprun_action","1");
		Map<String, String> settings = (Map<String, String>) request.getAttribute("settings");
		request.setAttribute("attachurl", settings.get("attachurl"));
		HttpSession session = request.getSession();
		int timestamp = (Integer)(request.getAttribute("timestamp"));
		int uid = (Integer) session.getAttribute("jsprun_uid");
		int cacheindexlife=Common.toDigit(settings.get("cacheindexlife"));
		if(cacheindexlife>0 && uid==0){
			String realPath=servlet.getServletContext().getRealPath("/");
			String[] indexcache = getcacheinfo(0,realPath+settings.get("cachethreaddir"));
			File file = new File(indexcache[0]);
			if(timestamp - Integer.valueOf(indexcache[1]) > cacheindexlife){
				if(file.exists()){
					file.delete();
				}
				try {
					file.createNewFile();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}else{
				if(file.length()<=200){
					file.delete();
				}else{
					String filename = indexcache[0].substring(realPath.length());
					try {
						request.getRequestDispatcher(filename).include(request, response);
					} catch (Exception e) {
					} 
					return null;
				}
			}
		}
		Members member =(Members)session.getAttribute("user");
		request.setAttribute("google_searchbox", Integer.valueOf(settings.get("google_searchbox"))&1);
		request.setAttribute("baidu_searchbox", Integer.valueOf(settings.get("baidu_searchbox"))&1);
		String forumlinkstatus=settings.get("forumlinkstatus");
		if("1".equals(forumlinkstatus)){
			Map<String, String> forumlinks = (Map<String, String>) request.getAttribute("forumlinks");
			Map map = dataParse.characterParse(forumlinks.get("forumlinks"),true);
			request.setAttribute("forumlinks", map!=null&&map.size() > 0 ? map : null);
		}
		String historyposts=settings.get("historyposts");
		String[] postdata = !"".equals(historyposts) ? historyposts.split("\t") : new String[] { "0", "0" };
		request.setAttribute("postdata", postdata);
		String jsprun_collapse=CookieUtil.getCookie(request, "jsprun_collapse", false,settings);
		Map<String,String> collapseMap=new HashMap<String,String>();
		Map<String,String> collapseimgMap=new HashMap<String,String>();
		String[] collapses=new String[]{"forumlinks","birthdays","supe_updateusers"};
		for(String collapse:collapses){
			if(jsprun_collapse!=null&&jsprun_collapse.indexOf(collapse)>0){
				collapseMap.put(collapse, "display: none");
				collapseimgMap.put(collapse, "collapsed_yes.gif");
			}
			else{
				collapseMap.put(collapse, "");
				collapseimgMap.put(collapse, "collapsed_no.gif");
			}
		}
		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 = 0;
		String extgroupids=null;
		Integer lastvisit=null;
		if(member!=null){
			accessmasks =member.getAccessmasks();
			extgroupids=member.getExtgroupids();
			lastvisit=member.getLastvisit();
			request.setAttribute("user_lastvisit", Common.gmdate(sdf_all,(member.getLastvisit()>0?member.getLastvisit():timestamp - 86400)+timeoffset));
			request.setAttribute("newthreads", Math.round((timestamp- member.getLastvisit() + 600f) / 1000f) * 1000);
		}
		short groupid=(Short)session.getAttribute("jsprun_groupid");
		String hideprivate=settings.get("hideprivate");
		int rewritestatus = Integer.valueOf(settings.get("rewritestatus"));
		boolean forumdisplay = (rewritestatus&1)>0;
		boolean spaceurlurl=(rewritestatus & 4)>0;
		int threads = 0;
		int posts = 0;
		int todayposts = 0;
		int gid=Common.toDigit(request.getParameter("gid"));
		int subforumsindex=Common.toDigit(settings.get("subforumsindex"));
		if (gid>0) {
			List<Map<String, String>> maps = dataBaseService.executeQuery(accessmasks > 0 ? "SELECT f.fid, f.fup, f.type, f.name, f.threads, f.posts, f.todayposts, f.lastpost, f.inheritedmod, ff.description, ff.moderators, ff.icon, ff.viewperm, a.allowview FROM jrun_forums f LEFT JOIN jrun_forumfields ff ON ff.fid=f.fid LEFT JOIN jrun_access a ON a.uid='"+ uid+ "' AND a.fid=f.fid WHERE f.status>0 AND (f.fid='"+ gid+ "' OR (f.fup='"+ gid+ "' AND f.type='forum')) ORDER BY f.type, f.displayorder": "SELECT f.fid, f.fup, f.type, f.name, f.threads, f.posts, f.todayposts, f.lastpost, f.inheritedmod, ff.description, ff.moderators, ff.icon, ff.viewperm FROM jrun_forums f LEFT JOIN jrun_forumfields ff USING(fid) WHERE f.status>0 AND (f.fid='"+ gid+ "' OR (f.fup='"+ gid+ "' AND f.type='forum')) ORDER BY f.type, f.displayorder");
			if (maps != null && maps.size() > 0) {
				Map<String, List<Map<String, String>>> forums = new HashMap<String, List<Map<String, String>>>();
				List<Map<String, String>> groupsList = new ArrayList<Map<String, String>>();
				Map<String, Map<String, String>> lastposts = new HashMap<String, Map<String, String>>();
				Map<String, String> collapse = new HashMap<String, String>();
				StringBuffer fids=new StringBuffer();
				for (Map<String, String> forum : maps) {
					if (!"group".equals(forum.get("type"))) {
						threads += Integer.valueOf(forum.get("threads"));
						posts += Integer.valueOf(forum.get("posts"));
						todayposts += Integer.valueOf(forum.get("todayposts"));
						if (Common.forum(forum, hideprivate, groupid,lastvisit,extgroupids, lastposts,sdf_all,timeoffset,rewritestatus)) {
							List<Map<String, String>> forumList = forums.get(forum.get("fup"));
							if (forumList == null) {
								forumList = new ArrayList<Map<String, String>>();
								forums.put(forum.get("fup"), forumList);
							}
							forum.put("subforums", "");
							forumList.add(forum);
							for (Map<String, String> group : groupsList) {
								if (group.get("fid").equals(forum.get("fup")))	{
									group.put("forumscount",String.valueOf(Integer.valueOf(group.get("forumscount")) + 1));
								}
							}
							fids.append(","+forum.get("fid"));
						}
					}
					else{
						forum.put("collapseimg", "collapsed_no.gif");
						collapse.put("category_"+forum.get("fid"), "");
						forum.put("moderators", Common.moddisplay(forum.get("moderators"), "flag", false,spaceurlurl));
						forum.put("forumscount", "0");
						forum.put("forumcolumns", "0");
						groupsList.add(forum);
						request.setAttribute("navigation",Common.strip_tags("&raquo;"+forum.get("name")));
						request.setAttribute("navtitle",Common.strip_tags(forum.get("name")+"-"));
					}
				}
				maps=null;
				if(fids.length()>0){
					List<Map<String, String>> subs = dataBaseService.executeQuery("SELECT fid, fup, name, threads, posts, todayposts FROM jrun_forums WHERE status>0 AND fup IN ("+fids.substring(1)+") AND type='sub'");
					if (subs != null && subs.size() > 0) {
						for (Map<String, String> sub : subs) {
							Set<String> keys = forums.keySet();
							for (String key : keys) {
								List<Map<String, String>> forumList = forums.get(key);
								for (Map<String, String> forum : forumList) {
									if (forum.get("fid").equals(sub.get("fup"))){
										forum.put("threads",String.valueOf(Integer.valueOf(forum.get("threads"))+ Integer.valueOf(sub.get("threads"))));
										forum.put("posts",String.valueOf(Integer.valueOf(forum.get("posts"))+ Integer.valueOf(sub.get("posts"))));
										forum.put("todayposts",String.valueOf(Integer.valueOf(forum.get("todayposts"))+ Integer.valueOf(sub.get("todayposts"))));
										if (subforumsindex==1&& "2".equals(forum.get("permission"))) {
											if(forumdisplay){
												forum.put("subforums",forum.get("subforums")+ "<a href=\"forum-"+ sub.get("fid")+ "-1.html\">"+ sub.get("name")+ "</a>&nbsp;&nbsp;");
											}else{
												forum.put("subforums",forum.get("subforums")+ "<a href=\"forumdisplay.jsp?fid="+ sub.get("fid")+ "\">"+ sub.get("name")+ "</a>&nbsp;&nbsp;");
											}
										}
									}
								}
							}
						}
						subs=null;
					}
				}
				request.setAttribute("catlists", groupsList);
				request.setAttribute("forums", forums);
				request.setAttribute("lastposts", lastposts);
				request.setAttribute("gid", gid);
			} else {
				request.setAttribute("errorInfo", "指定的版块不存在,请返回。");
				return mapping.findForward("showMessage");
			}
		} else {
			List<Map<String, String>> pmlists = new ArrayList<Map<String, String>>();
			Map<String, String> announcementsMap = (Map<String, String>) request.getAttribute("announcements");
			Map<Integer, Map<String, String>> announcements = dataParse.characterParse(announcementsMap != null ? announcementsMap.get("announcements") : null,true);
			announcementsMap=null;
			if(announcements!=null){
				int announcepm = 0;
				SimpleDateFormat sdf_dateformat=new SimpleDateFormat(dateformat);
				StringBuffer announ=new StringBuffer();
				Set<Integer> annids=announcements.keySet();
				for (int annid:annids) {
					Map<String, String> announcement=announcements.get(annid);
					String groups=announcement.get("groups");
					if("".equals(groups)||(","+groups+",").contains(","+groupid+",")){
						String type=announcement.get("type");
						if("0".equals(type)){
							String id=announcement.get("id");
							announ.append("<li><a href='announcement.jsp?id="+id+"#"+id+"'>"+announcement.get("subject")+" <em>("+Common.gmdate(sdf_dateformat, Integer.valueOf(announcement.get("starttime"))+timeoffset)+")</em></a></li>");
						}else if("1".equals(type)){
							announ.append("<li><a href='"+announcement.get("message")+"' target='_blank'>"+announcement.get("subject")+" <em>("+Common.gmdate(sdf_dateformat, Integer.valueOf(announcement.get("starttime"))+timeoffset)+")</em></a></li>");
						}else if(uid>0&&"2".equals(type)){
							announcement.put("announce", "true");
							pmlists.add(announcement);
							announcepm++;
						}
					}
				}
				sdf_dateformat=null;
				request.setAttribute("announcements",announ.length()>0?announ.toString():null);
				request.setAttribute("announcepm", announcepm);
			}
			if (member != null && member.getNewpm() > 0) {
				String sql = "SELECT pmid, msgfrom, msgfromid, subject FROM jrun_pms WHERE msgtoid="+ member.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) {
					pmlists.addAll(maps);
				}
				request.setAttribute("newpmnum", newpmnum);
			}

⌨️ 快捷键说明

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