📄 viewthreadaction.java
字号:
package cn.jsprun.struts.foreg.actions;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
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 java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
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 org.apache.struts.util.MessageResources;
import cn.jsprun.domain.Memberfields;
import cn.jsprun.domain.Members;
import cn.jsprun.domain.Memberspaces;
import cn.jsprun.domain.Polloptions;
import cn.jsprun.domain.Polls;
import cn.jsprun.domain.Posts;
import cn.jsprun.foreg.service.PolloptionsService;
import cn.jsprun.foreg.service.PollsService;
import cn.jsprun.foreg.utils.Jspruncode;
import cn.jsprun.foreg.vo.ActivitappliesVO;
import cn.jsprun.foreg.vo.ViewThreadVO;
import cn.jsprun.page.LogPage;
import cn.jsprun.service.posts.PostsService;
import cn.jsprun.service.system.DataBaseService;
import cn.jsprun.service.user.MemberService;
import cn.jsprun.service.user.SpaceService;
import cn.jsprun.utils.Base64Encoder;
import cn.jsprun.utils.BeanFactory;
import cn.jsprun.utils.Common;
import cn.jsprun.utils.DataParse;
import cn.jsprun.utils.FormDataCheck;
import cn.jsprun.utils.JspRunConfig;
public class ViewThreadAction extends DispatchAction {
private MemberService memberService = (MemberService) BeanFactory.getBean("memberService");
private PostsService postService = (PostsService) BeanFactory.getBean("postsService");
private PollsService pollService = (PollsService) BeanFactory.getBean("pollsService");
private PolloptionsService optionService = (PolloptionsService) BeanFactory.getBean("polloptionsService");
private DataBaseService dataBaseService = (DataBaseService) BeanFactory.getBean("dataBaseService");
private SpaceService spaceServer = (SpaceService) BeanFactory.getBean("spaceServer");
private DataParse dataParse=((DataParse) BeanFactory.getBean("dataParse"));
private Jspruncode jspcode = (Jspruncode)BeanFactory.getBean("jspruncode");
Random random = new Random();
private final String[] coloroptions = { "Black", "Sienna", "DarkOliveGreen","DarkGreen", "DarkSlateBlue", "Navy", "Indigo","DarkSlateGray", "DarkRed", "DarkOrange", "Olive", "Green","Teal", "Blue", "SlateGray", "DimGray", "Red", "SandyBrown","YellowGreen", "SeaGreen", "MediumTurquoise", "RoyalBlue","Purple", "Gray", "Magenta", "Orange", "Yellow", "Lime","Cyan", "DeepSkyBlue", "DarkOrchid", "Silver", "Pink", "Wheat","LemonChiffon", "PaleGreen", "PaleTurquoise", "LightBlue","Plum", "White" };
Map<String,String> attatypemap = new HashMap<String,String>();
{
attatypemap.put("text/css", "text.gif");
attatypemap.put("application/zip", "zip.gif");
attatypemap.put("text/plain", "text.gif");
attatypemap.put("image/pjpeg", "image.gif");
}
@SuppressWarnings("unused")
private int convertInt(String s) {
int count = 0;
try {
count = Integer.valueOf(s);
} catch (Exception e) {
}
return count;
}
@SuppressWarnings({ "unchecked", "static-access" })
public ActionForward viewthreadpost(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
Map<String, String> settings = (Map<String, String>) request.getAttribute("settings");
HttpSession session = request.getSession();
int uid = (Integer)session.getAttribute("jsprun_uid");
int tid =Common.toDigit(request.getParameter("tid"));
List<Map<String,String>> threadpost = dataBaseService.executeQuery("select t.*,f.threadcaches,f.fup,f.name,f.allowpostspecial,f.allowbbcode,f.allowmediacode,f.allowimgcode,f.jammer,f.allowsmilies,f.displayorder as dis,f.type,f.allowspecialonly,f.allowshare,f.allowhtml,f.autoclose from jrun_threads t left join jrun_forums f on t.fid=f.fid where t.displayorder>=0 and t.tid="+tid);
if (threadpost == null || threadpost.size()<=0) {
request.setAttribute("errorInfo", "指定的主题不存在或已被删除或正在被审核,请返回");
return mapping.findForward("showMessage");
}
Map<String,String> threads = threadpost.get(0);
threadpost=null;
int timestamp = (Integer)(request.getAttribute("timestamp"));
request.setAttribute("nowtime", timestamp);
String cachethreadlife = settings.get("cachethreadlife");
String page = request.getParameter("page");
if(page==null){
page="1";
}
String realPath=servlet.getServletContext().getRealPath("/");
if(!cachethreadlife.equals("0") && Common.toDigit(threads.get("threadcaches"))>0 && uid==0 && page.equals("1") && threads.get("special").equals("0")){
if(viewthread_loadcache(timestamp, threads, settings, realPath+settings.get("cachethreaddir"), request, response))
{
return null;
}
}
Map<String,String> usergroups = (Map<String,String>)request.getAttribute("usergroups");
int readaccess = Common.toDigit(usergroups.get("readaccess"));
request.setAttribute("readaccess", readaccess);
Members members = (Members)session.getAttribute("user");
short groupid = (Short)session.getAttribute("jsprun_groupid");
List<Map<String, String>> forumslist = dataBaseService.executeQuery("SELECT ff.modrecommend, ff.viewperm, a.allowview, ff.postperm, ff.typemodels,ff.threadtypes,ff.replyperm,ff.getattachperm,ff.password,ff.formulaperm FROM jrun_forumfields ff LEFT JOIN jrun_access a ON a.uid='"+ uid+ "' AND a.fid=ff.fid WHERE ff.fid = "+threads.get("fid"));
Map<String, String> forumMap = forumslist.get(0);
String modrecommend = forumMap.get("modrecommend");
Map modrecommendMap = dataParse.characterParse(modrecommend, false);
request.setAttribute("modrecommendMap", modrecommendMap);
forumslist = null;
String extgroupids=members!=null?members.getExtgroupids():null;
boolean allowgetattach = false;
if (forumMap.get("alloview") == null) {
if (forumMap.get("viewperm").equals("") && (usergroups==null || usergroups.get("readaccess").equals("0"))) {
String grouptitle = usergroups==null?"游客":usergroups.get("grouptitle");
request.setAttribute("show_message", "您所在的用户组(" + grouptitle+ ")无法进行此操作。");
return mapping.findForward("nopermission");
} else if (!forumMap.get("viewperm").equals("")&& !Common.forumperm(forumMap.get("viewperm"), groupid,extgroupids)) {
request.setAttribute("show_message", " 本版块只有特定用户组可以访问。");
return mapping.findForward("nopermission");
}
String getattachperm = forumMap.get("getattachperm");
allowgetattach = (getattachperm.equals("")&&(usergroups!=null&&!usergroups.get("readaccess").equals("0")))||(!getattachperm.equals("")&&Common.forumperm(getattachperm, groupid,extgroupids))||(usergroups!=null&&!usergroups.get("allowgetattach").equals("0"));
}
request.setAttribute("allowgetattach",allowgetattach);
boolean modertar = Common.ismoderator(Common.toDigit(threads.get("fid"),100000000L, 0L).shortValue(), members);
request.setAttribute("modertar", modertar);
String extcredit = settings.get("extcredits");
Map<Integer,Map<String,String>> extcredits=dataParse.characterParse(extcredit, false);
String formulaperm=forumMap.get("formulaperm");
if(formulaperm.length()>0){
Map<String,String> messages=Common.forumformulaperm(formulaperm, members,modertar, extcredits);
if(messages!=null){
request.setAttribute("show_message", "您不满足访问这个版块所需的条件。</b><br /> 访问条件: "+messages.get("formulamessage")+"<br /> 您的信息: "+messages.get("usermsg")+"<b>");
return mapping.findForward("nopermission");
}
}
if(usergroups!=null && Common.toDigit(threads.get("readperm"))>Common.toDigit(usergroups.get("readaccess")) && !modertar && !threads.get("authorid").equals(uid+"")){
request.setAttribute("show_message", "对不起,本帖要求阅读权限高于 "+threads.get("readperm")+" 才可浏览,请返回。");
return mapping.findForward("nopermission");
}
if(Common.toDigit(threads.get("digest"))>0 && usergroups.get("allowviewdigest").equals("0") && !threads.get("authorid").equals(uid+"")){
request.setAttribute("show_message", "对不起,你所在的用户组("+usergroups.get("grouptitle")+")不能浏览精华帖。");
return mapping.findForward("nopermission");
}
String password=forumMap.get("password");
if(password!=null&&!"".equals(password))
{
if(!password.equals(session.getAttribute("fidpw"+threads.get("fid")))){
request.setAttribute("fid", threads.get("fid"));
return mapping.findForward("toForumdisplay_passwd");
}
}
boolean threadpay = false;
if(Common.toDigit(threads.get("price"))>0 && threads.get("special").equals("0")){
String maxchargespan = settings.get("maxchargespan");
if(!maxchargespan.equals("0") && timestamp-Common.toDigit(threads.get("dateline"))>=Common.toDigit(maxchargespan)*3600){
dataBaseService.runQuery("update jrun_threads set price=0 where tid="+tid,true);
threads.put("price","0");
}else{
if(!modertar && !threads.get("authorid").equals(uid+"")){
List<Map<String, String>> paylog = dataBaseService.executeQuery("SELECT tid FROM jrun_paymentlog WHERE tid="+tid+" AND uid="+uid);
if(paylog==null || paylog.size()<=0){
threadpay = true;
}
paylog = null;
}
}
}
int creditstransid = Common.toDigit(settings.get("creditstrans"));
Map extcrditsMap = dataParse.characterParse(extcredit, true);
Map creditstrans=(Map)extcrditsMap.get(creditstransid);
request.setAttribute("creditstrans", creditstrans);
String extcreditname = creditstrans!=null?(String)creditstrans.get("title"):"";
String postperm=forumMap.get("postperm");
boolean allowpost=(("".equals(postperm))&&Common.toDigit(usergroups.get("allowpost"), 255L, 0L).intValue()>0)||((!"".equals(postperm))&&Common.forumperm(postperm, groupid,extgroupids));
boolean showpoll=false;
boolean showtrade=false;
boolean showreward=false;
boolean showactivity=false;
boolean showdebate=false;
boolean showvideo=false;
short allowpostspecial= Common.toDigit(threads.get("allowpostspecial"),10000000000L,0L).shortValue();
if(allowpostspecial>0)
{
showpoll=(allowpostspecial&1)>0;
showtrade=(allowpostspecial&2)>0;
showreward=(allowpostspecial&4)>0;
showactivity=(allowpostspecial&8)>0;
showdebate=(allowpostspecial&16)>0;
showvideo=(allowpostspecial&32)>0&&"1".equals(settings.get("videoopen"));
request.setAttribute("showpoll",showpoll );
request.setAttribute("showtrade",showtrade );
request.setAttribute("showreward",showreward );
request.setAttribute("showactivity",showactivity );
request.setAttribute("showdebate",showdebate );
request.setAttribute("showvideo",showvideo);
}
if(allowpost&&usergroups!=null)
{
request.setAttribute("allowpostpoll",usergroups.get("allowpostpoll").equals("1")&&showpoll);
request.setAttribute("allowposttrade",usergroups.get("allowposttrade").equals("1")&&showtrade );
request.setAttribute("allowpostreward",usergroups.get("allowpostreward").equals("1")&&showreward&&extcrditsMap.get(creditstransid)!=null);
request.setAttribute("allowpostactivity",usergroups.get("allowpostactivity").equals("1")&&showactivity );
request.setAttribute("allowpostdebate",usergroups.get("allowpostdebate").equals("1")&&showdebate );
request.setAttribute("allowpostvideo",usergroups.get("allowpostvideo").equals("1")&&showvideo);
}
request.setAttribute("allowpost", allowpost);
Map threadtypes=dataParse.characterParse(forumMap.get("threadtypes"),true);
request.setAttribute("threadtypes", threadtypes.size()>0?threadtypes:null);
request.setAttribute("typemodels", dataParse.characterParse(forumMap.get("typemodels"),true));
Map<Short,String> visitedforums=(Map<Short,String>)session.getAttribute("visitedforums");
request.setAttribute("visitedforums",visitedforums!=null && visitedforums.size()>1?visitedforums:null);
visitedforums=null;
if(members!=null&&members.getNewpm()>0){
Map<String,String> announcementsMap=(Map<String,String>)request.getAttribute("announcements");
Map<Integer,Map> announcements=dataParse.characterParse(announcementsMap!=null?announcementsMap.get("announcements"):null,true);
announcementsMap=null;
List<Map<String,String>> pmlists=new ArrayList<Map<String,String>>();;
if(announcements!=null&&announcements.size()>0)
{
int announcepm=0;
Set<Integer> keys=announcements.keySet();
for (Integer key : keys) {
Map<String,String> announcement=announcements.get(key);
if(announcement.get("type")!=null&&announcement.get("type").equals("2"))
{
announcement.put("announce", "true");
pmlists.add(announcement);
announcepm++;
}
}
announcements=null;
request.setAttribute("announcepm", announcepm);
}
String sql="SELECT pmid, msgfrom, msgfromid, subject, message FROM jrun_pms WHERE msgtoid="+members.getUid()+" AND folder='inbox' AND delstatus!='2' AND new='1'";
List<Map<String,String>> maps=dataBaseService.executeQuery(sql);
int newpmnum=maps!=null?maps.size():0;
if(newpmnum>0&&newpmnum<=10)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -