📄 postwebhandler.java
字号:
}
/**
* then, it will be forward to addpost.jsp
* NOTE: This method MUST NOT use parameter MessageParent (need some process to figure out)
*/
public void prepareEdit(HttpServletRequest request)
throws DatabaseException, BadInputException, AuthenticationException, AssertionException {
OnlineUser onlineUser = userManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
// a guest CANNOT edit a post, because it need Authenticated Permission
permission.ensureIsAuthenticated();
int postID = ParamUtil.getParameterInt(request, "post");
PostBean postBean = PostWebHelper.getPost(postID);
int logonMemberID = onlineUser.getMemberID();
int authorID = postBean.getMemberID();
// check constraint
if (logonMemberID == authorID) {// same author
// check date here, usually must not older than 7 days
Timestamp now = DateUtil.getCurrentGMTTimestamp();
Timestamp postDate = postBean.getPostCreationDate();
/** @todo config maxDays */
int maxDays = 7;
if ( (now.getTime() - postDate.getTime()) > (DateUtil.DAY * maxDays) ) {
/** @todo choose a better Exception here */
throw new BadInputException("You cannot edit a post which is older than " + maxDays + " days.");
}
/** @todo check status of this post */
/*
if (postBean.getPostStatus() == ?) {
throw new BadInputException("Cannot edit message which is disable.");
}*/
} else {//not an author, so this user must have Edit Permission
int forumID = postBean.getForumID();
permission.ensureCanEditPost(forumID);
}
request.setAttribute("PostToEdit", postBean);
request.setAttribute("action", "update");
}
/**
* @todo: log the modification
* @todo: check the comment below, it's obsolete now :(
* @todo: check coi messageTopic co the la optional khi reply
* NOTE: This method MUST NOT get parameter MessageParent (need some process to figure out)
* so it needs to call setAttribute with messageParent for page updatepostsuccess.jsp
*/
public void processUpdate(HttpServletRequest request)
throws BadInputException, DatabaseException, ForeignKeyNotFoundException, AuthenticationException, AssertionException {
OnlineUser onlineUser = userManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
// a guest CANNOT edit a post, because it need Authenticated Permission
permission.ensureIsAuthenticated();
Timestamp now = DateUtil.getCurrentGMTTimestamp();
int postID = ParamUtil.getParameterInt(request, "PostID");// dont change
// check constraint
PostBean postBean = PostWebHelper.getPost(postID);
boolean checkEmpty = true;
if (postBean.getParentPostID() != 0) {//that is user are editing a REPLY
checkEmpty = false;
}
String postTopic = ParamUtil.getParameterSafe(request, "PostTopic", checkEmpty);
String postBody = ParamUtil.getParameter(request, "message", true);// use message instead of PostBody
/**@todo: please check it */
postBody = DisableHtmlTagFilter.filter(postBody);
int logonMemberID = onlineUser.getMemberID();
String logonMemberName = onlineUser.getMemberName();
int authorID = postBean.getMemberID();
// check constraint
if (logonMemberID == authorID) {// same author
// check date here, usually must not older than 7 days
Timestamp postDate = postBean.getPostCreationDate();
/** @todo config maxDays */
int maxDays = 7;
if ( (now.getTime() - postDate.getTime()) > (DateUtil.DAY * maxDays) ) {
/** @todo choose a better Exception here */
throw new BadInputException("You cannot edit a post which is older than " + maxDays + " days.");
}
/** @todo check status of this post */
/*
if (postBean.getPostStatus() == ?) {
throw new BadInputException("Cannot edit message which is disable.");
}*/
} else {//not an author, so this user must have Edit Permission
int forumID = postBean.getForumID();
permission.ensureCanEditPost(forumID);
}
String postLastEditIP = request.getRemoteAddr();
int postFormatOption = 0;//xem lai
int postOption = 0;//xem lai
int postStatus = 0;//xem lai
String postIcon = "";//xem lai
/*
* Note that although the 2 methods below can be combined,
* I dont do that for clearness
*/
/** @todo log the modification here */
PostWebHelper.updatePost(postID, // primary key
logonMemberName, postTopic, postBody,
now/*postLastEditDate*/, postLastEditIP, postFormatOption,
postOption, postStatus, postIcon);
PostWebHelper.increaseEditCount(postID);
int threadID = postBean.getThreadID();
if (postBean.getParentPostID() == 0) {//edit a top post ( thread )
ThreadWebHelper.updateThreadTopic_Body(threadID, postTopic, postBody);
}
request.setAttribute("ForumID", String.valueOf(postBean.getForumID()));
request.setAttribute("ThreadID", String.valueOf(threadID));
}
/**
* This method is for viewthread page
*/
/**@todo: change this method's name*/
public void listPost_inThread(HttpServletRequest request)
throws DatabaseException, BadInputException, AuthenticationException, AssertionException {
OnlineUser onlineUser = userManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
int threadID = ParamUtil.getParameterInt(request, "thread");
ThreadBean threadBean = ThreadWebHelper.getThread(threadID);
int forumID = threadBean.getForumID();
permission.ensureCanReadPost(forumID);
int offset = 0;
try {
offset = ParamUtil.getParameterInt(request, "offset");
} catch (BadInputException e) {
// do nothing
}
ThreadWebHelper.increaseViewCount(threadID);
Collection postBeans = PostWebHelper.getPosts_inThread_limit(threadID, offset, MVNForumConfig.ROWS_IN_REPLIES);
int numberOfPosts = PostWebHelper.getNumberOfPosts_inThread(threadID);
int length = postBeans.size();
MemberBean[] memberBeans = new MemberBean[length];
Iterator iterator = postBeans.iterator();
int i = 0;
while(iterator.hasNext()) {
PostBean bean = (PostBean)iterator.next();
bean.setPostBody(HtmlNewLineFilter.filter(bean.getPostBody()));
//very slow here
/** @todo find a better solution */
memberBeans[i] = MemberWebHelper.getMember_forPublic(bean.getMemberID());
i++;
}
int previousTopic = ThreadWebHelper.getPreviousThread(forumID, threadID);// can throw AssertionException
int nextTopic = ThreadWebHelper.getNextThread(forumID, threadID);// can throw AssertionException
MyUtil.prepareNavigate(request, offset, postBeans.size(), numberOfPosts, MVNForumConfig.ROWS_IN_REPLIES);
request.setAttribute("ThreadBean", threadBean);
request.setAttribute("PostBeans", postBeans);
request.setAttribute("MemberBeans", memberBeans);
request.setAttribute("NumberOfPosts", new Integer(numberOfPosts));
request.setAttribute("PreviousTopic", new Integer(previousTopic));
request.setAttribute("NextTopic", new Integer(nextTopic));
//System.out.println("pre = " + previousTopic + " next = " + nextTopic);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -