📄 postshow.java
字号:
package com.yhbbs.article.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import com.yhbbs.article.biz.ArticleBiz;
import com.yhbbs.article.itface.Article;
import com.yhbbs.forum.biz.ForumBiz;
import com.yhbbs.user.itface.bean.UserSession;
import com.yhbbs.utils.Constants;
import com.yhbbs.utils.ReqUtils;
import com.yhbbs.utils.StringUtils;
import com.yhbbs.yhclass.biz.ClassBiz;
/**
* <p>Title:发表和编辑帖子Action</p>
* <li> 根据Session判断用户是否有权发表和编辑帖子
* <li> 普通用户编辑自己的帖子要检查是否在允许时间内
* <li> 编辑帖子分:编辑主题帖子和回复帖子,帖子只有管理员和发帖本人可以编辑
* <li> 该处理包括:post、replay、vote、edit、editr<br>
* <li> 处理成功或失败后分别跳转到相关页面并提示相关信息和操作<br>
* <br><b>WebSite: www.yyhweb.com</b>
* <br><b>CopyRight: yyhweb[由由华网]</b>
* @author stephen
* @version YHBBS-2.0
*/
public class PostShow extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request,HttpServletResponse response) {
ActionMessages errors = new ActionMessages();
HttpSession session = request.getSession(true);
UserSession bbsuser = (UserSession) session.getAttribute(Constants.bbsuser);
// 取得参数并后传
String action = ReqUtils.getString(request,"action");
int artId = ReqUtils.getInt(request,"aId");
int forumId = ReqUtils.getInt(request,"fId");
int classId = ReqUtils.getInt(request,"cId");
// begin 判断操作是否合法
boolean option = true;
boolean option2 = true;
String optionStr = "post,replay,vote,edit,editr";
if(optionStr.indexOf(action)==-1)
option = false;
if(classId<1 || forumId<1)
option = false;
else if(artId==0){
if(classId!=ForumBiz.getForumClassId(forumId))
option = false;
}
if(!option){
errors.add("article.edit.wrong.action",new ActionMessage("article.edit.wrong.action"));
saveErrors(request,errors);
return mapping.findForward("Failure");
}
// end
if(action.equals("replay")||action.equals("edit")||action.equals("editr"))
request.setAttribute("ree","ree");
if(action.equals("post")||action.equals("vote")||action.equals("edit"))
request.setAttribute("pve","pve");
if(action.equals("post")||action.equals("vote")||action.equals("replay"))
request.setAttribute("pvr","pvr");
// 只有登录用户和已经审核用户才可以发表帖子
if(bbsuser==null || bbsuser.getUsertype()<2){
errors.add("article.post.no.login",new ActionMessage("article.post.no.login"));
saveErrors(request,errors);
return mapping.findForward("Failure");
}else if(bbsuser.getIslock().equals("1")){
errors.add("article.post.user.lock",new ActionMessage("article.post.user.lock"));
saveErrors(request,errors);
return mapping.findForward("Failure");
}
if(artId!=0){
int userType = 0;
userType = bbsuser.getUsertype();
// 取得要编辑的帖子信息
Article article = null;
int ruserId = 0;
String title = "";
String isvote = "";
String content = "";
article = (Article) ArticleBiz.getArtContent(artId);
if(article==null){
errors.add("article.edit.noexist",new ActionMessage("article.edit.noexist"));
saveErrors(request,errors);
return mapping.findForward("Failure");
}
// begin 检查classId forumId是否为该帖子信息
int cId = article.getClassid();
int fId = article.getForum();
if(cId!=classId || fId!=forumId)
option2 = false;
if(action.equals("editr")&& article.getParentid()==0)
option2 = false;
if(action.equals("edit")&& article.getParentid()!=0)
option2 = false;
if(!option2){
errors.add("article.edit.wrong.action",new ActionMessage("article.edit.wrong.action"));
saveErrors(request,errors);
return mapping.findForward("Failure");
}
// end
ruserId = article.getUserid();
title = article.getTitle();
isvote = article.getIsvote();
content = StringUtils.unEncode(article.getContent().getContent());
request.setAttribute("title",title);
request.setAttribute("isvote",isvote);
request.setAttribute("content",content);
// 判断当前用户是否用权编辑该帖子
if(userType>3){
boolean isfAdmin = false;
boolean iscAdmin = false;
String userName = bbsuser.getUsername();
// 判断该版主是否为该论坛或区论坛的版主 ( >=6为总版主和坛主)
if(userType<6){
isfAdmin = ForumBiz.isForumAdmin(forumId,userName);
iscAdmin = ClassBiz.isClassAdmin(classId,userName);
if(!isfAdmin && !iscAdmin){
errors.add("article.edit.not.admin",new ActionMessage("article.edit.not.admin"));
saveErrors(request,errors);
return mapping.findForward("Failure");
}
}
// forward
}else if(ruserId==bbsuser.getUserId()){ // 普通用户修改自己帖子
if(!ArticleBiz.isEditAgain(artId)){ // 是否在有效编辑时间内
errors.add("article.edit.time",new ActionMessage("article.edit.time"));
saveErrors(request,errors);
return mapping.findForward("Failure");
}
// forward
}else{
errors.add("article.edit.user.wrong",new ActionMessage("article.edit.user.wrong"));
saveErrors(request,errors);
return mapping.findForward("Failure");
}
}
request.setAttribute("artId", artId);
request.setAttribute("forumId", forumId);
request.setAttribute("classId", classId);
request.setAttribute("action", action);
this.saveToken(request);
return mapping.findForward("Success");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -