📄 recyclebinaction.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 + -