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

📄 pruneaction.java

📁 论坛软件系统亦称电子公告板(BBS)系统
💻 JAVA
字号:
package cn.jsprun.struts.action;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletContext;
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 cn.jsprun.domain.Members;
import cn.jsprun.page.LogPage;
import cn.jsprun.service.posts.PostsService;
import cn.jsprun.service.system.DataBaseService;
import cn.jsprun.struts.form.posts.PruneForm;
import cn.jsprun.utils.BeanFactory;
import cn.jsprun.utils.Common;
import cn.jsprun.utils.DataParse;
import cn.jsprun.utils.FormDataCheck;
public class PruneAction extends DispatchAction {
	private PostsService postsService = (PostsService) BeanFactory.getBean("postsService");
	private DataBaseService dataBaseService = (DataBaseService) BeanFactory.getBean("dataBaseService");
	private DataParse dataParse= (DataParse)BeanFactory.getBean("dataParse");
	public ActionForward fromPrune(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		String searchsubmit = request.getParameter("searchsubmit");
		if(searchsubmit==null){
			Common.requestforward(response, "admincp.jsp?action=prune");
			return null;
		}
		HttpSession session=request.getSession();
		PruneForm pf = (PruneForm) form;  
		short groupid = (Short)session.getAttribute("jsprun_groupid");
		Members member = (Members)session.getAttribute("user");
		if(member.getAdminid()==3){
			StringBuffer fidsbuffer = new StringBuffer();
			List<Map<String,String>> fidslist = dataBaseService.executeQuery("SELECT fid FROM jrun_moderators WHERE uid='"+member.getUid()+"'");
			for(Map<String,String> fids:fidslist){
				fidsbuffer.append(","+fids.get("fid"));
			}
			if(fidsbuffer.length()>0){	
				pf.setFid(fidsbuffer.substring(1));
				List<Map<String,String>> forumList=dataBaseService.executeQuery("SELECT name from jrun_forums where fid in ( "+fidsbuffer.substring(1)+" ) ORDER BY type, displayorder");
				StringBuffer forumname = new StringBuffer();
				for(Map<String,String> forums:forumList){
					forumname.append(","+forums.get("name"));
				}
				if(forumname.length()>0){
					request.setAttribute("forumselect", forumname.substring(1));
				}else{
					request.setAttribute("forumselect", "无");
				}
			}else{
				pf.setFid("-1");
			}
		}else{
			request.setAttribute("forumselect", Common.forumselect(false, false,groupid,member!=null?member.getExtgroupids():"",pf.getForums()+"",false));
		}
		String info = "Jsprun! 提示: 您没有同时选择时间范围和指定相关的搜索条件。";
		int currentpage = 1;  
		String page = request.getParameter("page");
		currentpage = Common.toDigit(page,10000000000L,1L).intValue();
		int timeoffset=(int)((Float)session.getAttribute("timeoffset")*3600);
		int timestamp = (Integer)(request.getAttribute("timestamp"));
		Members adminback = (Members) session.getAttribute("members"); 
		String bigStartTime = request.getParameter("bigstart");  
		request.setAttribute("startTime", bigStartTime);
		if (adminback != null) {
			if (adminback.getAdminid() == 2 || adminback.getAdminid() == 3) {
				if (FormDataCheck.isValueString(pf.getStarttime())&& FormDataCheck.isLess(pf.getStarttime(),bigStartTime, "yyyy-MM-dd")) {
					info = "Jsprun! 提示: 您指定的时间范围超过限制。";
					request.setAttribute("myinfo", info);
					request.setAttribute("notfirst", "notfirst");
					return mapping.findForward("toPruneForum");
				}
			}
		}
		String isDisplay = "none";
		if (pf.isForm()) {
			info = "Jsprun! 提示: 没有与条件匹配的帖子。";
			String sql = postsService.prunsql(pf,timeoffset);
			StringBuffer sb = new StringBuffer();
			String postsql = "select p.pid "+sql;
			List<Map<String,String>> countlist = dataBaseService.executeQuery("select count(*) count "+sql);
			int totalSize = Common.toDigit(countlist.get(0).get("count")); 
			if(pf.getDetail()==1){
				int totalPage = 1; 
				int pageSize = 10;  
				int startid = 0; 
				if (totalSize > pageSize) {
					if (totalSize % pageSize == 0) {
						totalPage = (int) ((double) totalSize / (double) pageSize);
					} else {
						totalPage = (int) (1.0d + (double) totalSize
								/ (double) pageSize);
					}
				} else {
					totalPage = 1;
				}
				if (currentpage > 0) {
					if (currentpage > totalPage) {
						currentpage = totalPage;
					}
					startid = pageSize * (currentpage - 1);
				}
				LogPage loginpage = new LogPage(totalSize,10,currentpage);
				request.setAttribute("logpage", loginpage);
				postsql = "select p.*,f.name,t.subject as tsubject "+sql+" limit "+startid+",10";
			}
			List<Map<String,String>> postlist = dataBaseService.executeQuery(postsql);
			if (postlist != null) {
				for (int i = 0; i < postlist.size(); i++) {
					sb.append(postlist.get(i).get("pid"));
					sb.append(",");
				}
			}
			request.setAttribute("sb", sb);
			if (pf.getDetail() == 1) {
				isDisplay = "block";
			}
			request.setAttribute("postsList", postlist);
			request.setAttribute("countPosts", totalSize);
			postlist = null;
		}
		if (member.getAdminid() != 1) {
			String endTime = Common.gmdate("yyyy-MM-dd", (int)(timestamp+timeoffset)); 
			request.setAttribute("isAdmin", "admin");
			pf.setEndtime(endTime);
		}
		session.setAttribute("pf", pf); 
		request.setAttribute("isDisplay", isDisplay); 
		request.setAttribute("myinfo", info);
		request.setAttribute("notfirst", "notfirst");
		return mapping.findForward("toPruneForum");
	}
	@SuppressWarnings("unchecked")
	public ActionForward batchPrune(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		String prunesubmit = request.getParameter("prunesubmit");
		if(prunesubmit==null){
			Common.requestforward(response, "admincp.jsp?action=prune");
			return null;
		}
		int timestamp = (Integer)(request.getAttribute("timestamp"));
		StringBuffer pidsSb = new StringBuffer();
		String sb = request.getParameter("sb");
		int uid = (Integer)request.getSession().getAttribute("jsprun_uid");
		HttpSession session = request.getSession();
		ServletContext context = session.getServletContext();
		Map<String,String> settings = (Map<String,String>)context.getAttribute("fsmap");
		int postcount = 0;
		int threadcount = 0;
		if (sb != null && !sb.equals("")) {
			Object[] pids = sb.split(",");
			for (int i = 0; i < pids.length; i++) {
				String str = request.getParameter(toPIDArray(pids[i].toString()));
				if (str != null && !str.equals("")) {
					pidsSb.append(pids[i].toString());
					pidsSb.append(",");
				}
			}
			String donotupdatemember = request.getParameter("donotupdatemember");
			List<Map<String,String>> postmap = dataBaseService.executeQuery("SELECT pid,tid, first, authorid FROM jrun_posts WHERE pid IN ( "+pidsSb+"0 )");
			String pidsdelete = "0";
			String tidsdelete = "0";
			for(Map<String,String>map:postmap){
				pidsdelete += ","+map.get("pid");postcount++;
				if(map.get("first").equals("1")){
					tidsdelete += ","+map.get("tid");threadcount++;
				}else{
					dataBaseService.runQuery("update jrun_threads set replies=replies-1 where tid="+map.get("tid"));
				}
			}
			postmap=null;
			List<Map<String,String>> attalist = dataBaseService.executeQuery("select attachment,thumb,remote from jrun_attachments where pid in ("+ pidsdelete +")");
			String servletpath = servlet.getServletContext().getRealPath("/")+settings.get("attachdir")+"/";
			for(Map<String,String>atta:attalist){
				Common.dunlink(atta.get("attachment"), Byte.valueOf(atta.get("thumb")), Byte.valueOf(atta.get("remote")), servletpath);
			}
			attalist=null; 
			if (donotupdatemember == null) {
				List<Map<String,String>> threadlist = dataBaseService.executeQuery("SELECT pid, first, authorid FROM jrun_posts WHERE pid IN ("+pidsdelete+")");
				List<Map<String,String>> postslist = dataBaseService.executeQuery("SELECT pid, first, authorid FROM jrun_posts WHERE pid IN ("+tidsdelete+")");
				Map creditspolicys=dataParse.characterParse(((Map<String,String>)request.getSession().getServletContext().getAttribute("fsmap")).get("creditspolicy"),false);
				Map<Integer, Integer> postcredits=(Map<Integer,Integer>)creditspolicys.get("reply");
				Map<Integer, Integer> threadcredits=(Map<Integer,Integer>)creditspolicys.get("post");
				String creditsformula = ((Map<String,String>)request.getSession().getServletContext().getAttribute("fsmap")).get("creditsformula");
				creditspolicys=null;
				for(Map<String,String>thread :threadlist){
					Common.updatepostcredits("-", Common.toDigit(thread.get("authorid")), threadcredits, timestamp);
					Common.updatepostcredits(Common.toDigit(thread.get("authorid")), creditsformula);
				}
				for(Map<String,String>posts:postslist){
					Common.updatepostcredits("-", Common.toDigit(posts.get("authorid")), postcredits, timestamp);
					Common.updatepostcredits(Common.toDigit(posts.get("authorid")), creditsformula);
				}
				threadlist = null;postslist=null;postcredits=null;threadcredits=null;
			}
			dataBaseService.runQuery("DELETE FROM jrun_attachments WHERE pid IN ("+pidsdelete+")");
			dataBaseService.runQuery("DELETE FROM jrun_attachments WHERE tid IN ("+tidsdelete+")");
			dataBaseService.runQuery("DELETE FROM jrun_threadsmod WHERE tid IN ("+tidsdelete+")");
			dataBaseService.runQuery("DELETE FROM jrun_threadsmod WHERE tid IN ("+tidsdelete+")");
			dataBaseService.runQuery("DELETE FROM jrun_threads WHERE tid IN ("+tidsdelete+")");
			dataBaseService.runQuery("DELETE FROM jrun_posts WHERE pid IN ("+pidsdelete+")");
			dataBaseService.runQuery("DELETE FROM jrun_posts WHERE tid IN ("+tidsdelete+")");
			dataBaseService.runQuery("DELETE FROM jrun_polloptions WHERE tid IN ("+tidsdelete+")");
			dataBaseService.runQuery("DELETE FROM jrun_polls WHERE tid IN ("+tidsdelete+")");
			dataBaseService.runQuery("DELETE FROM jrun_rewardlog WHERE tid IN ("+tidsdelete+")");
			dataBaseService.runQuery("DELETE FROM jrun_trades WHERE tid IN ("+tidsdelete+")");
			dataBaseService.runQuery("DELETE FROM jrun_rewardlog WHERE tid IN ("+tidsdelete+")");
			dataBaseService.runQuery("DELETE FROM jrun_activities WHERE tid IN ("+tidsdelete+")");
			dataBaseService.runQuery("DELETE FROM jrun_activityapplies WHERE tid IN ("+tidsdelete+")");
			dataBaseService.runQuery("DELETE FROM jrun_typeoptionvars WHERE tid IN ("+tidsdelete+")");
		}
		String fids = request.getParameter("fids");
		if(fids!=null && !fids.equals("") && !fids.equals("-1")){
			Common.updateforumcount(fids);
		}
		Common.updatemodworks(settings, uid, timestamp, "DLP", postcount);
		settings = null;
		try {
			String shalert = "符合条件的" + threadcount + "个主题和" + postcount + "个贴子被删除";
			response.getWriter().write( "<script type='text/javascript'>alert('" + shalert + "');</script>");
			response.getWriter().write("<script>parent.$('pruneforum').searchsubmit.click();</script>");
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}

	private String toPIDArray(String pids) {
		StringBuffer sb = new StringBuffer("pidarray[");
		sb.append(pids);
		sb.append("]");
		return sb.toString();
	}

	public ActionForward pagePrune(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		HttpSession session = request.getSession();
		PruneForm pf = (PruneForm) session.getAttribute("pf"); 
		if(pf==null){
			Common.requestforward(response, "admincp.jsp?action=prune");
			return null;
		}
		request.setAttribute("startTime", pf.getStarttime());
		short groupid = (Short)session.getAttribute("jsprun_groupid");
		Members member = (Members)session.getAttribute("user");
		int timeoffset=(int)((Float)session.getAttribute("timeoffset")*3600);
		int timestamp = (Integer)(request.getAttribute("timestamp"));
		if(member.getAdminid()==3){
			StringBuffer fidsbuffer = new StringBuffer();
			List<Map<String,String>> fidslist = dataBaseService.executeQuery("SELECT fid FROM jrun_moderators WHERE uid='"+member.getUid()+"'");
			for(Map<String,String> fids:fidslist){
				fidsbuffer.append(","+fids.get("fid"));
			}
			if(fidsbuffer.length()>0){	
				pf.setFid(fidsbuffer.substring(1));
				List<Map<String,String>> forumList=dataBaseService.executeQuery("SELECT name from jrun_forums where fid in ( "+fidsbuffer.substring(1)+" ) ORDER BY type,displayorder");
				StringBuffer forumname = new StringBuffer();
				for(Map<String,String> forums:forumList){
					forumname.append(","+forums.get("name"));
				}
				if(forumname.length()>0){
					request.setAttribute("forumselect", forumname.substring(1));
				}else{
					request.setAttribute("forumselect", "无");
				}
			}else{
				pf.setFid("-1");
			}
		}else{
			request.setAttribute("forumselect", Common.forumselect(false, false,groupid,member!=null?member.getExtgroupids():"",pf.getForums()+"",false));
		}
		if(member.getAdminid()==2||member.getAdminid()==3){
			String endTime = Common.gmdate("yyyy-MM-dd", (int)(timestamp+timeoffset)); 
			pf.setEndtime(endTime);
		}
		int currentpage = 1;
		String page = request.getParameter("page");
		currentpage = page == null || page.equals("") ? 1 : Integer.valueOf(page.trim());
		if (pf.isForm()) {
			String sql = postsService.prunsql(pf,timeoffset);
			StringBuffer sb = new StringBuffer();
			List<Map<String,String>> countlist = dataBaseService.executeQuery("select count(*) count "+sql);
			int totalSize = Common.toDigit(countlist.get(0).get("count")); 
			int totalPage = 1; 
			int pageSize = 10;  
			int startid = 0; 
			if (totalSize > pageSize) {
				if (totalSize % pageSize == 0) {
					totalPage = (int) ((double) totalSize / (double) pageSize);
				} else {
					totalPage = (int) (1.0d + (double) totalSize
							/ (double) pageSize);
				}
			} else {
				totalPage = 1;
			}
			if (currentpage > 0) {
				if (currentpage > totalPage) {
					currentpage = totalPage;
				}
				startid = pageSize * (currentpage - 1);
			}
			List<Map<String,String>> postlist = dataBaseService.executeQuery("select p.*,f.name,t.subject as tsubject "+sql+" limit "+startid+",10");
			LogPage loginpage = new LogPage(totalSize,10,currentpage);
			request.setAttribute("logpage", loginpage);
			if (postlist != null) {
				for (int i = 0; i < postlist.size(); i++) {
					sb.append(postlist.get(i).get("pid"));
					sb.append(",");
				}
			}
			request.setAttribute("sb", sb);
			request.setAttribute("postsList", postlist);
			request.setAttribute("countPosts", totalSize);
		}
		if (member.getAdminid() != 1) {
			request.setAttribute("isAdmin", "admin");
		}
		request.setAttribute("notfirst", "notfirst");
		return mapping.findForward("toPruneForum");
	}
}

⌨️ 快捷键说明

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