📄 postsaction.java
字号:
package cn.jsprun.struts.action;
import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import java.util.TreeMap;
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.Attachtypes;
import cn.jsprun.domain.Bbcodes;
import cn.jsprun.domain.Imagetypes;
import cn.jsprun.domain.Members;
import cn.jsprun.domain.Posts;
import cn.jsprun.domain.Smilies;
import cn.jsprun.domain.Words;
import cn.jsprun.page.LogPage;
import cn.jsprun.service.posts.AttachtypesService;
import cn.jsprun.service.posts.BbcodesService;
import cn.jsprun.service.posts.ImagetypesService;
import cn.jsprun.service.posts.PmsService;
import cn.jsprun.service.posts.PostsService;
import cn.jsprun.service.posts.SmiliesService;
import cn.jsprun.service.posts.WordsService;
import cn.jsprun.service.system.DataBaseService;
import cn.jsprun.struts.form.PmsForm;
import cn.jsprun.struts.form.PostsForm;
import cn.jsprun.struts.form.PostsPageForm;
import cn.jsprun.struts.form.posts.ModrepliesPageForm;
import cn.jsprun.struts.form.posts.ThreadsForm;
import cn.jsprun.utils.Base64Decoder;
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.FormDataCheck;
import cn.jsprun.utils.JspRunConfig;
public class PostsAction extends DispatchAction {
private PostsService postsService = (PostsService) BeanFactory.getBean("postsService");
private PmsService pmsService = (PmsService) BeanFactory.getBean("pmsService");
private WordsService wordsService = (WordsService) BeanFactory.getBean("wordsService");
private SmiliesService smiliesService = (SmiliesService) BeanFactory.getBean("smiliesService");
private AttachtypesService attachtypesService = (AttachtypesService) BeanFactory.getBean("attachtypesService");
private BbcodesService bbcodesService = (BbcodesService) BeanFactory.getBean("bbcodesService");
private DataBaseService dataBaseService = (DataBaseService) BeanFactory.getBean("dataBaseService");
private ImagetypesService typeServer = (ImagetypesService) BeanFactory.getBean("imagetypesService");
private DataParse dataParse= (DataParse)BeanFactory.getBean("dataParse");
@SuppressWarnings("unchecked")
public ActionForward auditingNewThreads(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
ServletContext context = request.getSession().getServletContext();
String filter = request.getParameter("filter");
String modfid = request.getParameter("modfid");
PostsForm pf = new PostsForm();
if (FormDataCheck.isNotNullAndNotEmpty(filter)) {
pf.setFilter(filter.trim());
}
if (FormDataCheck.isNotNullAndNotEmpty(modfid)) {
pf.setFid(Short.valueOf(modfid));
}
request.setAttribute("pastsPage", pf);
PostsPageForm ppf = postsService.fidnByForums(pf);
ppf.setList(request.getContextPath());
request.setAttribute("postsPageForm", ppf);
String sql="SELECT f.fid,f.name FROM jrun_forums f LEFT JOIN jrun_forumfields ff USING(fid) WHERE f.type <>'group' AND f.status>0";
List<Map<String,String>> forumList=dataBaseService.executeQuery(sql);
request.setAttribute("forumList", forumList);
String modreasons=((Map<String,String>)context.getAttribute("fsmap")).get("modreasons");
request.setAttribute("modreasons",modreasons!=null?modreasons.split("\r\n"):"");
return mapping.findForward("tothreads");
}
@SuppressWarnings("unchecked")
public ActionForward batchModthreads(ActionMapping mapping,ActionForm form, HttpServletRequest request,HttpServletResponse response) {
String modsubmit = request.getParameter("modsubmit");
if(modsubmit==null){
Common.requestforward(response, "admincp.jsp?action=modthreads");
return null;
}
ServletContext context=request.getSession().getServletContext();
Map<String,String> settings = (Map<String,String>)context.getAttribute("fsmap");
Members members = (Members) request.getSession().getAttribute("members");
List<String> validateList = new ArrayList<String>();
StringBuffer deleteids = new StringBuffer();
List<String> ignoreList = new ArrayList<String>();
List<PmsForm> pmsValidateList = new ArrayList<PmsForm>();
List<PmsForm> psmDeleteList = new ArrayList<PmsForm>();
String auditing = request.getParameter("auditing");
String[] audiArr = auditing.split(",");
for (int i = 0; i < audiArr.length; i++) {
String postsValue = request.getParameter(audiArr[i]);
if (postsValue != null) {
if (postsValue.equals("validate")) {
String pmsMessage = request.getParameter(toPmsPostspid(audiArr[i])).trim();
if (FormDataCheck.isNotNullAndNotEmpty(pmsMessage)) {
String subject = request.getParameter(toPostsSubject(audiArr[i])).trim();
String authorid = request.getParameter(toAuthor(audiArr[i])).trim();
PmsForm pf = new PmsForm(true, Integer.valueOf(authorid), subject, Integer.valueOf(audiArr[i]), pmsMessage,members.getUsername(),members.getUid());
pmsValidateList.add(pf);
}
List<Map<String,String>> threadpostlist = dataBaseService.executeQuery("select t.tid,t.fid,t.subject,t.digest,t.authorid,t.author,t.dateline from jrun_threads t left join jrun_posts p on t.tid=p.tid where p.pid="+audiArr[i]);
Map<String,String>threadpost = threadpostlist.get(0);
threadpostlist = null;
List<Map<String,String>> forumsfildlist = dataBaseService.executeQuery("select f.fup,f.type,ff.postcredits,ff.digestcredits from jrun_forums f left join jrun_forumfields ff on f.fid=ff.fid where f.fid="+threadpost.get("fid"));
Map<String,String> forummap = forumsfildlist.get(0);
forumsfildlist = null;
int authorid=Common.toDigit(threadpost.get("authorid"));
String userName=null;
if(authorid>0){
Map<Integer, Integer> postcredits = dataParse.characterParse(forummap.get("postcredits"),false);
String creditspolicy = settings.get("creditspolicy");
Map creditspolicys=dataParse.characterParse(creditspolicy,false);
if(postcredits==null||postcredits.size()<=0)
{
postcredits=(Map<Integer,Integer>)creditspolicys.get("post");
}
if (Common.toDigit(threadpost.get("digest")) > 0) {
Map<Integer, Integer> digestcredits = dataParse.characterParse(forummap.get("digestcredits"),false);
if(digestcredits==null||digestcredits.size()<=0)
{
digestcredits=(Map<Integer,Integer>)creditspolicys.get("digest");
}
if (Common.toDigit(threadpost.get("digest")) > 0) {
Set<Integer> keys = digestcredits.keySet();
for (Integer key : keys) {
postcredits.put(key,(postcredits.get(key) != null ? postcredits.get(key) : 0)+ digestcredits.get(key));
}
}
}
Common.updatepostcredits("+", authorid, postcredits, Common.toDigit(threadpost.get("dateline")));
Common.updatepostcredits(authorid, settings.get("creditsformula"));
userName=threadpost.get("author");
}
else{
userName="匿名";
}
String subject = threadpost.get("subject").replaceAll("\t", " ");
String lastpost = threadpost.get("tid") + "\t" +Common.dhtmlspecialchars(Common.cutstr(Common.htmlspecialchars(subject), 40, null)) + "\t" + threadpost.get("dateline") + "\t"+ userName;
dataBaseService.runQuery("UPDATE jrun_forums set lastpost='"+lastpost+"',threads=threads+1,posts=posts+1 where fid="+threadpost.get("fid"));
if (forummap.get("type").equals("sub")) {
dataBaseService.runQuery("UPDATE jrun_forums SET lastpost='"+ lastpost + "' WHERE fid=" + forummap.get("fup"));
}
validateList.add(audiArr[i]);
}
if (postsValue.equals("delete")) {
String pms = request.getParameter(toPmsPostspid(audiArr[i])).trim();
if (FormDataCheck.isNotNullAndNotEmpty(pms)) {
String subject = request.getParameter(toPostsSubject(audiArr[i])).trim();
String authorid = request.getParameter(toAuthor(audiArr[i])).trim();
PmsForm pf = new PmsForm(false, Integer.valueOf(authorid), subject, Integer.valueOf(audiArr[i]), pms,members.getUsername(),members.getUid());
psmDeleteList.add(pf);
}
deleteids.append(audiArr[i]+",");
}
if (postsValue.equals("ignore")) {
ignoreList.add(audiArr[i]);
}
}
}
if(deleteids.length()>0){
deleteids.deleteCharAt(deleteids.length()-1);
List<Map<String,String>> attalist = dataBaseService.executeQuery("select attachment,thumb,remote from jrun_attachments where tid in ("+ deleteids.toString() +")");
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;
dataBaseService.runQuery("DELETE FROM jrun_attachments WHERE pid IN ("+deleteids.toString()+")");
dataBaseService.runQuery("DELETE FROM jrun_posts WHERE pid IN ("+deleteids.toString()+")");
dataBaseService.runQuery("DELETE FROM jrun_polloptions WHERE pid IN ("+deleteids.toString()+")");
dataBaseService.runQuery("DELETE FROM jrun_polls WHERE pid IN ("+deleteids.toString()+")");
dataBaseService.runQuery("DELETE FROM jrun_threads WHERE pid IN ("+deleteids.toString()+")");
}
pmsService.insertPmsList(pmsValidateList);
pmsService.insertPmsList(psmDeleteList);
postsService.ignorePostsIDArray(ignoreList);
List<Posts> valiPostsList = postsService.validatePostsIDArray(validateList);
if (valiPostsList != null && valiPostsList.size() > 0)
request.setAttribute("validateList", valiPostsList);
PostsPageForm ppf = new PostsPageForm();
validateList = null;
ignoreList =null;
pmsValidateList = null;
psmDeleteList = null;
ppf.setList(request.getContextPath());
request.setAttribute("postsPageForm", ppf);
request.setAttribute("notfirst", "notfirst");
String sql="SELECT f.fid,f.name FROM jrun_forums f LEFT JOIN jrun_forumfields ff USING(fid) WHERE f.type <>'group' AND f.status>0";
List<Map<String,String>> forumList=dataBaseService.executeQuery(sql);
request.setAttribute("forumList", forumList);
String modreasons=settings.get("modreasons");
request.setAttribute("modreasons",modreasons!=null?modreasons.split("\r\n"):"");
return mapping.findForward("tothreads");
}
private String toPmsPostspid(String audiArr) {
StringBuffer sb = new StringBuffer("pm_");
sb.append(audiArr);
return sb.toString();
}
private String toPostsSubject(String audiArr) {
StringBuffer sb = new StringBuffer("hidden_");
sb.append(audiArr);
return sb.toString();
}
private String toAuthor(String audiArr) {
StringBuffer sb = new StringBuffer("author_");
sb.append(audiArr);
return sb.toString();
}
@SuppressWarnings("unchecked")
public ActionForward pagePosts(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
ServletContext context=request.getSession().getServletContext();
String page = request.getParameter("page").trim();
String filter = request.getParameter("filter");
String modfid = request.getParameter("modfid");
PostsForm pf = new PostsForm();
if (FormDataCheck.isNotNullAndNotEmpty(filter)) {
pf.setFilter(filter.trim());
}
if (FormDataCheck.isNotNullAndNotEmpty(modfid)) {
pf.setFid(Short.valueOf(modfid));
}
request.setAttribute("pastsPage", pf);
PostsPageForm ppf = postsService.fidnByForums(pf);
ppf.setCurrentPage(Integer.valueOf(page));
ppf.setList(request.getContextPath());
request.setAttribute("postsPageForm", ppf);
String sql="SELECT f.fid,f.name FROM jrun_forums f LEFT JOIN jrun_forumfields ff USING(fid) WHERE f.type <>'group' AND f.status>0";
List<Map<String,String>> forumList=dataBaseService.executeQuery(sql, new String[]{"fid","name"});
request.setAttribute("forumList", forumList);
String modreasons=((Map<String,String>)context.getAttribute("fsmap")).get("modreasons");
request.setAttribute("modreasons",modreasons!=null?modreasons.split("\r\n"):"");
return mapping.findForward("tothreads");
}
@SuppressWarnings("unchecked")
public ActionForward pageModreplies(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
ServletContext context = request.getSession().getServletContext();
String page = request.getParameter("page").trim();
String filter = request.getParameter("filter");
String modfid = request.getParameter("modfid");
PostsForm pf = new PostsForm();
if (FormDataCheck.isNotNullAndNotEmpty(filter)) {
pf.setFilter(filter.trim());
}
if (FormDataCheck.isNotNullAndNotEmpty(modfid)) {
pf.setFid(Short.valueOf(modfid));
}
request.setAttribute("pastsPage", pf);
ModrepliesPageForm mpf = postsService.fidnByModreplies(pf);
mpf.setCurrentPage(Integer.valueOf(page));
mpf.setList(request.getContextPath());
request.setAttribute("modrepliesPageForm", mpf);
String sql="SELECT f.fid,f.name FROM jrun_forums f LEFT JOIN jrun_forumfields ff USING(fid) WHERE f.type <>'group' AND f.status>0";
List<Map<String,String>> forumList=dataBaseService.executeQuery(sql);
request.setAttribute("forumList", forumList);
String modreasons=((Map<String,String>)context.getAttribute("fsmap")).get("modreasons");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -