Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
ForumAction.java
Package: jforum-2.1.8-src.zip [view]
Upload User: gdxydsw
Upload Date: 2019-01-29
Package Size: 16721k
Code Size: 12k
Category:
Java Develop
Development Platform:
Java
- /*
- * Copyright (c) JForum Team
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
- * that the following conditions are met:
- *
- * 1) Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * 2) Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * 3) Neither the name of "Rafael Steil" nor
- * the names of its contributors may be used to endorse
- * or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
- * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
- * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
- * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
- *
- * This file creation date: Apr 24, 2003 / 10:15:07 PM
- * The JForum Project
- * http://www.jforum.net
- */
- package net.jforum.view.forum;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.GregorianCalendar;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import net.jforum.Command;
- import net.jforum.JForumExecutionContext;
- import net.jforum.SessionFacade;
- import net.jforum.dao.DataAccessDriver;
- import net.jforum.dao.ForumDAO;
- import net.jforum.dao.ModerationDAO;
- import net.jforum.entities.Forum;
- import net.jforum.entities.MostUsersEverOnline;
- import net.jforum.entities.UserSession;
- import net.jforum.repository.ForumRepository;
- import net.jforum.repository.SecurityRepository;
- import net.jforum.security.SecurityConstants;
- import net.jforum.util.I18n;
- import net.jforum.util.preferences.ConfigKeys;
- import net.jforum.util.preferences.SystemGlobals;
- import net.jforum.util.preferences.TemplateKeys;
- import net.jforum.view.admin.ModerationAction;
- import net.jforum.view.forum.common.ForumCommon;
- import net.jforum.view.forum.common.PostCommon;
- import net.jforum.view.forum.common.TopicsCommon;
- import net.jforum.view.forum.common.ViewCommon;
- /**
- * @author Rafael Steil
- * @version $Id: ForumAction.java,v 1.76 2007/09/03 12:24:32 rafaelsteil Exp $
- */
- public class ForumAction extends Command
- {
- /**
- * List all the forums (first page of forum index)?
- */
- public void list()
- {
- this.setTemplateName(TemplateKeys.FORUMS_LIST);
- this.context.put("allCategories", ForumCommon.getAllCategoriesAndForums(true));
- this.context.put("topicsPerPage", new Integer(SystemGlobals.getIntValue(ConfigKeys.TOPICS_PER_PAGE)));
- this.context.put("rssEnabled", SystemGlobals.getBoolValue(ConfigKeys.RSS_ENABLED));
- this.context.put("totalMessages", new Integer(ForumRepository.getTotalMessages()));
- this.context.put("totalRegisteredUsers", ForumRepository .totalUsers());
- this.context.put("lastUser", ForumRepository.lastRegisteredUser());
- SimpleDateFormat df = new SimpleDateFormat(SystemGlobals.getValue(ConfigKeys.DATE_TIME_FORMAT));
- GregorianCalendar gc = new GregorianCalendar();
- this.context.put("now", df.format(gc.getTime()));
- this.context.put("lastVisit", df.format(SessionFacade.getUserSession().getLastVisit()));
- this.context.put("forumRepository", new ForumRepository());
- // Online Users
- this.context.put("totalOnlineUsers", new Integer(SessionFacade.size()));
- int aid = SystemGlobals.getIntValue(ConfigKeys.ANONYMOUS_USER_ID);
- List onlineUsersList = SessionFacade.getLoggedSessions();
- // Check for an optional language parameter
- UserSession currentUser = SessionFacade.getUserSession();
- if (currentUser.getUserId() == aid) {
- String lang = this.request.getParameter("lang");
- if (lang != null && I18n.languageExists(lang)) {
- currentUser.setLang(lang);
- }
- }
- // If there are only guest users, then just register
- // a single one. In any other situation, we do not
- // show the "guest" username
- if (onlineUsersList.size() == 0) {
- UserSession us = new UserSession();
- us.setUserId(aid);
- us.setUsername(I18n.getMessage("Guest"));
- onlineUsersList.add(us);
- }
- int registeredSize = SessionFacade.registeredSize();
- int anonymousSize = SessionFacade.anonymousSize();
- int totalOnlineUsers = registeredSize + anonymousSize;
- this.context.put("userSessions", onlineUsersList);
- this.context.put("totalOnlineUsers", new Integer(totalOnlineUsers));
- this.context.put("totalRegisteredOnlineUsers", new Integer(registeredSize));
- this.context.put("totalAnonymousUsers", new Integer(anonymousSize));
- // Most users ever online
- MostUsersEverOnline mostUsersEverOnline = ForumRepository.getMostUsersEverOnline();
- if (totalOnlineUsers > mostUsersEverOnline.getTotal()) {
- mostUsersEverOnline.setTotal(totalOnlineUsers);
- mostUsersEverOnline.setTimeInMillis(System.currentTimeMillis());
- ForumRepository.updateMostUsersEverOnline(mostUsersEverOnline);
- }
- this.context.put("mostUsersEverOnline", mostUsersEverOnline);
- }
- public void moderation()
- {
- this.context.put("openModeration", true);
- this.show();
- }
- /**
- * Display all topics in a forum
- */
- public void show()
- {
- int forumId = this.request.getIntParameter("forum_id");
- ForumDAO fm = DataAccessDriver.getInstance().newForumDAO();
- // The user can access this forum?
- Forum forum = ForumRepository.getForum(forumId);
- if (forum == null || !ForumRepository.isCategoryAccessible(forum.getCategoryId())) {
- new ModerationHelper().denied(I18n.getMessage("ForumListing.denied"));
- return;
- }
- int start = ViewCommon.getStartPage();
- List tmpTopics = TopicsCommon.topicsByForum(forumId, start);
- this.setTemplateName(TemplateKeys.FORUMS_SHOW);
- // Moderation
- UserSession userSession = SessionFacade.getUserSession();
- boolean isLogged = SessionFacade.isLogged();
- boolean isModerator = userSession.isModerator(forumId);
- boolean canApproveMessages = (isLogged && isModerator
- && SecurityRepository.canAccess(SecurityConstants.PERM_MODERATION_APPROVE_MESSAGES));
- Map topicsToApprove = new HashMap();
- if (canApproveMessages) {
- ModerationDAO mdao = DataAccessDriver.getInstance().newModerationDAO();
- topicsToApprove = mdao.topicsByForum(forumId);
- this.context.put("postFormatter", new PostCommon());
- }
- this.context.put("topicsToApprove", topicsToApprove);
- this.context.put("attachmentsEnabled", SecurityRepository.canAccess(SecurityConstants.PERM_ATTACHMENTS_ENABLED,
- Integer.toString(forumId))
- || SecurityRepository.canAccess(SecurityConstants.PERM_ATTACHMENTS_DOWNLOAD));
- this.context.put("topics", TopicsCommon.prepareTopics(tmpTopics));
- this.context.put("allCategories", ForumCommon.getAllCategoriesAndForums(false));
- this.context.put("forum", forum);
- this.context.put("rssEnabled", SystemGlobals.getBoolValue(ConfigKeys.RSS_ENABLED));
- this.context.put("pageTitle", forum.getName());
- this.context.put("canApproveMessages", canApproveMessages);
- this.context.put("replyOnly", !SecurityRepository.canAccess(SecurityConstants.PERM_REPLY_ONLY, Integer
- .toString(forum.getId())));
- this.context.put("readonly", !SecurityRepository.canAccess(SecurityConstants.PERM_READ_ONLY_FORUMS, Integer
- .toString(forumId)));
- this.context.put("watching", fm.isUserSubscribed(forumId, userSession.getUserId()));
- // Pagination
- int topicsPerPage = SystemGlobals.getIntValue(ConfigKeys.TOPICS_PER_PAGE);
- int postsPerPage = SystemGlobals.getIntValue(ConfigKeys.POSTS_PER_PAGE);
- int totalTopics = forum.getTotalTopics();
- ViewCommon.contextToPagination(start, totalTopics, topicsPerPage);
- this.context.put("postsPerPage", new Integer(postsPerPage));
- TopicsCommon.topicListingBase();
- this.context.put("moderator", isLogged && isModerator);
- }
- // Make an URL to some action
- private String makeRedirect(String action)
- {
- String path = this.request.getContextPath() + "/forums/" + action + "/";
- String thisPage = this.request.getParameter("start");
- if (thisPage != null && !thisPage.equals("0")) {
- path += thisPage + "/";
- }
- String forumId = this.request.getParameter("forum_id");
- if (forumId == null) {
- forumId = this.request.getParameter("persistData");
- }
- path += forumId + SystemGlobals.getValue(ConfigKeys.SERVLET_EXTENSION);
- return path;
- }
- // Mark all topics as read
- public void readAll()
- {
- String forumId = this.request.getParameter("forum_id");
- if (forumId != null) {
- Map tracking = SessionFacade.getTopicsReadTimeByForum();
- if (tracking == null) {
- tracking = new HashMap();
- }
- tracking.put(new Integer(forumId), new Long(System.currentTimeMillis()));
- SessionFacade.setAttribute(ConfigKeys.TOPICS_READ_TIME_BY_FORUM, tracking);
- }
- if (forumId != null) {
- JForumExecutionContext.setRedirect(this.makeRedirect("show"));
- }
- else {
- JForumExecutionContext.setRedirect(this.request.getContextPath() + "/forums/list"
- + SystemGlobals.getValue(ConfigKeys.SERVLET_EXTENSION));
- }
- }
- // Messages since last visit
- public void newMessages()
- {
- this.request.addParameter("from_date", SessionFacade.getUserSession().getLastVisit());
- this.request.addParameter("to_date", new Date());
- SearchAction searchAction = new SearchAction(this.request, this.response, this.context);
- searchAction.newMessages();
- this.setTemplateName(TemplateKeys.SEARCH_NEW_MESSAGES);
- }
- public void approveMessages()
- {
- if (SessionFacade.getUserSession().isModerator(this.request.getIntParameter("forum_id"))) {
- new ModerationAction(this.context, this.request).doSave();
- }
- JForumExecutionContext.setRedirect(this.request.getContextPath() + "/forums/show/"
- + this.request.getParameter("forum_id") + SystemGlobals.getValue(ConfigKeys.SERVLET_EXTENSION));
- }
- /**
- * Action when users click on "watch this forum"
- * It gets teh forum_id and userId, and put them into a watch_forum table in the database;
- */
- public void watchForum()
- {
- int forumId = this.request.getIntParameter("forum_id");
- int userId = SessionFacade.getUserSession().getUserId();
- this.watchForum(DataAccessDriver.getInstance().newForumDAO(), forumId, userId);
- JForumExecutionContext.setRedirect(this.redirectLinkToShowAction(forumId));
- }
- public void banned()
- {
- this.setTemplateName(TemplateKeys.FORUMS_BANNED);
- this.context.put("message", I18n.getMessage("ForumBanned.banned"));
- }
- private String redirectLinkToShowAction(int forumId)
- {
- int start = ViewCommon.getStartPage();
- return this.request.getContextPath() + "/forums/show/" + (start > 0 ? start + "/" : "") + forumId
- + SystemGlobals.getValue(ConfigKeys.SERVLET_EXTENSION);
- }
- /**
- *
- * @param dao ForumDAO
- * @param forumId int
- * @param userId int
- */
- private void watchForum(ForumDAO dao, int forumId, int userId)
- {
- if (SessionFacade.isLogged() && !dao.isUserSubscribed(forumId, userId)) {
- dao.subscribeUser(forumId, userId);
- }
- }
- /**
- * Unwatch the forum watched.
- */
- public void unwatchForum()
- {
- if (SessionFacade.isLogged()) {
- int forumId = this.request.getIntParameter("forum_id");
- int userId = SessionFacade.getUserSession().getUserId();
- DataAccessDriver.getInstance().newForumDAO().removeSubscription(forumId, userId);
- String returnPath = this.redirectLinkToShowAction(forumId);
- this.setTemplateName(TemplateKeys.POSTS_UNWATCH);
- this.context.put("message", I18n.getMessage("ForumBase.forumUnwatched", new String[] { returnPath }));
- }
- else {
- this.setTemplateName(ViewCommon.contextToLogin());
- }
- }
- }