📄 postmanageaction.java
字号:
request.setAttribute("errorInfo", "对不起,您没有权限或管理员设置了禁止在本版发表文章,请返回。");
return mapping.findForward("showMessage");
}
int special = Common.toDigit(request.getParameter("special"), 6L, 0L).intValue();
String subject = request.getParameter("subject");
String message = request.getParameter("message");
String previewpost=request.getParameter("previewpost");
if(previewpost!=null){
request.setAttribute("typeid", request.getParameter("typeid"));
return this.toNewthread(mapping, form, request, response);
}
if (subject==null||message==null||subject.equals("") ||message.equals("")) {
request.setAttribute("errorInfo", "您没有输入标题或内容,请返回填写。");
return mapping.findForward("showMessage");
}
String post_invalid = Common.checkpost(subject, message, settings, usergroups);
if (post_invalid != null) {
request.setAttribute("errorInfo", post_invalid);
return mapping.findForward("showMessage");
}
Map seccodedata = dataParse.characterParse(settings.get("seccodedata"),false);
int minposts = Common.toDigit(String.valueOf(seccodedata.get("minposts")),1000000000L, 0L).intValue();
seccodedata=null;
int seccodestatus = Common.toDigit(settings.get("seccodestatus"), 255L, 0L).intValue();
boolean seccodecheck = (seccodestatus & 4) > 0&& (minposts <= 0 || member.getPosts() < minposts);
Map secqaa =dataParse.characterParse(settings.get("secqaa"),false);
minposts = Common.toDigit(String.valueOf(secqaa.get("minposts")), 1000000000L,0L).intValue();
int secqaastatus = Common.toDigit(String.valueOf(secqaa.get("status")), 255L,0L).intValue();
secqaa=null;
boolean secqaacheck = (secqaastatus & 2) > 0&& (minposts <= 0 || member.getPosts() < minposts);
request.setAttribute("secqaacheck", secqaacheck);
this.common(request, response, settings, usergroups, forumfield, forum,special);
byte usesig = Common.toDigit(request.getParameter("usesig"), 1L, 0L).byteValue();
int page = Common.toDigit(request.getParameter("page"), 1000000000L, 0L).intValue();
String seccodeverify = request.getParameter("seccodeverify");
String secanswer = request.getParameter("secanswer");
if (request.getParameter("topicsubmit") != null && ((seccodeverify == null && seccodecheck) || (secanswer == null && secqaacheck))) {
request.setAttribute("subject", subject);
request.setAttribute("message", message);
request.setAttribute("usesig", usesig);
request.setAttribute("path", "post.jsp?action=newthread&fid=" + fid+ (page > 0 ? "&page=" + page : "") + "&topicsubmit=yes");
return mapping.findForward("toPost_seccode");
}
if (seccodecheck) {
if (!seccodeverify.equals(request.getSession().getAttribute("rand"))) {
request.setAttribute("errorInfo", "您输入的验证码不正确,无法提交,请返回修改。");
return mapping.findForward("showMessage");
}
}
if (secqaacheck) {
if (!secanswer.trim().equals(request.getSession().getAttribute("answer").toString())) {
request.setAttribute("errorInfo", "验证问答回答错误,无法提交,请返回修改。");
return mapping.findForward("showMessage");
}
}
int timestamp = (Integer)(request.getAttribute("timestamp"));
String checkflood = checkflood(uid, timestamp, member!=null?member.getLastpost():0, Integer.valueOf(settings.get("floodctrl")), Integer.valueOf(usergroups.get("disablepostctrl")), Integer.valueOf(usergroups.get("maxpostsperhour")));
if (checkflood != null) {
request.setAttribute("resultInfo", checkflood);
return mapping.findForward("showMessage");
}
Map extcredits = dataParse.characterParse(settings.get("extcredits"),true);
boolean allowpostreward = (Boolean) request.getAttribute("allowpostreward");
boolean allowpostactivity = (Boolean) request.getAttribute("allowpostactivity");
boolean allowpostdebate = (Boolean) request.getAttribute("allowpostdebate");
boolean allowpostvideo = (Boolean) request.getAttribute("allowpostvideo");
boolean allowpostattach = (Boolean) request.getAttribute("allowpostattach");
if (allowpostattach) {
String[] attach = request.getParameterValues("attach[]");
if (attach != null) {
Map creditspolicy = dataParse.characterParse(settings.get("creditspolicy"),true);
Map<Integer, Integer> postattachcredits = dataParse.characterParse(forumfield.getPostattachcredits(),true);
Map<Integer, Integer> lowerlimits = (Map<Integer, Integer>) creditspolicy.get("lowerlimit");
boolean checklowerlimits=(lowerlimits != null && lowerlimits.size() > 0);
for (String attachname : attach) {
if (attachname != null && !attachname.equals("")) {
String errorMessage = checklowerlimit(extcredits,postattachcredits, checklowerlimits, member, 1);
if (errorMessage != null) {
request.setAttribute("errorInfo", errorMessage);
return mapping.findForward("showMessage");
}
}
}
lowerlimits=null;
postattachcredits=null;
creditspolicy=null;
attach=null;
}
}
boolean modnewthreads=false;
if(Common.periodscheck(settings.get("postmodperiods"), Byte.valueOf(usergroups.get("disableperiodctrl")),Float.valueOf(settings.get("timeoffset")))!=null) {
modnewthreads =true;
} else {
int allowdirectpost = Integer.valueOf(usergroups.get("allowdirectpost"));
boolean censormod = censormod(subject + "\t" + message, request);
modnewthreads = (allowdirectpost == 0 || allowdirectpost == 1)&& (forum.getModnewposts() > 0 || censormod);
}
List<Map<String,String>> wordlist = dataBaseService.executeQuery("select find,replacement from jrun_words");
if(wordlist!=null && wordlist.size()>0){
for(Map<String,String> word :wordlist){
if(Common.matches(message,word.get("find"))){
if(word.get("replacement").equals("{BANNED}")){
request.setAttribute("errorInfo", "对不起,您填写的内容包含不良内容而无法提交,请返回修改。");
return mapping.findForward("showMessage");
}else if(word.get("replacement").equals("{MOD}")){
modnewthreads = true;
}else{
message = message.replaceAll(word.get("find"),word.get("replacement"));
}
}
if(Common.matches(subject,word.get("find"))){
if(word.get("replacement").equals("{BANNED}")){
request.setAttribute("errorInfo", "对不起,您填写的标题包含不良内容而无法提交,请返回修改。");
return mapping.findForward("showMessage");
}else if(word.get("replacement").equals("{MOD}")){
modnewthreads = true;
}else{
subject = subject.replaceAll(word.get("find"),word.get("replacement"));
}
}
}
}
wordlist=null;
short typeid = Common.toDigit(request.getParameter("typeid"), 100000L,0L).shortValue();
short iconid = Common.toDigit(request.getParameter("iconid"), 100000L, 0L).shortValue();
boolean ismoderator = Common.ismoderator(fid, member);
byte displayorder = (byte)(modnewthreads ? -2 : (ismoderator&& request.getParameter("sticktopic") != null ? 1 : 0));
byte digest = (byte)(ismoderator&& request.getParameter("addtodigest") != null ? 1 : 0);
byte blog = (byte)(allowuseblog == 1 && forum.getAllowshare() > 0&& request.getParameter("addtoblog") != null ? 1 : 0);
short readperm = "1".equals(usergroups.get("allowsetreadperm")) ? Common.toDigit(request.getParameter("readperm"), 255L, 0L).shortValue(): 0;
byte isanonymous = (byte)(Common.toDigit(request.getParameter("isanonymous"),255L, 0L) > 0&& (Boolean) request.getAttribute("allowanonymous") ? 1 : 0);
short price = Common.toDigit(request.getParameter("price"), 1000000000L, 0L).shortValue();
short maxprice = Short.valueOf(usergroups.get("maxprice"));
price = maxprice > 0 && special == 0 ? (price <= maxprice ? price: maxprice) : 0;
Map threadtypes = dataParse.characterParse(forumfield.getThreadtypes(), false);
if (typeid <= 0 && threadtypes != null&& threadtypes.get("required")!=null && 1==(Byte)threadtypes.get("required") && !(special > 0)) {
request.setAttribute("errorInfo", "您没有选择主题的类别,请返回修改。");
return mapping.findForward("showMessage");
}
double creditstax = Double.valueOf(settings.get("creditstax"));
if (price > 0 && Math.floor(price * (1d - creditstax)) <= 0) {
request.setAttribute("errorInfo", "您的主题售价扣除积分交易税后为 0,请返回修改。");
return mapping.findForward("showMessage");
}
int timeoffset=(int)((Float)session.getAttribute("timeoffset")*3600);
short realprice = 0;
Map pollarray = null;
Map<String, String> activity = null;
String affirmpoint = null;
String negapoint = null;
int endtime = 0;
String umpire = null;
if (special == 1) {
String[] options = request.getParameter("polloptions").split("\n");
List<String> polloptions = new ArrayList<String>();
if (polloptions != null) {
for (String obj : options) {
if (!obj.trim().equals("")) {
polloptions.add(obj);
}
}
}
options=null;
if (polloptions.size() > Integer.valueOf(settings.get("maxpolloptions"))) {
request.setAttribute("errorInfo", "对不起,您的投票选项超过 "+ settings.get("maxpolloptions") + " 个,请返回修改。");
return mapping.findForward("showMessage");
} else if (polloptions.size() < 2) {
request.setAttribute("errorInfo", "对不起,您至少应当填写 2 个投票选项,请返回修改。");
return mapping.findForward("showMessage");
}
pollarray = new HashMap();
pollarray.put("options", polloptions);
pollarray.put("multiple", request.getParameter("multiplepoll") != null ? 1 : 0);
pollarray.put("visible", request.getParameter("visiblepoll") != null ? 1 : 0);
String maxchoices = request.getParameter("maxchoices");
String expiration = request.getParameter("expiration");
if(expiration!=null){
expiration=expiration.trim();
}
if (Common.matches(maxchoices, "^\\d*$") && Common.matches(expiration, "^\\d*$")) {
int choices = Common.toDigit(maxchoices, 1000000000L, 0L).intValue();
choices = choices >= polloptions.size() ? polloptions.size(): choices;
if ((Integer) pollarray.get("multiple") == 0) {
pollarray.put("maxchoices", 1);
} else if (maxchoices == null||maxchoices.equals("")) {
pollarray.put("maxchoices", 0);
} else if (choices == 1) {
pollarray.put("multiple", 0);
pollarray.put("maxchoices", choices);
} else {
pollarray.put("maxchoices", choices);
}
if ("".equals(expiration)||expiration.equals("0")) {
pollarray.put("expiration", 0);
} else {
pollarray.put("expiration", timestamp + 86400* Integer.valueOf(expiration));
}
} else {
request.setAttribute("errorInfo","对不起,最多可选项数与有效记票天数只接受数字,请返回修改。");
return mapping.findForward("showMessage");
}
polloptions=null;
} else if (special == 3) {
short rewardprice = Common.toDigit(request.getParameter("rewardprice"),1000000000L, 0L).shortValue();
int minrewardprice = Common.toDigit(usergroups.get("minrewardprice"),1000000000L, 0L).intValue();
int maxrewardprice = Common.toDigit(usergroups.get("maxrewardprice"),1000000000L, 0L).intValue();
realprice = (short) (rewardprice + Math.ceil(rewardprice * creditstax));
String extcreditField = "extcredits" + settings.get("creditstrans");
int extcredit = (Integer) Common.getValues(member, extcreditField);
if (rewardprice < 1) {
request.setAttribute("errorInfo", "对不起,悬赏积分不能为空,请返回修改。");
return mapping.findForward("showMessage");
} else if (rewardprice > 32767) {
request.setAttribute("errorInfo", "对不起,悬赏积分不能高于 32767,请返回修改。");
return mapping.findForward("showMessage");
} else if (rewardprice < minrewardprice|| (maxrewardprice > 0 && rewardprice > maxrewardprice)) {
request.setAttribute("errorInfo", "对不起,悬赏积分必须在 "+ minrewardprice + " 与 " + maxrewardprice+ " 之间, 请返回修改。");
return mapping.findForward("showMessage");
} else if (realprice > extcredit) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -