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

📄 recyclebinaction.java

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

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
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.service.posts.RecyclebinService;
import cn.jsprun.service.system.DataBaseService;
import cn.jsprun.struts.form.posts.PageForm;
import cn.jsprun.struts.form.posts.RecyclebinForm;
import cn.jsprun.utils.BeanFactory;
import cn.jsprun.utils.Common;
import cn.jsprun.utils.DataParse;

public class RecyclebinAction extends DispatchAction {
	private RecyclebinService recyclebinService = (RecyclebinService) BeanFactory.getBean("recyclebinService");
	private DataBaseService dataBaseService = (DataBaseService) BeanFactory.getBean("dataBaseService");
	private DataParse dataParse= (DataParse)BeanFactory.getBean("dataParse");
	public ActionForward fromRecyclebin(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		String searchsubmit = request.getParameter("searchsubmit");
		if(searchsubmit==null){
			Common.requestforward(response, "admincp.jsp?action=recyclebin");
			return null;
		}
		HttpSession session = request.getSession();
		int timeoffset=(int)((Float)session.getAttribute("timeoffset")*3600);
		StringBuffer tids = new StringBuffer();
		RecyclebinForm rf = (RecyclebinForm) form;
		String sql = recyclebinService.findByAll(rf,timeoffset);
		int totalSize = Common.toDigit(dataBaseService.executeQuery("select count(*) count "+sql).get(0).get("count"));
		int totalPage = 1; 
		int pageSize = 10;  
		int startid = 0; 
		int currentpage = 1;
		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) {
		} else {
			if (currentpage > totalPage) {
				currentpage = totalPage;
			}
			startid = pageSize * (currentpage - 1);
		}
		List<Map<String,String>> list = dataBaseService.executeQuery("select t.tid,t.fid,t.authorid,t.author,t.subject,t.views,t.replies,t.dateline,m.uid,m.username,m.dateline as mdateline,f.name,p.message "+sql+" limit "+startid+","+pageSize);
		for (Map<String,String> tid:list) {
			tids.append(tid.get("tid"));
			tids.append(",");
		}
		request.setAttribute(PageForm.CURRENTPAGE, currentpage);  
		request.setAttribute(PageForm.TOTALPAGE,totalPage); 
		request.setAttribute(PageForm.TOTALSIZE, totalSize); 
		request.setAttribute("hiddentids", tids);
		request.setAttribute("showlist", list);
		request.getSession().setAttribute("recyclebinform", rf); 
		request.setAttribute("notfirst", "notfirst");
		short groupid = (Short)session.getAttribute("jsprun_groupid");
		Members member = (Members)session.getAttribute("user");
		request.setAttribute("forumselect", Common.forumselect(false, false,groupid,member!=null?member.getExtgroupids():"",rf.getInforum()+"",false));
		return mapping.findForward("toRecyclebin");
	}
	public ActionForward pageRecyclebin(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		int currentpage = 1;
		String page = request.getParameter("page");
		currentpage = page == null || page.equals("") ? 1 : Integer.valueOf(page);
		StringBuffer tids = new StringBuffer();
		RecyclebinForm rf = (RecyclebinForm)request.getSession().getAttribute("recyclebinform");
		if(rf==null){
			Common.requestforward(response, "admincp.jsp?action=recyclebin");
			return null;
		}
		HttpSession session = request.getSession();
		int timeoffset=(int)((Float)session.getAttribute("timeoffset")*3600);
		String sql = recyclebinService.findByAll(rf,timeoffset);
		int totalSize = Common.toDigit(dataBaseService.executeQuery("select count(*) count "+sql).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) {
		} else {
			if (currentpage > totalPage) {
				currentpage = totalPage;
			}
			startid = pageSize * (currentpage - 1);
		}
		List<Map<String,String>> list = dataBaseService.executeQuery("select t.tid,t.fid,t.authorid,t.author,t.subject,t.views,t.replies,t.dateline,m.uid,m.username,m.dateline as mdateline,f.name,p.message "+sql+" limit "+startid+","+pageSize);
		for (Map<String,String> tid:list) {
			tids.append(tid.get("tid"));
			tids.append(",");
		}
		short groupid = (Short)session.getAttribute("jsprun_groupid");
		Members member = (Members)session.getAttribute("user");
		request.setAttribute("forumselect", Common.forumselect(false, false,groupid,member!=null?member.getExtgroupids():"",rf.getInforum()+"",false));
		request.setAttribute(PageForm.CURRENTPAGE, currentpage);  
		request.setAttribute(PageForm.TOTALPAGE,totalPage); 
		request.setAttribute(PageForm.TOTALSIZE, totalSize); 
		request.setAttribute("hiddentids", tids);
		request.setAttribute("showlist", list);
		request.setAttribute("notfirst", "notfirst");
		return mapping.findForward("toRecyclebin");
	}
	@SuppressWarnings("unchecked")
	public ActionForward deleteDayOld(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
		String rbsubmit = request.getParameter("rbsubmit");
		if(rbsubmit==null){
			Common.requestforward(response, "admincp.jsp?action=recyclebin");
			return null;
		}
		Integer deleteNumber = -1;
		String dayold = request.getParameter("days");
		Integer days = 0;
		try {
			days = Integer.valueOf(dayold);
			if (days < 0) {
				days = 0;
			}
		} catch (NumberFormatException nfe) {
			days = 0;
		}
		Map<String,String> settings = (Map<String,String>)request.getSession().getServletContext().getAttribute("fsmap");
		String path = servlet.getServletContext().getRealPath("/")+settings.get("attachdir")+"/";
		deleteNumber = recyclebinService.deleteDayOld(days,path);
		String success = "回收站更新成功,共 " + deleteNumber + " 个主题被删除,0 个主题被恢复。";
		request.setAttribute("resultInfo", success);
		return mapping.findForward("result");
	}
	@SuppressWarnings("unchecked")
	public ActionForward batchRecyclebin(ActionMapping mapping,
			ActionForm form, HttpServletRequest request, HttpServletResponse response) {
		String rbsubmit = request.getParameter("rbsubmit");
		if(rbsubmit==null){
			Common.requestforward(response, "admincp.jsp?action=recyclebin");
			return null;
		}
		HttpSession session = request.getSession();
		Members members = (Members)session.getAttribute("members");
		Integer deleteNumber = 0;
		Integer undeleteNumber = 0;
		List<Integer> deletelist = new ArrayList<Integer>(); 
		String hiddenTids = request.getParameter("hiddentids");
		int timestamp = (Integer)(request.getAttribute("timestamp"));
		int uid = (Integer)session.getAttribute("jsprun_uid");
		Map<String,String> settings = (Map<String,String>)session.getServletContext().getAttribute("fsmap");
		String[] tids = hiddenTids.split(",");
		StringBuffer undeletebuffer = new StringBuffer("0");
		if (tids != null && tids.length > 0) {
			for (int i = 0; i < tids.length; i++) {
				String value = request.getParameter(getMod(tids[i]));
				if (value != null && !value.equals("")) {
					if (value.equals("delete")) {
						deletelist.add(Integer.valueOf(tids[i]));
						List<Map<String,String>> attachlist = dataBaseService.executeQuery("select attachment,thumb,remote from jrun_attachments where tid="+tids[i]);
						if(attachlist!=null && attachlist.size()>0){
							String path = servlet.getServletContext().getRealPath("/")+settings.get("attachdir")+"/";
							for(Map<String,String> attach: attachlist){
								Common.dunlink(attach.get("attachment"),Byte.valueOf(attach.get("thumb")),Byte.valueOf(attach.get("remote")), path);
							}
						}
					}
					if (value.equals("undelete")) {
						undeleteNumber++;
						undeletebuffer.append(","+tids[i]);
						List<Map<String,String>> threadlist = dataBaseService.executeQuery("select replies,fid from jrun_threads where tid="+tids[i]);
						int replies = Common.toDigit(threadlist.get(0).get("replies"))+1;
						dataBaseService.runQuery("update jrun_forums set threads=threads+1,posts=posts+"+replies+" where fid="+threadlist.get(0).get("fid"));
						threadlist = null;
						List<Map<String,String>> postlist = dataBaseService.executeQuery("select authorid from jrun_posts where tid="+tids[i]);
						if(postlist!=null && postlist.size()>0){
							for(Map<String,String> post:postlist){
								dataBaseService.runQuery("update jrun_members set posts=posts+1 where uid="+post.get("authorid"));
							}
						}
						postlist = null;
						dataBaseService.runQuery("INSERT INTO jrun_threadsmod (tid, uid, username, dateline, action, expiration, status,magicid) VALUES('"+tids[i]+"','"+uid+"','"+members.getUsername()+"','"+timestamp+"','UDL','0','1','0')");
						Common.updatemodworks(settings, uid, timestamp, "UDL", replies);
						
					}
					if (value.equals("ignore")) {

					}
				}
			}
			dataBaseService.runQuery("UPDATE jrun_posts SET invisible='0' WHERE tid IN ("+undeletebuffer.toString()+")");
			dataBaseService.runQuery("UPDATE jrun_threads SET displayorder='0', moderated='1' WHERE tid IN ("+undeletebuffer.toString()+")");
			List<Map<String,String>> threadlist = dataBaseService.executeQuery("select fid,first,authorid from jrun_posts where tid in ("+undeletebuffer.toString()+")");
			Map creditspolicys=dataParse.characterParse(settings.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 = settings.get("creditsformula");
			for(Map<String,String> thread:threadlist){
				if(thread.get("first").equals("1")){
					Common.updatepostcredits("+", Common.toDigit(thread.get("authorid")), threadcredits, timestamp);
					Common.updatepostcredits(Common.toDigit(thread.get("authorid")), creditsformula);
				}else{
					Common.updatepostcredits("+", Common.toDigit(thread.get("authorid")), postcredits, timestamp);
					Common.updatepostcredits(Common.toDigit(thread.get("authorid")), creditsformula);
				}
			}
			settings = null;threadlist=null;postcredits=null;threadcredits=null;
			deleteNumber = recyclebinService.deleteArray(deletelist);
			deletelist=null;
		}
		String success = "回收站更新成功,共 " + deleteNumber + " 个主题被删除,"+ undeleteNumber + " 个主题被恢复。";
		request.setAttribute("resultInfo", success);
		return mapping.findForward("result");
	}

	private String getMod(String tids) {
		StringBuffer sb = new StringBuffer("mod[");
		sb.append(tids);
		sb.append("]");
		return sb.toString();
	}
}

⌨️ 快捷键说明

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