1 25 29 package org.jresearch.gossip.actions.message; 30 31 import java.sql.SQLException ; 32 33 import javax.servlet.http.HttpServletRequest ; 34 import javax.servlet.http.HttpServletResponse ; 35 import javax.servlet.http.HttpSession ; 36 37 import org.apache.struts.action.ActionForm; 38 import org.apache.struts.action.ActionForward; 39 import org.apache.struts.action.ActionMapping; 40 import org.jresearch.gossip.IConst; 41 import org.jresearch.gossip.actions.BaseAction; 42 import org.jresearch.gossip.beans.forum.Forum; 43 import org.jresearch.gossip.beans.forum.Message; 44 import org.jresearch.gossip.beans.forum.Topic; 45 import org.jresearch.gossip.beans.user.User; 46 import org.jresearch.gossip.configuration.Configurator; 47 import org.jresearch.gossip.dao.ForumDAO; 48 import org.jresearch.gossip.exception.SystemException; 49 import org.jresearch.gossip.forms.MessageForm; 50 51 56 public class UpdateMessageAction extends BaseAction { 57 71 public ActionForward process(ActionMapping mapping, ActionForm form, 72 HttpServletRequest request, HttpServletResponse response) 73 throws SystemException { 74 HttpSession session = request.getSession(); 75 MessageForm messageForm = (MessageForm) form; 76 User user = (User) session.getAttribute(IConst.SESSION.USER_KEY); 77 ForumDAO dao = ForumDAO.getInstance(); 78 79 try { 80 81 boolean isUserMod = dao.checkMod(Integer.parseInt(messageForm 82 .getFid()), user); 83 Forum currForum = dao.getForumInfo(Integer.parseInt(messageForm 84 .getFid())); 85 86 if ((currForum.getLocked() == IConst.Forum.STATUS_INVISIBLE) 88 && (user.getStatus() < Integer.parseInt(Configurator 89 .getInstance().get(IConst.CONFIG.INVADER1)))) { 90 return (mapping.findForward(IConst.TOKEN.DENIED)); 91 } 92 93 Topic currThread = dao.getThreadInfo(Integer.parseInt(messageForm 94 .getTid())); 95 96 if (((currThread.getLocked() == IConst.Topic.STATUS_LOCKED) || (currForum 99 .getLocked() == IConst.Forum.STATUS_COMPLETELY_LOCKED)) 100 && (!isUserMod)) { 101 return (mapping.findForward(IConst.TOKEN.DENIED)); 102 } 103 104 Message mess = dao.getMessage(messageForm.getMid()); 105 session.removeAttribute(IConst.REQUEST.CURR_THREAD); 106 107 if (mess == null) { 108 return (new ActionForward("/ShowThread.do?fid=" 109 + messageForm.getFid() + "&tid=" + messageForm.getTid() 110 + "&block=" + messageForm.getBlock(), true)); 111 } else { 112 if (dao.checkMod(Integer.parseInt(messageForm.getFid()), user) 114 || (user.getName().equals(mess.getSender()) && (currThread 115 .getLocked() == IConst.Topic.STATUS_UNLOCKED))) { 116 dao.updateMessage(messageForm); 117 118 if (IConst.VALUES.TRUE.equals(messageForm.getSubscribe())) { 120 dao.subscribe(messageForm.getTid(), user.getInfo() 121 .getEmail(), user.getName()); 122 } 123 124 log(request, "logs.LOG28", " mid=" + messageForm.getMid() 125 + " tid=" + messageForm.getTid() + " fid=" 126 + messageForm.getFid()); 127 } else { 128 return (mapping.findForward(IConst.TOKEN.DENIED)); 129 } 130 } 131 } catch (SQLException sqle) { 132 getServlet().log("Connection.process", sqle); 133 throw new SystemException(sqle); 134 } 135 136 StringBuffer forward = new StringBuffer (); 137 forward.append("/ShowMessage.do?fid="); 138 forward.append(messageForm.getFid()); 139 forward.append("&tid="); 140 forward.append(messageForm.getTid()); 141 forward.append("&mid="); 142 forward.append(messageForm.getMid()); 143 144 return (new ActionForward(forward.toString(), true)); 145 } 146 } 147 | Popular Tags |