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

📄 miscaction.java

📁 论坛软件系统亦称电子公告板(BBS)系统
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
package cn.jsprun.struts.foreg.actions;

import java.io.IOException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
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.Forums;
import cn.jsprun.domain.Members;
import cn.jsprun.domain.Pms;
import cn.jsprun.domain.Polloptions;
import cn.jsprun.domain.Polls;
import cn.jsprun.domain.Posts;
import cn.jsprun.domain.Settings;
import cn.jsprun.domain.Threads;
import cn.jsprun.domain.Threadsmod;
import cn.jsprun.domain.Usergroups;
import cn.jsprun.foreg.service.PmsService;
import cn.jsprun.foreg.service.PolloptionsService;
import cn.jsprun.foreg.service.PollsService;
import cn.jsprun.foreg.vo.topicadmin.OtherBaseVO;
import cn.jsprun.service.forumsedit.ForumService;
import cn.jsprun.service.posts.PostsService;
import cn.jsprun.service.posts.ThreadsService;
import cn.jsprun.service.system.DataBaseService;
import cn.jsprun.service.user.MemberService;
import cn.jsprun.service.user.UserGroupService;
import cn.jsprun.utils.BeanFactory;
import cn.jsprun.utils.Common;
import cn.jsprun.utils.DataParse;
import cn.jsprun.utils.ForumInit;
import cn.jsprun.utils.JspRunConfig;
import cn.jsprun.utils.Log;
import cn.jsprun.utils.Mail;
import cn.jsprun.vo.logs.RatelogVO;

public class MiscAction extends DispatchAction {
	private MemberService memberService = (MemberService) BeanFactory.getBean("memberService");
	private DataBaseService dataBaseService = (DataBaseService) BeanFactory.getBean("dataBaseService");
	private UserGroupService userGroupService = (UserGroupService) BeanFactory.getBean("userGroupService");
	private ThreadsService threadService = (ThreadsService) BeanFactory.getBean("threadsService");
	private PostsService postService = (PostsService) BeanFactory.getBean("postsService");
	private ForumService forumService = (ForumService) BeanFactory.getBean("forumService");
	private PmsService pmsServer = (PmsService) BeanFactory.getBean("pmsServer");
	private PolloptionsService optionService = (PolloptionsService) BeanFactory.getBean("polloptionsService");
	private PollsService pollService = (PollsService) BeanFactory.getBean("pollsService");
	private DataParse dataParse = (DataParse) BeanFactory.getBean("dataParse");
	@SuppressWarnings("unchecked")
	public ActionForward emailfriend(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		HttpSession session = request.getSession();
		int jsprun_uid = (Integer)(session.getAttribute("jsprun_uid"));
		String boardurl = (String) session.getAttribute("boardurl");
		String message = "";
		String inajax = request.getParameter("inajax");
		if (jsprun_uid == 0) {
			message = "对不起,您还没有登录,无法进行此操作。";
			if(inajax==null){
				request.setAttribute("errorInfo", message);
				return mapping.findForward("showMessage");
			}else{
				this.showMessage(true, message, response, false);
				return null;
			}
		}
		String tid = request.getParameter("tid");
		String sendsubmit = request.getParameter("sendsubmit");
		Map<String,String> settings=ForumInit.settings;
		List<Map<String,String>> threads = dataBaseService.executeQuery("select t.tid,t.subject,f.name,f.fup,f.fid,f.type from jrun_threads as t left join jrun_forums as f on t.fid=f.fid where t.tid='"+tid+"'");
		if(threads==null || threads.size()<=0){
			message = "未定义操作,请返回。";
			if(inajax==null){
				request.setAttribute("errorInfo", message);
				return mapping.findForward("showMessage");
			}else{
				this.showMessage(true, message, response, false);
				return null;
			}
		}
		Map<String,String> thread = threads.get(0);threads=null;
		if (sendsubmit == null) {
			String navigation = "<a href='forumdisplay.jsp?fid="+thread.get("fid")+"'>"+thread.get("name")+"</a> &raquo; <a href='viewthread.jsp?tid="+thread.get("tid")+"'>"+thread.get("subject")+"</a>";
			if(thread.get("type").equals("sub")){
				Map<String,String> parentforum = dataBaseService.executeQuery("select fid,name from jrun_forums where fid="+thread.get("fup")).get(0);
				navigation = "<a href='forumdisplay.jsp?fid="+parentforum.get("fid")+"'>"+parentforum.get("name")+"</a> &raquo; <a href='forumdisplay.jsp?fid="+thread.get("fid")+"'>"+thread.get("name")+"</a> &raquo <a href='viewthread.jsp?tid="+thread.get("tid")+"'>"+thread.get("subject")+"</a>";
			}
			request.setAttribute("navigation", navigation);
			Members member = (Members)session.getAttribute("user");
			String content = "你好!我在 "+settings.get("bbname")+" 看到了这篇帖子,认为很有价值,特推荐给你。"+ thread.get("subject") + "\n地址 " + boardurl+ "viewthread.jsp?tid=" + tid + "\n希望你能喜欢";
			request.setAttribute("member", member);
			request.setAttribute("content", content);
			request.setAttribute("tid", Integer.valueOf(tid));
			thread = null;
			return mapping.findForward("toemailfriend");
		} else {
			String jsprun_userss = (String)(session.getAttribute("jsprun_userss"));
			String fromname = request.getParameter("fromname");
			String fromemail = request.getParameter("fromemail");
			String sendtoname = request.getParameter("sendtoname");
			String sendtoemail = request.getParameter("sendtoemail");
			if (!checkNull(fromname) || !checkNull(fromemail)|| !checkNull(sendtoname) || !checkNull(sendtoemail)) {
				message = "相关项目没有填写完整,请返回修改。";
				if(inajax==null){
					request.setAttribute("errorInfo", message);
					return mapping.findForward("showMessage");
				}else{
					writeMessage(response,message,true);
					return null;
				}
			}
			message = "您的推荐已经通过 Email 发给朋友,现在将转入原帖。";
			Map<String,String> mails=dataParse.characterParse(settings.get("mail"), false);
			mails.put("jsprun_root",servlet.getServletContext().getRealPath("/"));
			Mail mail=new Mail(mails);
			mail.sendMessage(fromname+" <"+fromemail+">",sendtoname+" <"+sendtoemail+">","推荐给您: "+thread.get("subject"),"\n"+sendtoname+",\n这封信是由 "+settings.get("bbname")+" 的 "+jsprun_userss+" 发送的。\n\n您收到这封邮件,是因为在 "+jsprun_userss+" 通过我们论坛的“推荐给朋友”\n功能推荐了如下的内容给您,如果您对此不感兴趣,请忽略这封邮件。您不\n需要退订或进行其他进一步的操作。\n\n----------------------------------------------------------------------\n信件原文开始\n----------------------------------------------------------------------\n\n"+message+"\n\n----------------------------------------------------------------------\n信件原文结束\n----------------------------------------------------------------------\n\n请注意这封信仅仅是由用户使用 “推荐给朋友”发送的,不是论坛官方邮件,\n论坛管理团队不会对这类邮件负责。\n\n欢迎您访问 "+settings.get("bbname")+"\n"+boardurl,null);
			if(inajax==null){
				request.setAttribute("successInfo", message);
				request.setAttribute("requestPath", "viewthread.jsp?tid="+tid);
				return mapping.findForward("showMessage");
			}else{
				writeMessage(response,message,false);
				return null;
			}
		}
	}

	@SuppressWarnings("unchecked")
	public ActionForward report(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		HttpSession session = request.getSession();
		int timestamp = (Integer)(request.getAttribute("timestamp"));
		String tid = request.getParameter("tid");
		String fid = request.getParameter("fid");
		String pid = request.getParameter("pid");
		String reportsubmit = request.getParameter("reportsubmit");
		String boardurl = (String) session.getAttribute("boardurl");
		int jsprun_uid = (Integer) (session.getAttribute("jsprun_uid")==null?0:session.getAttribute("jsprun_uid"));
		request.setAttribute("tid", Integer.valueOf(tid));
		request.setAttribute("fid", fid);
		request.setAttribute("pid", pid);
		Map<String,String> settings = (Map<String,String>)session.getServletContext().getAttribute("fsmap");
		String reportpost = settings.get("reportpost");
		String message = "";
		if (reportpost.equals("0")) {
			message = "对不起,管理员关闭了报告帖子功能,请返回。";
			this.showMessage(true, message, response, false);
			return null;
		}
		if (jsprun_uid == 0) {
			message = "对不起,您还没有登录,无法进行此操作。";
			this.showMessage(true, message, response, false);
			return null;
		}
		Threads tread = threadService.findByTid(convertInt(tid));
		if (tread == null) {
			message = "未定义操作,请返回。";
			this.showMessage(true, message, response, false);
			return null;
		}
		String floodctrls = settings.get("floodctrl");
		settings = null;
		int floodctrl = convertInt(floodctrls) * 3;
		if (timestamp - tread.getLastpost() < floodctrl) {
			message = "对不起,您两次报告间隔不得少于 " + floodctrl + " 秒,请返回";
			this.showMessage(true, message, response, false);
			return null;
		}
		request.setAttribute("reportpost", reportpost);
		if (reportsubmit == null) {
			return mapping.findForward("toreportpost");
		} else {
			String reason = request.getParameter("reason");
			Members member = (Members)session.getAttribute("user");
			String posturl = boardurl + "viewthread.jsp?tid=" + tid + "#pid"+ pid;
			String uids = "0";
			String adminids = "";
			String tos1 = request.getParameter("to1");
			String tos2 = request.getParameter("to2");
			String tos3 = request.getParameter("to3");
			if (tos1 != null || tos2 != null || tos3 != null) {
				if (tos3 != null) {
					String modertarhql = "select m.uid from jrun_moderators m where m.fid='"+ fid+"'";
					List<Map<String, String>> modertar = dataBaseService.executeQuery(modertarhql);
					if (modertar != null) {
						for (int i = 0; i < modertar.size(); i++) {
							Map modMap = modertar.get(i);
							uids += "," + modMap.get("uid");
						}
					}
					modertar = null;
				}
				if (uids.equals("0") || (convertInt(reportpost) >= 2 && tos2 != null)) {
					adminids += ",2";
				}
				if (reportpost.equals("3") && tos1 != null) {
					adminids += ",1";
				}
				if (!adminids.equals("")) {
					String modertarhql = "select m.uid from jrun_members m where adminid in ("+ adminids.substring(1) + ")";
					List<Map<String, String>> memberslist = dataBaseService.executeQuery(modertarhql);
					if(memberslist==null || memberslist.size()<=0){
						memberslist = dataBaseService.executeQuery("SELECT uid FROM jrun_members WHERE adminid='1'");
					}
					if (memberslist != null && memberslist.size()>0) {
						for (int i = 0; i < memberslist.size(); i++) {
							Map modMap = memberslist.get(i);
							uids += "," + modMap.get("uid");
						}
					}
					memberslist = null;
				}
				String modertarhql = "SELECT uid, ignorepm FROM jrun_memberfields  WHERE uid IN ("+ uids + ")";
				List<Map<String, String>> membersfildslist = dataBaseService.executeQuery(modertarhql);
				List<Pms> pmslist = new ArrayList<Pms>();
				if (membersfildslist != null) {
					String repex = "(^{ALL}$|(,|^)\\s*" + member.getUsername()+ "\\s*(,|$))";
					for (int i = 0; i < membersfildslist.size(); i++) {
						Map<String,String> memfildMap = membersfildslist.get(i);
						if (!Common.matches(memfildMap.get("ignorepm"),repex)) {
							Pms pms = new Pms();
							pms.setDateline(timestamp);
							pms.setFolder("inbox");
							pms.setMsgfrom(member.getUsername());
							pms.setMsgfromid(member.getUid());
							pms.setDelstatus(Byte.valueOf("0"));
							pms.setMessage("[i]" + member.getUsername()
									+ "[/i] 向您报告以下的帖子,详细内容请访问:\n[url]"
									+ posturl + "[/url]\n\n他/她的报告理由是: " + reason
									+ ",特向您报告");
							pms.setSubject("[系统消息] " + member.getUsername()+ " 向您报告一篇帖子");
							pms.setMsgtoid(convertInt(memfildMap.get("uid")));
							pms.setNew_(Byte.valueOf("1"));
							pmslist.add(pms);
						}
					}
				}
				membersfildslist = null;
				String updatemember = "update jrun_members set newpm=1 where uid=" + jsprun_uid;
				dataBaseService.runQuery(updatemember);
				pmsServer.insertPmsList(pmslist);
				writeMessage(response,"您的意见已经报告给版主和管理员。",false);
				return null;
			} else {
				message = "您没有选择对谁报告本帖,请返回修改。";
				writeMessage(response,message,true);
				return null;
			}
		}
	}

	@SuppressWarnings("unchecked")
	public ActionForward rate(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		ServletContext context = request.getSession().getServletContext();
		Map<String,String> settings =(Map<String,String>)context.getAttribute("fsmap");
		String reasons = settings.get("modreasons");
		if(reasons!=null && !reasons.equals("")){
			List<String> reasonlist = new ArrayList<String>();
			String rea[] = reasons.split("\n");
			for(int i=0;i<rea.length;i++){
				reasonlist.add(rea[i]);

⌨️ 快捷键说明

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