📄 projectmanageaction.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 + -