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

📄 projectmanageaction.java

📁 论坛软件系统亦称电子公告板(BBS)系统
💻 JAVA
字号:
package cn.jsprun.struts.action;

import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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.Members;
import cn.jsprun.domain.Projects;
import cn.jsprun.service.forumsedit.ProjectService;
import cn.jsprun.service.system.DataBaseService;
import cn.jsprun.utils.Base64Decoder;
import cn.jsprun.utils.Base64Encoder;
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;

public class ProjectManageAction extends DispatchAction {
	private ProjectService projectService = (ProjectService) BeanFactory.getBean("projectService");
	private DataBaseService dataBaseService = (DataBaseService) BeanFactory.getBean("dataBaseService");
	private DataParse dataParse= (DataParse)BeanFactory.getBean("dataParse");
	@SuppressWarnings("deprecation")
	public ActionForward toProject(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
		HttpSession session = request.getSession();
		boolean isfounder = (Boolean)session.getAttribute("isfounder");
		boolean ishavefounder = (Boolean)session.getAttribute("ishavefounder");
		if(ishavefounder && !isfounder){
			request.setAttribute("resultInfo", "您没有权限访问该设置,出于安全考虑此设置只有论坛创始人可以使用。");
			return mapping.findForward("result");
		}
		String export = request.getParameter("export");
		if(export==null){
			String type=request.getParameter("type");
			String typeadd = null;
			String selecttype = null;
			if(type!=null&&!"".equals(type)){
				typeadd = "WHERE type='"+type+"'";
				selecttype = "&type="+type;
			}
			else{
				typeadd = "";
				selecttype = "";
			}
			int projectnum=Common.toDigit(dataBaseService.executeQuery("SELECT COUNT(*) AS count FROM jrun_projects "+typeadd).get(0).get("count"));
			int page=Common.toDigit(request.getParameter("page"),2147483647l,1l).intValue();
			int perpage = 10;
			Map<String,Integer> multiInfo=Common.getMultiInfo(projectnum, perpage, page);
			page=multiInfo.get("curpage");
			int start_limit=multiInfo.get("start_limit");
			Map<String,Object> multi=Common.multi(projectnum, perpage, page, "admincp.jsp?action=project"+selecttype, 0, 10, true, false, null, false);
			request.setAttribute("multi", multi);
			List<Map<String,String>> projects=dataBaseService.executeQuery("SELECT id, name, type, description FROM jrun_projects "+typeadd+" LIMIT "+start_limit+","+perpage);
			request.setAttribute("projects", projects);
			request.setAttribute("type", type);
			return mapping.findForward("toProject");
		}else{
			Projects project =  projectService.findById(Short.valueOf(export));
			if(project==null){
				request.setAttribute("resultInfo", "指定的策略方案不存在,无法导出。");
				return mapping.findForward("result");
			}
			String jsprunversion= JspRunConfig.version;
			Map<String,String> settings=ForumInit.settings;
			String dateformat=(String)session.getAttribute("dateformat");
			String timeformat=(String)session.getAttribute("timeformat");
			int timeoffset=(int)((Float)session.getAttribute("timeoffset")*3600);
			String bbname=settings.get("bbname");
			String boardurl=(String)session.getAttribute("boardurl");
			int timestamp = (Integer)(request.getAttribute("timestamp"));
			String time = Common.gmdate(dateformat+" "+timeformat, timestamp+timeoffset);
			Map<String,String> projectMap=new HashMap<String,String>();
			String name=project.getName();
			projectMap.put("name", name);
			projectMap.put("id", project.getId()+"");
			projectMap.put("type", project.getType());
			projectMap.put("description", project.getDescription());
			projectMap.put("value",project.getValue());
			projectMap.put("version",jsprunversion);
			try {
				name=new String(name.getBytes("GBK"),"iso8859-1");
			} catch (UnsupportedEncodingException e1) {
				e1.printStackTrace();
			}
			String style_export="# JspRun! Project Dump\n# Version: JspRun! "+jsprunversion+"\n# Time: "+time+"\n# From: "+bbname+" ("+boardurl+")\n#\n# This file was BASE64 encoded\n#\n# JspRun! Community: http://www.JspRun.com\n# Please visit our website for latest news about JspRun!\n# --------------------------------------------------------\n\n\n"+Base64Encoder.encode(dataParse.combinationChar(projectMap),  JspRunConfig.charset);
			response.setHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT");
			response.setHeader("Last-Modified", Common.gmdate("EEE, d MMM yyyy HH:mm:ss", timestamp)+" GMT");
			response.setHeader("Cache-Control", "no-cache, must-revalidate");
			response.setHeader("Pragma", "no-cache");
			response.setHeader("Content-Encoding", "none");
			response.setHeader("Content-Disposition","attachment; filename=JspRun_project_"+project.getType()+"_"+name+".txt");
			response.setHeader("Content-Type",request.getHeader("User-Agent").indexOf("MSIE")>=0?"application/octetstream":"application/octet-stream");
			try {
				byte[] content=style_export.getBytes(JspRunConfig.charset);
				response.setHeader("Content-Length", String.valueOf(content.length));
				OutputStream os=response.getOutputStream();
				os.write(content);
				os.flush();
				os.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			return null;
		}
	}
	@SuppressWarnings("unchecked")
	public ActionForward project(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
		String importsubmit = request.getParameter("importsubmit");
		if(importsubmit==null){
			String []delete=request.getParameterValues("delete");
			if(delete!=null){
				dataBaseService.runQuery("DELETE FROM jrun_projects WHERE id IN ("+Common.implodeids(delete)+")", true);
			}
			String[] ids=request.getParameterValues("ids");
			if(ids!=null)
			{
				for (String id : ids) {
					String name=request.getParameter("name["+id+"]");
					String description=request.getParameter("description["+id+"]");
					dataBaseService.runQuery("UPDATE jrun_projects SET name='"+(name.length()>50?name.substring(0,50):name)+"', description='"+description+"' WHERE id='"+id+"'",true);
				}
			}
			request.setAttribute("successInfo", "论坛全局设置更新。");
			request.setAttribute("requestPath", "admincp.jsp?action=project");
			return mapping.findForward("success");
		}else{
			String projectdata=request.getParameter("projectdata");
			projectdata=projectdata.replaceAll("(#.*\\s+)*", "");
			Map<String,String> project=dataParse.characterParse(Base64Decoder.decode(projectdata, JspRunConfig.charset), false);
			if(project==null||project.size()==0){
				request.setAttribute("errorInfo", "设置方案数据文件已损坏,无法导入,请返回。");
				return mapping.findForward("error");
			}
			dataBaseService.runQuery("INSERT INTO jrun_projects (name, type, description, value) VALUES ('"+project.get("name")+"', '"+project.get("type")+"', '"+project.get("description")+"', '"+project.get("value")+"')", true);
			request.setAttribute("successInfo", "设置方案成功导入。");
			request.setAttribute("requestPath", "admincp.jsp?action=project");
			return mapping.findForward("success");
		}
	}
	public ActionForward toProjectapply(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
		String type=request.getParameter("type");
		String projectid=request.getParameter("projectid");
		if("forum".equals(type)){
			HttpSession session=request.getSession();
			short groupid = (Short)session.getAttribute("jsprun_groupid");
			Members member = (Members)session.getAttribute("user");
			request.setAttribute("forumselect", Common.forumselect(false, false,groupid,member!=null?member.getExtgroupids():"",null,false));
		}
		else if("group".equals(type)){
			List<Map<String,String>> usergroups=dataBaseService.executeQuery("SELECT groupid, grouptitle FROM jrun_usergroups ORDER BY creditshigher");
			request.setAttribute("usergroups", usergroups);
		}
		else if("extcredit".equals(type)){
			request.setAttribute("projectid", projectid);
			return mapping.findForward("toCredit");
		}
		List<Map<String,String>> projects=dataBaseService.executeQuery("SELECT id, name, type FROM jrun_projects WHERE type='"+type+"'");
		request.setAttribute("projects", projects);
		request.setAttribute("type", type);
		request.setAttribute("projectid", projectid);
		return mapping.findForward("toProjectapply");
	}
	@SuppressWarnings({ "static-access", "unchecked" })
	public ActionForward projectapply(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
		String[] targetid=request.getParameterValues("targetid");
		if(targetid==null){
			request.setAttribute("errorInfo", "没有指定目标项目,请返回。");
			return mapping.findForward("error");
		}
		String projectid=request.getParameter("projectid");
		List<Map<String,String>> projects=dataBaseService.executeQuery("SELECT type, value FROM jrun_projects WHERE id='"+projectid+"'");
		if(projects!=null&&projects.size()>0){
			Map<String,String> values = dataParse.characterParse(projects.get(0).get("value"),false);
			if(values==null){
				request.setAttribute("errorInfo", "论坛方案参数非法,请返回。");
				return mapping.findForward("error");
			}
			String applyids=Common.implodeids(targetid);
			String type=request.getParameter("type");
			if("forum".equals(type)){
				String[] table_forum_columns={"styleid", "allowsmilies", "allowhtml", "allowbbcode", "allowimgcode", "allowanonymous", "allowshare", "allowpostspecial", "alloweditrules", "allowpaytoauthor", "alloweditpost", "allowspecialonly", "modnewposts", "recyclebin", "jammer", "forumcolumns", "threadcaches", "disablewatermark", "autoclose", "simple"};
				String[] table_forumfield_columns={"attachextensions", "postcredits", "replycredits", "digestcredits", "postattachcredits", "getattachcredits", "viewperm", "postperm", "replyperm", "getattachperm", "postattachperm", "modrecommend", "formulaperm"};
				StringBuffer updatesql=new StringBuffer();
				for(String field:table_forum_columns){
					String value=values.get(field);
					if(value!=null){
						updatesql.append(", "+field+"='"+value+"'");
					}
				}
				if(updatesql.length()>0){
					dataBaseService.runQuery("UPDATE jrun_forums SET "+updatesql.substring(2)+" WHERE fid IN ("+applyids+")",true);
				}
				
				updatesql=new StringBuffer();
				for(String field:table_forumfield_columns){
					String value=values.get(field);
					if(value!=null){
						updatesql.append(", "+field+"='"+value+"'");
					}
				}
				if(updatesql.length()>0){
					dataBaseService.runQuery("UPDATE jrun_forumfields SET "+updatesql.substring(2)+" WHERE fid IN ("+applyids+")",true);
				}
			}
			else if("group".equals(type)){
				String[] usergroup_columns={"readaccess", "allowvisit", "allowpost", "allowreply", "allowpostpoll", "allowpostreward", "allowposttrade", "allowpostactivity", "allowpostvideo", "allowdirectpost", "allowgetattach", "allowpostattach", "allowvote", "allowmultigroups", "allowsearch", "allowavatar", "allowcstatus", "allowuseblog", "allowinvisible", "allowtransfer", "allowsetreadperm", "allowsetattachperm", "allowhidecode", "allowhtml", "allowcusbbcode", "allowanonymous", "allownickname", "allowsigbbcode", "allowsigimgcode", "allowviewpro", "allowviewstats", "disableperiodctrl", "reasonpm", "maxprice", "maxpmnum", "maxsigsize", "maxattachsize", "maxsizeperday", "maxpostsperhour", "attachextensions", "raterange", "mintradeprice", "maxtradeprice", "minrewardprice", "maxrewardprice", "magicsdiscount", "allowmagics", "maxmagicsweight", "allowbiobbcode", "allowbioimgcode", "maxbiosize", "maxbiotradesize", "allowinvite", "allowmailinvite", "inviteprice", "maxinvitenum", "maxinviteday","allowviewdigest"};
				StringBuffer updatesql=new StringBuffer();
				for(String field:usergroup_columns){
					String value=String.valueOf(values.get(field));
					if(value!=null){
						updatesql.append(", "+field+"='"+value+"'");
					}
				}
				if(updatesql.length()>0){
					dataBaseService.runQuery("UPDATE jrun_usergroups SET "+updatesql.substring(2)+" WHERE groupid IN ("+applyids+")",true);
				}
			}
			request.setAttribute("resultInfo", "目标设置方案更新。");
			return mapping.findForward("result");
		}else{
			request.setAttribute("errorInfo", "您选择的设置方案不存在,请返回。");
			return mapping.findForward("error");
		}
	}
}

⌨️ 快捷键说明

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