📄 miscaction.java
字号:
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> » <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> » <a href='forumdisplay.jsp?fid="+thread.get("fid")+"'>"+thread.get("name")+"</a> » <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 + -