1 41 package com.mvnforum.admin; 42 43 import java.sql.Timestamp ; 44 import java.util.Locale ; 45 46 import com.mvnforum.*; 47 import com.mvnforum.auth.*; 48 import com.mvnforum.common.AttachmentUtil; 49 import com.mvnforum.db.*; 50 import com.mvnforum.search.post.DeletePostIndexTask; 51 import com.mvnforum.search.post.PostIndexer; 52 import net.myvietnam.mvncore.exception.*; 53 import net.myvietnam.mvncore.filter.DisableHtmlTagFilter; 54 import net.myvietnam.mvncore.util.*; 55 import net.myvietnam.mvncore.web.GenericRequest; 56 import net.myvietnam.mvncore.web.GenericResponse; 57 58 public class ForumWebHandler { 59 60 private OnlineUserManager onlineUserManager = OnlineUserManager.getInstance(); 61 62 public ForumWebHandler() { 63 } 64 65 public void processAdd(GenericRequest request, GenericResponse response) 66 throws BadInputException, CreateException, DatabaseException, DuplicateKeyException, 67 ForeignKeyNotFoundException, AuthenticationException, AssertionException { 68 69 OnlineUser onlineUser = onlineUserManager.getOnlineUser(request); 70 MVNForumPermission permission = onlineUser.getPermission(); 71 permission.ensureCanAddForum(); 72 73 MyUtil.saveVNTyperMode(request, response); 74 Timestamp now = DateUtil.getCurrentGMTTimestamp(); 75 76 int categoryID = GenericParamUtil.getParameterInt(request, "CategoryID"); 77 String forumName = GenericParamUtil.getParameterSafe(request, "ForumName", true); 78 forumName = DisableHtmlTagFilter.filter(forumName); 79 String forumDesc = GenericParamUtil.getParameterSafe(request, "ForumDesc", false); 80 forumDesc = DisableHtmlTagFilter.filter(forumDesc); 81 int forumType = GenericParamUtil.getParameterInt(request, "ForumType"); 82 int forumFormatOption = 0; int forumOption = 0; int forumStatus = GenericParamUtil.getParameterInt(request, "ForumStatus"); 85 int forumModerationMode = GenericParamUtil.getParameterInt(request, "ForumModerationMode"); 86 String forumPassword = ""; 88 ForumBean.validateForumType(forumType); 90 ForumBean.validateForumFormatOption(forumFormatOption); 91 ForumBean.validateForumOption(forumOption); 92 ForumBean.validateForumStatus(forumStatus); 93 ForumBean.validateForumModerationMode(forumModerationMode); 94 95 int forumID = DAOFactory.getForumDAO().createForum(categoryID, "", forumName, 96 forumDesc, now, now, 97 now, 0, forumType, 98 forumFormatOption, forumOption, forumStatus, 99 forumModerationMode, forumPassword, 0, 100 0); 101 102 if (MVNForumConfig.getEnableAutoForumOwner()) { 105 int memberID = onlineUser.getMemberID(); 106 DAOFactory.getMemberForumDAO().create(memberID, forumID, MVNForumPermission.PERMISSION_FORUM_ADMIN); 107 onlineUser.reloadPermission(); 108 } 109 110 try { 112 int companyID = GenericParamUtil.getParameterInt(request, "companyid"); 113 CompanyBean companyBean = DAOFactory.getCompanyDAO().getCompany(companyID); 114 int groupID = companyBean.getGroupID(); 115 DAOFactory.getGroupForumDAO().create(groupID, forumID, MVNForumPermission.PERMISSION_NORMAL_USER); 116 } catch (Exception ex) { 117 } 119 120 ForumCache.getInstance().clear(); 122 123 request.setAttribute("ForumName", forumName); 124 } 125 126 public void prepareDelete(GenericRequest request) 127 throws BadInputException, ObjectNotFoundException, DatabaseException, AuthenticationException, AssertionException { 128 129 OnlineUser onlineUser = onlineUserManager.getOnlineUser(request); 130 MVNForumPermission permission = onlineUser.getPermission(); 131 132 int forumID = GenericParamUtil.getParameterInt(request, "forum"); 134 135 permission.ensureCanDeleteForum(forumID); 136 137 ForumBean forumBean = null; 138 try { 139 forumBean = DAOFactory.getForumDAO().getForum(forumID); 140 } catch (ObjectNotFoundException e) { 141 Locale locale = I18nUtil.getLocaleInRequest(request); 142 String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.forumid_not_exists", new Object [] {new Integer (forumID)}); 143 throw new ObjectNotFoundException(localizedMessage); 144 } 145 int numberOfThreads = DAOFactory.getThreadDAO().getNumberOfEnableThreads_inForum(forumID); 146 int numberOfPosts = DAOFactory.getPostDAO().getNumberOfEnablePosts_inForum(forumID); 147 148 int numberOfPendingThreads = DAOFactory.getThreadDAO().getNumberOfDisableThreads_inForum(forumID); 149 int numberOfPendingPosts = DAOFactory.getPostDAO().getNumberOfDisablePosts_inForum(forumID); 150 151 request.setAttribute("ForumBean", forumBean); 152 request.setAttribute("NumberOfThreads", new Integer (numberOfThreads)); 153 request.setAttribute("NumberOfPosts", new Integer (numberOfPosts)); 154 request.setAttribute("NumberOfPendingThreads", new Integer (numberOfPendingThreads)); 155 request.setAttribute("NumberOfPendingPosts", new Integer (numberOfPendingPosts)); 156 } 157 158 public void processDelete(GenericRequest request) 159 throws BadInputException, ObjectNotFoundException, DatabaseException, AuthenticationException, AssertionException { 160 161 OnlineUser onlineUser = onlineUserManager.getOnlineUser(request); 162 MVNForumPermission permission = onlineUser.getPermission(); 163 164 int forumID = GenericParamUtil.getParameterInt(request, "forum"); 166 167 permission.ensureIsAuthenticated(); 169 170 permission.ensureCanDeleteForum(forumID); 171 172 MyUtil.ensureCorrectCurrentPassword(request); 174 175 AttachmentUtil.deleteAttachments_inForum(forumID); 179 180 DAOFactory.getGroupForumDAO().delete_inForum(forumID); 181 DAOFactory.getMemberForumDAO().delete_inForum(forumID); 182 183 DAOFactory.getFavoriteThreadDAO().delete_inForum(forumID); 184 185 DAOFactory.getWatchDAO().delete_inForum(forumID); 186 187 DAOFactory.getPostDAO().delete_inForum(forumID); 188 DAOFactory.getThreadDAO().delete_inForum(forumID); 189 190 DAOFactory.getForumDAO().delete(forumID); 192 193 PostIndexer.scheduleDeletePostTask(forumID, DeletePostIndexTask.OBJECT_TYPE_FORUM); 195 196 PostCache.getInstance().clear(); 198 ThreadCache.getInstance().clear(); 199 ForumCache.getInstance().clear(); 200 } 201 202 public void prepareEdit(GenericRequest request) 203 throws BadInputException, ObjectNotFoundException, DatabaseException, AuthenticationException, AssertionException { 204 205 OnlineUser onlineUser = onlineUserManager.getOnlineUser(request); 206 MVNForumPermission permission = onlineUser.getPermission(); 207 208 int forumID = GenericParamUtil.getParameterInt(request, "forum"); 210 211 permission.ensureCanEditForum(forumID); 212 ForumBean forumBean = null; 213 Locale locale = I18nUtil.getLocaleInRequest(request); 214 try { 215 forumBean = DAOFactory.getForumDAO().getForum(forumID); 216 } catch (ObjectNotFoundException e) { 217 String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.forumid_not_exists", new Object [] {new Integer (forumID)}); 218 throw new ObjectNotFoundException(localizedMessage); 219 } 220 221 request.setAttribute("ForumBean", forumBean); 222 } 223 224 public void processUpdate(GenericRequest request, GenericResponse response) 225 throws BadInputException, ObjectNotFoundException, DatabaseException, DuplicateKeyException, 226 ForeignKeyNotFoundException, AuthenticationException, AssertionException { 227 228 OnlineUser onlineUser = onlineUserManager.getOnlineUser(request); 229 MVNForumPermission permission = onlineUser.getPermission(); 230 231 int forumID = GenericParamUtil.getParameterInt(request, "ForumID"); 233 234 permission.ensureCanEditForum(forumID); 235 236 MyUtil.saveVNTyperMode(request, response); 237 238 Timestamp now = DateUtil.getCurrentGMTTimestamp(); 239 240 int categoryID = GenericParamUtil.getParameterInt(request, "CategoryID"); 242 String forumName = GenericParamUtil.getParameterSafe(request, "ForumName", true); 243 forumName = DisableHtmlTagFilter.filter(forumName); 244 String forumDesc = GenericParamUtil.getParameterSafe(request, "ForumDesc", false); 245 forumDesc = DisableHtmlTagFilter.filter(forumDesc); 246 Timestamp forumModifiedDate = now; 247 int forumOrder = GenericParamUtil.getParameterUnsignedInt(request, "ForumOrder"); 248 int forumType = GenericParamUtil.getParameterInt(request, "ForumType"); 249 int forumFormatOption = 0; int forumOption = 0; int forumStatus = GenericParamUtil.getParameterInt(request, "ForumStatus"); 252 int forumModerationMode = GenericParamUtil.getParameterInt(request, "ForumModerationMode"); 253 254 ForumBean.validateForumType(forumType); 256 ForumBean.validateForumFormatOption(forumFormatOption); 257 ForumBean.validateForumOption(forumOption); 258 ForumBean.validateForumStatus(forumStatus); 259 ForumBean.validateForumModerationMode(forumModerationMode); 260 261 DAOFactory.getForumDAO().update(forumID, categoryID, forumName, forumDesc, 263 forumModifiedDate, forumOrder, forumType, 264 forumFormatOption, forumOption, forumStatus, 265 forumModerationMode); 266 267 ForumCache.getInstance().clear(); 269 } 270 271 274 public void processUpdateForumOrder(GenericRequest request) 275 throws BadInputException, DatabaseException, 276 ObjectNotFoundException, AuthenticationException, AssertionException { 277 278 OnlineUser onlineUser = onlineUserManager.getOnlineUser(request); 279 MVNForumPermission permission = onlineUser.getPermission(); 280 281 Locale locale = I18nUtil.getLocaleInRequest(request); 282 283 int forumID = GenericParamUtil.getParameterInt(request, "forum"); 285 286 permission.ensureCanEditForum(forumID); 287 288 Timestamp now = DateUtil.getCurrentGMTTimestamp(); 289 290 String action = GenericParamUtil.getParameterSafe(request, "action", true); 291 if (action.equals("up")) { 292 DAOFactory.getForumDAO().decreaseForumOrder(forumID, now); 293 } else if (action.equals("down")) { 294 DAOFactory.getForumDAO().increaseForumOrder(forumID, now); 295 } else { 296 String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_update_order.unknown_action", new Object [] {action}); 297 throw new BadInputException(localizedMessage); 298 } 300 301 ForumCache.getInstance().clear(); 303 } 304 305 public void prepareForumManagement(GenericRequest request) 306 throws AssertionException, DatabaseException, AuthenticationException { 307 OnlineUser onlineUser = onlineUserManager.getOnlineUser(request); 308 MVNForumPermission permission = onlineUser.getPermission(); 309 if ((permission.canEditAnyForum() == false) && (permission.canAddForum() == false)) { 310 permission.ensureCanEditAnyForum(); permission.ensureCanAddForum(); 312 } 313 } 314 } 315
| Popular Tags
|