![]() |
private void saveMessage(final Connection conn, final String subject, final String message, final int topicType, final int forumId, final int userId, final String sourceIp)
{
try {
ConfigLoader.createLoginAuthenticator();
ConfigLoader.loadDaoImplementation();
SystemGlobals.loadQueries(SystemGlobals.getValue(ConfigKeys.SQL_QUERIES_GENERIC));
SystemGlobals.loadQueries(SystemGlobals.getValue(ConfigKeys.SQL_QUERIES_DRIVER));
final JForumExecutionContext executionContext = JForumExecutionContext.get();
executionContext.setConnection(conn);
JForumExecutionContext.set(executionContext);
final User user = new User(userId);
// Create topic
final Topic topic = new Topic();
topic.setPostedBy(user);
topic.setTitle(subject);
topic.setTime(new Date());
topic.setType(topicType);
topic.setForumId(forumId);
final TopicDAO topicDao = DataAccessDriver.getInstance().newTopicDAO();
topicDao.addNew(topic);
// Create post
final Post post = new Post();
post.setSubject(topic.getTitle());
post.setTime(topic.getTime());
post.setUserId(user.getId());
post.setText(message);
post.setForumId(topic.getForumId());
post.setSmiliesEnabled(true);
post.setHtmlEnabled(true);
post.setBbCodeEnabled(true);
post.setUserIp(sourceIp);
post.setTopicId(topic.getId());
final PostDAO postDao = DataAccessDriver.getInstance().newPostDAO();
postDao.addNew(post);
// Update topic
topic.setFirstPostId(post.getId());
topic.setLastPostId(post.getId());
topicDao.update(topic);
DataAccessDriver.getInstance().newUserDAO().incrementPosts(post.getUserId());
// Update forum stats
final ForumDAO forumDao = DataAccessDriver.getInstance().newForumDAO();
forumDao.incrementTotalTopics(forumId, 1);
forumDao.setLastPost(forumId, post.getId());
}
finally {
final JForumExecutionContext executionContext = JForumExecutionContext.get();
executionContext.setConnection(null);
JForumExecutionContext.set(executionContext);
}
}