📄 indexmanageaction.java
字号:
package cn.jsprun.struts.foreg.actions;
import java.io.File;
import java.io.IOException;
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 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.system.DataBaseService;
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.Md5Token;
public class IndexManageAction extends DispatchAction {
private DataBaseService dataBaseService = (DataBaseService) BeanFactory.getBean("dataBaseService");
private DataParse dataParse = (DataParse) BeanFactory.getBean("dataParse");
@SuppressWarnings("unchecked")
public ActionForward getData(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
request.setAttribute("jsprun_action","1");
Map<String, String> settings = (Map<String, String>) request.getAttribute("settings");
request.setAttribute("attachurl", settings.get("attachurl"));
HttpSession session = request.getSession();
int timestamp = (Integer)(request.getAttribute("timestamp"));
int uid = (Integer) session.getAttribute("jsprun_uid");
int cacheindexlife=Common.toDigit(settings.get("cacheindexlife"));
if(cacheindexlife>0 && uid==0){
String realPath=servlet.getServletContext().getRealPath("/");
String[] indexcache = getcacheinfo(0,realPath+settings.get("cachethreaddir"));
File file = new File(indexcache[0]);
if(timestamp - Integer.valueOf(indexcache[1]) > cacheindexlife){
if(file.exists()){
file.delete();
}
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}else{
if(file.length()<=200){
file.delete();
}else{
String filename = indexcache[0].substring(realPath.length());
try {
request.getRequestDispatcher(filename).include(request, response);
} catch (Exception e) {
}
return null;
}
}
}
Members member =(Members)session.getAttribute("user");
request.setAttribute("google_searchbox", Integer.valueOf(settings.get("google_searchbox"))&1);
request.setAttribute("baidu_searchbox", Integer.valueOf(settings.get("baidu_searchbox"))&1);
String forumlinkstatus=settings.get("forumlinkstatus");
if("1".equals(forumlinkstatus)){
Map<String, String> forumlinks = (Map<String, String>) request.getAttribute("forumlinks");
Map map = dataParse.characterParse(forumlinks.get("forumlinks"),true);
request.setAttribute("forumlinks", map!=null&&map.size() > 0 ? map : null);
}
String historyposts=settings.get("historyposts");
String[] postdata = !"".equals(historyposts) ? historyposts.split("\t") : new String[] { "0", "0" };
request.setAttribute("postdata", postdata);
String jsprun_collapse=CookieUtil.getCookie(request, "jsprun_collapse", false,settings);
Map<String,String> collapseMap=new HashMap<String,String>();
Map<String,String> collapseimgMap=new HashMap<String,String>();
String[] collapses=new String[]{"forumlinks","birthdays","supe_updateusers"};
for(String collapse:collapses){
if(jsprun_collapse!=null&&jsprun_collapse.indexOf(collapse)>0){
collapseMap.put(collapse, "display: none");
collapseimgMap.put(collapse, "collapsed_yes.gif");
}
else{
collapseMap.put(collapse, "");
collapseimgMap.put(collapse, "collapsed_no.gif");
}
}
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 = 0;
String extgroupids=null;
Integer lastvisit=null;
if(member!=null){
accessmasks =member.getAccessmasks();
extgroupids=member.getExtgroupids();
lastvisit=member.getLastvisit();
request.setAttribute("user_lastvisit", Common.gmdate(sdf_all,(member.getLastvisit()>0?member.getLastvisit():timestamp - 86400)+timeoffset));
request.setAttribute("newthreads", Math.round((timestamp- member.getLastvisit() + 600f) / 1000f) * 1000);
}
short groupid=(Short)session.getAttribute("jsprun_groupid");
String hideprivate=settings.get("hideprivate");
int rewritestatus = Integer.valueOf(settings.get("rewritestatus"));
boolean forumdisplay = (rewritestatus&1)>0;
boolean spaceurlurl=(rewritestatus & 4)>0;
int threads = 0;
int posts = 0;
int todayposts = 0;
int gid=Common.toDigit(request.getParameter("gid"));
int subforumsindex=Common.toDigit(settings.get("subforumsindex"));
if (gid>0) {
List<Map<String, String>> maps = dataBaseService.executeQuery(accessmasks > 0 ? "SELECT f.fid, f.fup, f.type, f.name, f.threads, f.posts, f.todayposts, f.lastpost, f.inheritedmod, ff.description, ff.moderators, ff.icon, ff.viewperm, a.allowview FROM jrun_forums f LEFT JOIN jrun_forumfields ff ON ff.fid=f.fid LEFT JOIN jrun_access a ON a.uid='"+ uid+ "' AND a.fid=f.fid WHERE f.status>0 AND (f.fid='"+ gid+ "' OR (f.fup='"+ gid+ "' AND f.type='forum')) ORDER BY f.type, f.displayorder": "SELECT f.fid, f.fup, f.type, f.name, f.threads, f.posts, f.todayposts, f.lastpost, f.inheritedmod, ff.description, ff.moderators, ff.icon, ff.viewperm FROM jrun_forums f LEFT JOIN jrun_forumfields ff USING(fid) WHERE f.status>0 AND (f.fid='"+ gid+ "' OR (f.fup='"+ gid+ "' AND f.type='forum')) ORDER BY f.type, f.displayorder");
if (maps != null && maps.size() > 0) {
Map<String, List<Map<String, String>>> forums = new HashMap<String, List<Map<String, String>>>();
List<Map<String, String>> groupsList = new ArrayList<Map<String, String>>();
Map<String, Map<String, String>> lastposts = new HashMap<String, Map<String, String>>();
Map<String, String> collapse = new HashMap<String, String>();
StringBuffer fids=new StringBuffer();
for (Map<String, String> forum : maps) {
if (!"group".equals(forum.get("type"))) {
threads += Integer.valueOf(forum.get("threads"));
posts += Integer.valueOf(forum.get("posts"));
todayposts += Integer.valueOf(forum.get("todayposts"));
if (Common.forum(forum, hideprivate, groupid,lastvisit,extgroupids, lastposts,sdf_all,timeoffset,rewritestatus)) {
List<Map<String, String>> forumList = forums.get(forum.get("fup"));
if (forumList == null) {
forumList = new ArrayList<Map<String, String>>();
forums.put(forum.get("fup"), forumList);
}
forum.put("subforums", "");
forumList.add(forum);
for (Map<String, String> group : groupsList) {
if (group.get("fid").equals(forum.get("fup"))) {
group.put("forumscount",String.valueOf(Integer.valueOf(group.get("forumscount")) + 1));
}
}
fids.append(","+forum.get("fid"));
}
}
else{
forum.put("collapseimg", "collapsed_no.gif");
collapse.put("category_"+forum.get("fid"), "");
forum.put("moderators", Common.moddisplay(forum.get("moderators"), "flag", false,spaceurlurl));
forum.put("forumscount", "0");
forum.put("forumcolumns", "0");
groupsList.add(forum);
request.setAttribute("navigation",Common.strip_tags("»"+forum.get("name")));
request.setAttribute("navtitle",Common.strip_tags(forum.get("name")+"-"));
}
}
maps=null;
if(fids.length()>0){
List<Map<String, String>> subs = dataBaseService.executeQuery("SELECT fid, fup, name, threads, posts, todayposts FROM jrun_forums WHERE status>0 AND fup IN ("+fids.substring(1)+") AND type='sub'");
if (subs != null && subs.size() > 0) {
for (Map<String, String> sub : subs) {
Set<String> keys = forums.keySet();
for (String key : keys) {
List<Map<String, String>> forumList = forums.get(key);
for (Map<String, String> forum : forumList) {
if (forum.get("fid").equals(sub.get("fup"))){
forum.put("threads",String.valueOf(Integer.valueOf(forum.get("threads"))+ Integer.valueOf(sub.get("threads"))));
forum.put("posts",String.valueOf(Integer.valueOf(forum.get("posts"))+ Integer.valueOf(sub.get("posts"))));
forum.put("todayposts",String.valueOf(Integer.valueOf(forum.get("todayposts"))+ Integer.valueOf(sub.get("todayposts"))));
if (subforumsindex==1&& "2".equals(forum.get("permission"))) {
if(forumdisplay){
forum.put("subforums",forum.get("subforums")+ "<a href=\"forum-"+ sub.get("fid")+ "-1.html\">"+ sub.get("name")+ "</a> ");
}else{
forum.put("subforums",forum.get("subforums")+ "<a href=\"forumdisplay.jsp?fid="+ sub.get("fid")+ "\">"+ sub.get("name")+ "</a> ");
}
}
}
}
}
}
subs=null;
}
}
request.setAttribute("catlists", groupsList);
request.setAttribute("forums", forums);
request.setAttribute("lastposts", lastposts);
request.setAttribute("gid", gid);
} else {
request.setAttribute("errorInfo", "指定的版块不存在,请返回。");
return mapping.findForward("showMessage");
}
} else {
List<Map<String, String>> pmlists = new ArrayList<Map<String, String>>();
Map<String, String> announcementsMap = (Map<String, String>) request.getAttribute("announcements");
Map<Integer, Map<String, String>> announcements = dataParse.characterParse(announcementsMap != null ? announcementsMap.get("announcements") : null,true);
announcementsMap=null;
if(announcements!=null){
int announcepm = 0;
SimpleDateFormat sdf_dateformat=new SimpleDateFormat(dateformat);
StringBuffer announ=new StringBuffer();
Set<Integer> annids=announcements.keySet();
for (int annid:annids) {
Map<String, String> announcement=announcements.get(annid);
String groups=announcement.get("groups");
if("".equals(groups)||(","+groups+",").contains(","+groupid+",")){
String type=announcement.get("type");
if("0".equals(type)){
String id=announcement.get("id");
announ.append("<li><a href='announcement.jsp?id="+id+"#"+id+"'>"+announcement.get("subject")+" <em>("+Common.gmdate(sdf_dateformat, Integer.valueOf(announcement.get("starttime"))+timeoffset)+")</em></a></li>");
}else if("1".equals(type)){
announ.append("<li><a href='"+announcement.get("message")+"' target='_blank'>"+announcement.get("subject")+" <em>("+Common.gmdate(sdf_dateformat, Integer.valueOf(announcement.get("starttime"))+timeoffset)+")</em></a></li>");
}else if(uid>0&&"2".equals(type)){
announcement.put("announce", "true");
pmlists.add(announcement);
announcepm++;
}
}
}
sdf_dateformat=null;
request.setAttribute("announcements",announ.length()>0?announ.toString():null);
request.setAttribute("announcepm", announcepm);
}
if (member != null && member.getNewpm() > 0) {
String sql = "SELECT pmid, msgfrom, msgfromid, subject FROM jrun_pms WHERE msgtoid="+ member.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) {
pmlists.addAll(maps);
}
request.setAttribute("newpmnum", newpmnum);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -