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

📄 postwebhandler.java

📁 easy to use, easy to setup bulletin board (forum)
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    }

    /**
     * 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 + -