TopicReplySpammer.java
Upload User: gdxydsw
Upload Date: 2019-01-29
Package Size: 16721k
Code Size: 5k
Category:

Java Develop

Development Platform:

Java

  1. /*
  2.  * Copyright (c) JForum Team
  3.  * All rights reserved.
  4.  * 
  5.  * Redistribution and use in source and binary forms, 
  6.  * with or without modification, are permitted provided 
  7.  * that the following conditions are met:
  8.  * 
  9.  * 1) Redistributions of source code must retain the above 
  10.  * copyright notice, this list of conditions and the 
  11.  * following  disclaimer.
  12.  * 2)  Redistributions in binary form must reproduce the 
  13.  * above copyright notice, this list of conditions and 
  14.  * the following disclaimer in the documentation and/or 
  15.  * other materials provided with the distribution.
  16.  * 3) Neither the name of "Rafael Steil" nor 
  17.  * the names of its contributors may be used to endorse 
  18.  * or promote products derived from this software without 
  19.  * specific prior written permission.
  20.  * 
  21.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT 
  22.  * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
  23.  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, 
  24.  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
  25.  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
  26.  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 
  27.  * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 
  28.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
  29.  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
  30.  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
  31.  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
  32.  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
  33.  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
  34.  * IN CONTRACT, STRICT LIABILITY, OR TORT 
  35.  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
  36.  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
  37.  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
  38.  * 
  39.  * This file creation date: 04/03/2004 - 20:32:13
  40.  * The JForum Project
  41.  * http://www.jforum.net
  42.  */
  43. package net.jforum.util.mail;
  44. import java.text.MessageFormat;
  45. import java.util.List;
  46. import net.jforum.api.integration.mail.pop.MessageId;
  47. import net.jforum.entities.Post;
  48. import net.jforum.entities.Topic;
  49. import net.jforum.util.preferences.ConfigKeys;
  50. import net.jforum.util.preferences.SystemGlobals;
  51. import net.jforum.view.forum.common.PostCommon;
  52. import net.jforum.view.forum.common.ViewCommon;
  53. import freemarker.template.SimpleHash;
  54. /**
  55.  * Notify users of replies to existing topics
  56.  * @author Rafael Steil
  57.  * @version $Id: TopicReplySpammer.java,v 1.5 2007/08/20 19:35:51 rafaelsteil Exp $
  58.  */
  59. public class TopicReplySpammer extends Spammer 
  60. {
  61. /**
  62.  * Creates a new instance with a message's contents send
  63.  * @param topic the topic we are replying to 
  64.  * @param post the post instance, with the message's contents. If null,
  65.  * only a notification will be sent
  66.  * @param users list of users who'll be notified
  67.  */
  68. public TopicReplySpammer(Topic topic, Post post, List users)
  69. {
  70. // Make the topic url
  71. StringBuffer page = new StringBuffer();
  72. int postsPerPage = SystemGlobals.getIntValue(ConfigKeys.POSTS_PER_PAGE);
  73. if (topic.getTotalReplies() >= postsPerPage) {
  74. page.append(((topic.getTotalReplies() / postsPerPage)) * postsPerPage).append('/');
  75. }
  76. String forumLink = ViewCommon.getForumLink();
  77. String path = this.messageLink(topic, page, forumLink);
  78. String unwatch = this.unwatchLink(topic, forumLink);
  79. SimpleHash params = new SimpleHash();
  80. params.put("topic", topic);
  81. params.put("path", path);
  82. params.put("forumLink", forumLink);
  83. params.put("unwatch", unwatch);
  84. if (post != null) {
  85. this.setMessageId(MessageId.buildMessageId(post.getId(), topic.getId(), topic.getForumId()));
  86. post = PostCommon.preparePostForDisplay(post);
  87. params.put("message", post.getText());
  88. }
  89. this.setUsers(users);
  90. if (topic.getFirstPostId() != post.getId()) {
  91. this.setInReplyTo(MessageId.buildInReplyTo(topic));
  92. }
  93. this.setTemplateParams(params);
  94. String subject = SystemGlobals.getValue(ConfigKeys.MAIL_NEW_ANSWER_SUBJECT);
  95. this.prepareMessage(
  96. MessageFormat.format(subject, new Object[] { topic.getTitle() }),
  97. SystemGlobals.getValue(ConfigKeys.MAIL_NEW_ANSWER_MESSAGE_FILE));
  98. }
  99. /**
  100.  * Creates the "unwatch" link for the current topic
  101.  * @param topic the topic
  102.  * @param forumLink the forum's link
  103.  * @return the unwath link
  104.  */
  105. private String unwatchLink(Topic topic, String forumLink)
  106. {
  107. return new StringBuffer(128)
  108. .append(forumLink)
  109. .append("posts/unwatch/")
  110. .append(topic.getId())
  111. .append(SystemGlobals.getValue(ConfigKeys.SERVLET_EXTENSION))
  112. .toString();
  113. }
  114. /**
  115.  * Creates the link to read the message online
  116.  * @param topic the topic
  117.  * @param page the current topic's page
  118.  * @param forumLink the forum's link
  119.  * @return the link to the message
  120.  */
  121. private String messageLink(Topic topic, StringBuffer page, String forumLink)
  122. {
  123. return new StringBuffer(128)
  124. .append(forumLink)
  125. .append("posts/list/")
  126. .append(page.toString())
  127. .append(topic.getId()) 
  128. .append(SystemGlobals.getValue(ConfigKeys.SERVLET_EXTENSION))
  129. .append('#')
  130. .append(topic.getLastPostId())
  131. .toString();
  132. }
  133. }