📄 forumdisplayaction.java
字号:
package cn.jsprun.struts.foreg.actions;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
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 org.apache.struts.util.MessageResources;
import cn.jsprun.domain.Members;
import cn.jsprun.foreg.utils.CookieUtil;
import cn.jsprun.service.forumsedit.ForumService;
import cn.jsprun.service.system.DataBaseService;
import cn.jsprun.utils.BeanFactory;
import cn.jsprun.utils.Common;
import cn.jsprun.utils.DataParse;
import cn.jsprun.utils.JspRunConfig;
import cn.jsprun.utils.Md5Token;
public class ForumdisplayAction extends DispatchAction {
private ForumService forumService = (ForumService) BeanFactory.getBean("forumService");
private DataBaseService dataBaseService = (DataBaseService) BeanFactory.getBean("dataBaseService");
private DataParse dataParse = (DataParse) BeanFactory.getBean("dataParse");
private String[] colorarray={"", "red", "orange", "yellow", "green", "cyan", "blue", "purple", "gray"};
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" };
private Map<String, Integer> specialtype = new HashMap<String, Integer>();
private List<String> orderfields=new ArrayList<String>();
private List<String> order=new ArrayList<String>();
{
specialtype.put("poll", 1);
specialtype.put("trade", 2);
specialtype.put("reward", 3);
specialtype.put("activity", 4);
specialtype.put("debate", 5);
specialtype.put("video", 6);
orderfields.add("lastpost");
orderfields.add("dateline");
orderfields.add("replies");
orderfields.add("views");
order.add("DESC");
order.add("ASC");
}
@SuppressWarnings("unchecked")
public ActionForward forumdisplay(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
request.setAttribute("jsprun_action", "2");
short fid = (short)Common.toDigit(request.getParameter("fid"));
List<Map<String,String>> forums=dataBaseService.executeQuery("SELECT f.*, ff.* FROM jrun_forums f LEFT JOIN jrun_forumfields ff ON ff.fid=f.fid WHERE f.fid='"+fid+"'");
if (forums != null&&forums.size()>0) {
Map<String,String> forum=forums.get(0);
Map<String, String> settings = (Map<String, String>) request.getAttribute("settings");
short fup=Short.valueOf(forum.get("fup"));
String type=forum.get("type");
String name=forum.get("name");
String redirect=null;
if(forum.get("redirect").length()>0) {
redirect=forum.get("redirect");
}else if("group".equals(type)) {
redirect=settings.get("indexname") + "?gid" + fid;
}
if (redirect!=null) {
try {
response.sendRedirect(redirect);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
request.setAttribute("fid", fid);
short styleid=Short.valueOf(forum.get("styleid"));
if(styleid>0){
request.setAttribute("styleid",styleid);
}
int rewritestatus = Integer.parseInt(settings.get("rewritestatus"));
boolean forumdisplayurl=(rewritestatus & 1)>0;
String navtitle="";
if(type.equals("forum")){
request.setAttribute("navigation","» "+name);
navtitle=Common.strip_tags(name);
}
else{
Map<String,String> sub=dataBaseService.executeQuery("SELECT name FROM jrun_forums WHERE fid="+fup+" limit 1").get(0);
String subName=Common.strip_tags(sub.get("name"));
if(forumdisplayurl){
request.setAttribute("navigation","» <a href=\"forum-"+fup+"-1.html\">"+subName+"</a> » "+name);
}else{
request.setAttribute("navigation","» <a href=\"forumdisplay.jsp?fid="+fup+"\">"+subName+"</a> » "+name);
}
navtitle=Common.strip_tags(name)+" - "+subName;
}
request.setAttribute("navtitle", navtitle+" - ");
request.setAttribute("metakeywords", forum.get("keywords").length()>0?forum.get("keywords"):Common.strip_tags(name));
request.setAttribute("metadescription", forum.get("description").length()>0?Common.strip_tags(forum.get("description")):Common.strip_tags(name));
request.setAttribute("google_searchbox", Integer.valueOf(settings.get("google_searchbox"))&1);
request.setAttribute("baidu_searchbox", Integer.valueOf(settings.get("baidu_searchbox"))&1);
HttpSession session = request.getSession();
Members member = (Members) session.getAttribute("user");
String extgroupid=member!=null?member.getExtgroupids():null;
short groupid=(Short)session.getAttribute("jsprun_groupid");
String viewperm=forum.get("viewperm");
int creditstrans=Integer.valueOf(settings.get("creditstrans"));
if(!viewperm.equals("")&&!Common.forumperm(viewperm, groupid, extgroupid)){
request.setAttribute("show_message", "本版块只有特定用户组可以访问。");
return mapping.findForward("nopermission");
}
boolean ismoderator=Common.ismoderator(fid, member);
request.setAttribute("ismoderator",ismoderator);
Map<Integer,Map<String,String>> extcredits=dataParse.characterParse(settings.get("extcredits"), false);
String formulaperm=forum.get("formulaperm");
if(formulaperm.length()>0){
Map<String,String> messages=Common.forumformulaperm(formulaperm, member,ismoderator, extcredits);
if(messages!=null){
request.setAttribute("show_message", "您不满足访问这个版块所需的条件。</b><br /> 访问条件: "+messages.get("formulamessage")+"<br /> 您的信息: "+messages.get("usermsg")+"<b>");
return mapping.findForward("nopermission");
}
}
String password=forum.get("password");
if(!"".equals(password)){
String pwverify=request.getParameter("pwverify");
if("true".equals(pwverify)){
String pw=request.getParameter("pw");
if(password.equals(pw)){
CookieUtil.setCookie(request, response, "fidpw"+fid, pw, 31536000, true, settings);
session.setAttribute("fidpw"+fid, password);
request.setAttribute("successInfo", "密码验证成功,现在将转入主题列表。");
request.setAttribute("requestPath", "forumdisplay.jsp?fid="+fid);
return mapping.findForward("showMessage");
}else{
request.setAttribute("resultInfo", "您输入的密码不正确,不能访问这个版块。");
return mapping.findForward("showMessage");
}
}
String pw=CookieUtil.getCookie(request, "fidpw"+fid, true, settings);
if(!password.equals(pw)){
return mapping.findForward("toForumdisplay_passwd");
}
}
boolean spaceurlurl = (rewritestatus & 4)>0;
request.setAttribute("moderatedby", Common.moddisplay(forum.get("moderators"),"forumdisplay", false,spaceurlurl));
int timestamp = (Integer)request.getAttribute("timestamp");
String jsprun_collapse=CookieUtil.getCookie(request, "jsprun_collapse", false,settings);
Map<String,String> collapse=new HashMap<String,String>();
if(forum.get("rules").length()>0) {
if(jsprun_collapse!=null&&jsprun_collapse.indexOf("rules")>0){
collapse.put("rules", "display: none");
collapse.put("rules_link", "");
}
else{
collapse.put("rules", "");
collapse.put("rules_link", "display: none");
}
}
Map modrecommend = dataParse.characterParse(forum.get("modrecommend"), false);
if (modrecommend != null && "1".equals(modrecommend.get("open"))) {
request.setAttribute("modrecommend", modrecommend);
List<Map<String, String>> recommendlist=recommendupdate(fid,modrecommend, false, timestamp);
if(recommendlist!=null&&recommendlist.size()>0){
if(jsprun_collapse!=null&&jsprun_collapse.indexOf("recommendlist")>0){
collapse.put("recommendlist", "display: none");
collapse.put("recommendlist_link", "");
}
else{
collapse.put("recommendlist", "");
collapse.put("recommendlist_link", "display: none");
}
request.setAttribute("recommendlist", recommendlist);
}
}
if(member!=null&&member.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);
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++;
}
}
request.setAttribute("announcepm", announcepm);
}
List<Map<String,String>> maps=dataBaseService.executeQuery("SELECT pmid, msgfrom, msgfromid, subject, message FROM jrun_pms WHERE msgtoid="+member.getUid()+" AND folder='inbox' AND delstatus!='2' AND new='1'");
int newpmnum=maps!=null?maps.size():0;
if(newpmnum>0&&newpmnum<=10)
{
pmlists.addAll(maps);
}
request.setAttribute("newpmnum", newpmnum);
request.setAttribute("pmlists", pmlists.size()>0?pmlists:null);
}
int timeoffset=(int)((Float)session.getAttribute("timeoffset")*3600);
String timeformat=(String)session.getAttribute("timeformat");
String dateformat=(String)session.getAttribute("dateformat");
SimpleDateFormat sdf_all=new SimpleDateFormat(dateformat+" "+timeformat);
byte accessmasks = member != null ? member.getAccessmasks() : 0;
int jsprun_uid=(Integer)session.getAttribute("jsprun_uid");
String sql = accessmasks > 0 ? "SELECT f.fid, f.fup, f.type, f.name, f.threads, f.posts, f.todayposts, f.lastpost, f.inheritedmod, f.forumcolumns, f.simple, ff.description, ff.moderators, ff.icon, ff.viewperm, ff.redirect, a.allowview FROM jrun_forums f LEFT JOIN jrun_forumfields ff ON ff.fid=f.fid LEFT JOIN jrun_access a ON a.uid="+ jsprun_uid+ " AND a.fid=f.fid WHERE fup="+ fid+ " AND f.status>0 AND type='sub' ORDER BY f.displayorder": "SELECT f.fid, f.fup, f.type, f.name, f.threads, f.posts, f.todayposts, f.lastpost, f.inheritedmod, f.forumcolumns, f.simple, ff.description, ff.moderators, ff.icon, ff.viewperm, ff.redirect FROM jrun_forums f LEFT JOIN jrun_forumfields ff USING(fid) WHERE fup="+ fid+ " AND f.status>0 AND type='sub' ORDER BY f.displayorder";
List<Map<String, String>> maps = dataBaseService.executeQuery(sql);
if (maps != null && maps.size() > 0) {
Map<String, Map<String, String>> lastposts = new TreeMap<String, Map<String, String>>();
List<Map<String, String>> subforums = new ArrayList<Map<String, String>>();
String hideprivate=settings.get("hideprivate");
Integer lastvisit=member!=null?member.getLastvisit():null;
for (Map<String, String> forumMap : maps) {
if (Common.forum(forumMap, hideprivate, groupid, lastvisit, extgroupid, lastposts,sdf_all,timeoffset,rewritestatus)) {
subforums.add(forumMap);
}
}
short forumcolumns=Short.valueOf(forum.get("forumcolumns"));
if (forumcolumns > 0) {
int colspan = subforums.size() % forumcolumns;
if (colspan > 0) {
StringBuffer endrows = new StringBuffer();
while (forumcolumns - colspan > 0) {
endrows.append("<td> </td>");
colspan++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -