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

📄 postsaction.java

📁 论坛软件系统亦称电子公告板(BBS)系统
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
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 + -