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