/*************************************************************************** * Copyright (C) 2003-2007 eXo Platform SAS. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License * as published by the Free Software Foundation; either version 3 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see<http://www.gnu.org/licenses/>. ***************************************************************************/ package org.exoplatform.forum.service; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.util.Iterator; import java.util.List; import javax.jcr.NodeIterator; import org.exoplatform.container.component.ComponentPlugin; import org.exoplatform.services.organization.User; /** * Created by The eXo Platform SARL. */ public interface ForumService extends ForumServiceLegacy { /** * Adds the plugin. * * @param plugin the plugin * @throws Exception the exception */ void addPlugin(ComponentPlugin plugin) throws Exception; /** * Adds the plugin. * * @param plugin the plugin * @throws Exception the exception */ void addRolePlugin(ComponentPlugin plugin) throws Exception; /** * Adds the plugin. * * @param plugin the plugin * @throws Exception the exception */ void addInitialDataPlugin(ComponentPlugin plugin) throws Exception; void addInitialDefaultDataPlugin(ComponentPlugin plugin) throws Exception; /** * Gets the categories. * * @return the list category * @throws Exception the exception */ List<Category> getCategories() throws Exception; /** * Gets the category. * * @param categoryId is the id of category. * @return the category * @throws Exception the exception */ Category getCategory(String categoryId) throws Exception; /** * Get user and group have edit permission in a category * * @param categoryId id of category * @param type type of category * @throws Exception the exception */ String[] getPermissionTopicByCategory(String categoryId, String type) throws Exception; /** * Save category. Check exists category, if not to create new else update * exists category * * @param category is the category * @param isNew is the true when add new category or false when update * category. * @throws Exception the exception */ void saveCategory(Category category, boolean isNew) throws Exception; /** * Save moderator information for category * * @param categoryPath path of category * @param isNew is calculate new or not * @throws Exception the exception */ void calculateModerator(String categoryPath, boolean isNew) throws Exception; /** * Adds the plugin. * * @param plugin the plugin * @throws Exception the exception */ void saveModOfCategory(List<String> moderatorCate, String userId, boolean isAdd); /** * Removes the category. Check exists of category and remove it * * @param categoryId is the id of category removed * @return the category * @throws Exception the exception */ Category removeCategory(String categoryId) throws Exception; /** * Gets the forums in the category identify. * * @param categoryId is the id of category have list forum * @return the list forum * @throws Exception the exception */ List<Forum> getForums(String categoryId, String strQuery) throws Exception; /** * Gets the forum in the category identify. * * @param categoryId is the id of category identify. * @param forumId is the id of forum identify. * @return the forum * @throws Exception the exception */ Forum getForum(String categoryId, String forumId) throws Exception; /** * Modify this forum identify. * * @param forum is the object forum that should be modified * @param type is choose when modify this forum. * @throws Exception the exception */ void modifyForum(Forum forum, int type) throws Exception; /** * Save forum.Check exists forum, if not to create new else update exists * forum * * @param categoryId is the id of category identify. * @param forum is the object forum need save. * @param isNew is the new * @throws Exception the exception */ void saveForum(String categoryId, Forum forum, boolean isNew) throws Exception; /** * Save user is moderator of list forum * * @param forumPaths is the list path of forums, one forum have only path. * @param userName is the userId of Account login of portal system. * @param isDelete is false when you want to add userId into list moderator of * forums isDelete is true when you want to remove userId from list * moderator of forums. * @throws Exception the exception */ void saveModerateOfForums(List<String> forumPaths, String userName, boolean isDelete) throws Exception; /** * Remove the forum in category identify. * * @param categoryId is the id of category. * @param forumId is the id of forum need remove. * @return the forum * @throws Exception the exception */ Forum removeForum(String categoryId, String forumId) throws Exception; /** * Move forum. Move list forum to category by path of category * * @param forums is the list object forum * @param destCategoryPath is the destination path of category * @throws Exception the exception */ void moveForum(List<Forum> forums, String destCategoryPath) throws Exception; /** * Gets the page topic in forum identify. * * @param categoryId is the id of category * @param forumId is the id of forum * @param isApproved is a string that presents status isApproved of object * Topic. if it equal "true" then this function return page topic * have isApproved equal true if it equal "false" then this function * return page topic have isApproved equal false if it is empty then * this function return page topic, not check isApproved. * @param isWaiting is a string that presents status isWaiting of object * Topic. if it equal "true" then this function return page topic * have isWaiting equal true if it equal "false" then this function * return page topic have isWaiting equal false if it is empty then * this function return page topic, not check isWaiting. * @param strQuery is a string. It's content have command Query. This function * will return page topic suitable to content of that strQuery * @return the page topic * @throws Exception the exception */ JCRPageList getPageTopic(String categoryId, String forumId, String strQuery, String strOrderBy) throws Exception; /** * Gets the page topic by user. * * @param userName the user name * @param strOrderBy is a string. It's content have command to set 'order by' of Query. This function will return page topic has 'order by' * by strOrderby. * @return the page topic by user * @throws Exception the exception */ JCRPageList getPageTopicByUser(String userName, boolean isMod, String strOrderBy) throws Exception; /** * Gets the page topic old. * * @param date the date * @param forumPatch the path of forum * @return the page topic old * @throws Exception the exception */ JCRPageList getPageTopicOld(long date, String forumPatch) throws Exception; /** * Gets the list topic old. * * @param date the date * @param forumPatch path of forum * @return list of topics * @throws Exception the exception */ List<Topic> getAllTopicsOld(long date, String forumPatch) throws Exception; /** * Gets number of the topics old. * * @param date the date * @param forumPatch path of forum * @return number of topics old * @throws Exception the exception */ long getTotalTopicOld(long date, String forumPatch); /** * Gets the topics. * * @param categoryId the category id * @param forumId the forum id * @return the topics * @throws Exception the exception */ List<Topic> getTopics(String categoryId, String forumId) throws Exception; /** * Gets the topic. * * @param categoryId the category id * @param forumId the forum id * @param topicId the topic id * @param userRead the user read * @return the topic * @throws Exception the exception */ Topic getTopic(String categoryId, String forumId, String topicId, String userRead) throws Exception; /** * Update number of topic viewers * * @param path path of topic * @param userRead the user read * @throws Exception the exception */ void setViewCountTopic(String path, String userRead) throws Exception; /** * Gets the topic by path. * * @param topicPath the topic path * @param isLastPost is the last post * @return the topic by path * @throws Exception the exception */ Topic getTopicByPath(String topicPath, boolean isLastPost) throws Exception; /** * Get main informations of topic * * @param topicPath the topic path * @return the topic by path * @throws Exception the exception */ Topic getTopicSummary(String topicPath) throws Exception; /** * Gets the updated topic * * @param topic input topic * @param isSummary get main informations or not * @return the updated topic * @throws Exception the exception */ Topic getTopicUpdate(Topic topic, boolean isSummary) throws Exception; /** * Modify topic. * * @param topics the topics * @param type the type * @throws Exception the exception */ void modifyTopic(List<Topic> topics, int type) throws Exception; /** * Save topic. * * @param categoryId the category id * @param forumId the forum id * @param topic the topic * @param isNew is the new * @param isMove is the move * @throws Exception the exception */ void saveTopic(String categoryId, String forumId, Topic topic, boolean isNew, boolean isMove, MessageBuilder messageBuilder) throws Exception; /** * Removes the topic. * * @param categoryId the category id * @param forumId the forum id * @param topicId the topic id * @return the topic * @throws Exception the exception */ Topic removeTopic(String categoryId, String forumId, String topicId) throws Exception; /** * Move topic. * * @param topics the topics * @param destForumPath the target of forum path * @param mailContent mail to send notification * @param link to topic * @throws Exception the exception */ void moveTopic(List<Topic> topics, String destForumPath, String mailContent, String link) throws Exception; /** * Move topic. * * @param srcTopicPath path of moved topic * @param destTopicPath the target of topic * @param mailContent mail to send notification * @param link to topic * @throws Exception the exception */ void mergeTopic(String srcTopicPath, String destTopicPath, String mailContent, String link) throws Exception; /** * Gets the posts. * * @param categoryId the category id * @param forumId the forum id * @param topicId the topic id * @param isApproved is the approved * @param isHidden is the hidden * @param strQuery the str query * @param userLogin the user login * @return the posts * @throws Exception the exception */ JCRPageList getPosts(String categoryId, String forumId, String topicId, String isApproved, String isHidden, String strQuery, String userLogin) throws Exception; /** * Gets posts of topic. * * @param topicPath path of topic * @return the posts * @throws Exception the exception */ JCRPageList getPostForSplitTopic(String topicPath) throws Exception; /** * Gets number of the posts. * * @param categoryId the category id * @param forumId the forum id * @param topicId the topic id * @param isApproved is the approved * @param isHidden is the hidden * @param userLogin the user login * @return number of the posts * @throws Exception the exception */ long getAvailablePost(String categoryId, String forumId, String topicId, String isApproved, String isHidden, String userLogin) throws Exception; /** * Gets index of last read post. * * @param path path of post * @param isApproved is the approved * @param isHidden is the hidden * @param userLogin the user login * @return index of the post * @throws Exception the exception */ long getLastReadIndex(String path, String isApproved, String isHidden, String userLogin) throws Exception; /** * Gets the page post by user. * * @param userName the user name * @param userId the poster * @param isMod the role of poster * @param strQuery is a string. It's content have command Query. This function * will return page post suitable to content of that strQuery * @return the page post by user * @throws Exception the exception */ JCRPageList getPagePostByUser(String userName, String userId, boolean isMod, String strOrderBy) throws Exception; /** * This method should: 1. Check the user permission 2. Load the Page Post data * from the database * * @param postId the post id * @param categoryId the category id * @param forumId the forum id * @param topicId the topic id * @return the post * @throws Exception the exception */ Post getPost(String categoryId, String forumId, String topicId, String postId) throws Exception; /** * This method should: 1. Check the user permission 2. Check the madatory * field of the post 3. Save the post data into the database 4. Invalidate the * TopicView data cache * * @param topicId the topic id * @param post the post * @param isNew is the new * @param categoryId the category id * @param forumId the forum id * @throws Exception the exception */ void savePost(String categoryId, String forumId, String topicId, Post post, boolean isNew, MessageBuilder messageBuilder) throws Exception; /** * Modify posts. * * @param posts the posts * @param type type of post * @throws Exception the exception */ void modifyPost(List<Post> posts, int type) throws Exception; /** * Removes the post. * * @param categoryId the category id * @param forumId the forum id * @param topicId the topic id * @param postId the post id * @return the post * @throws Exception the exception */ Post removePost(String categoryId, String forumId, String topicId, String postId) throws Exception; /** * Move post. * * @param posts the posts * @param destTopicPath the dest topic path * @throws Exception the exception */ void movePost(String[] postPaths, String destTopicPath, boolean isCreatNewTopic, String mailContent, String link) throws Exception; /** * Gets the object name by path. * * @param path the path * @return the object name by path * @throws Exception the exception */ Object getObjectNameByPath(String path) throws Exception; /** * Gets the object name by path. * * @param path the path * @return the object name by path * @throws Exception the exception */ Object getObjectNameById(String id, String type) throws Exception; /** * Gets the all link. * * @param strQueryCate is a string. It's content have command Query. This function * will return page category suitable to content of that strQueryCate * @param strQueryForum is a string. It's content have command Query. This function * will return page forum suitable to content of that strQueryForum * @return the all link * @throws Exception the exception */ List<ForumLinkData> getAllLink(String strQueryCate, String strQueryForum) throws Exception; /** * Gets the forum home path. * * @return the forum home path * @throws Exception the exception */ String getForumHomePath() throws Exception; /** * Adds the topic in tag. * * @param tags the list tag is add * @param topicPath the topic path * @throws Exception the exception */ void addTag(List<Tag> tags, String userName, String topicPath) throws Exception; /** * UnTag the topic in tag. * * @param tagId the tag id * @param userName the user id * @param topicPath the topic path * @throws Exception the exception */ void unTag(String tagId, String userName, String topicPath) throws Exception; /** * Gets the tag. * * @param tagId the tag id * @return the tag * @throws Exception the exception */ Tag getTag(String tagId) throws Exception; /** * Gets all the tag names. * * @param strQuery query to get tags * @param userAndTopicId input id * @return the list names of tags * @throws Exception the exception */ List<String> getAllTagName(String strQuery, String userAndTopicId) throws Exception; /** * Gets all the tag name in topic. * * @param userAndTopicId input id * @return the list names of tags * @throws Exception the exception */ List<String> getTagNameInTopic(String userAndTopicId) throws Exception; /** * Gets the tags. * * @return the tags * @throws Exception the exception */ List<Tag> getAllTags() throws Exception; /** * Gets the tags by user. * * @param tagIds the list tag id of user tag in topic. * @return the tags by user add in topic * @throws Exception the exception */ List<Tag> getMyTagInTopic(String[] tagIds) throws Exception; /** * Gets the topics by tag. * * @param userIdAndtagId the user id and tag id (userId:tagId) * @param strOrderBy the topic order by * @return the topics by tag of user tag * @throws Exception the exception */ JCRPageList getTopicByMyTag(String userIdAndtagId, String strOrderBy) throws Exception; /** * Save tag. * * @param newTag the new tag * @throws Exception the exception */ void saveTag(Tag newTag) throws Exception; /** * Save user profile. * * @param userProfile the user profile * @param isOption is the option * @param isBan is the ban * @throws Exception the exception */ void saveUserProfile(UserProfile userProfile, boolean isOption, boolean isBan) throws Exception; /** * Save user profile. * * @param user user want to update * @throws Exception the exception */ void updateUserProfile(User user) throws Exception; /** * Save user moderator. * * @param userName username of a user * @param ids ids of categories or forums * @param isModeCate save for category or not * @throws Exception the exception */ void saveUserModerator(String userName, List<String> ids, boolean isModeCate) throws Exception; /** * Search for user profile * * @param userSearch user want to search * @return forum page list * @throws Exception the exception */ JCRPageList searchUserProfile(String userSearch) throws Exception; /** * Gets the user info. * * @param userName the user name * @return the user info * @throws Exception the exception */ UserProfile getUserInfo(String userName) throws Exception; /** * Gets all moderators. * * @param userName the user name * @param isModeCate is category or not * @return list of users * @throws Exception the exception */ List<String> getUserModerator(String userName, boolean isModeCate) throws Exception; /** * Save user bookmark. * * @param userName the user name * @param bookMark the book mark * @param isNew is the new * @throws Exception the exception */ void saveUserBookmark(String userName, String bookMark, boolean isNew) throws Exception; /** * Save to post if this post has an user read * * @param userId the user name * @param lastReadPostOfForum last post was read * @param lastReadPostOfTopic last post was read * @throws Exception the exception */ void saveLastPostIdRead(String userId, String[] lastReadPostOfForum, String[] lastReadPostOfTopic) throws Exception; /** * Save user collapCategories. * * @param userName the user name * @param categoryId the book mark * @param isNew is the new * @throws Exception the exception */ void saveCollapsedCategories(String userName, String categoryId, boolean isAdd) throws Exception; /** * Gets the page list user profile. * * @return the page list user profile * @throws Exception the exception */ JCRPageList getPageListUserProfile() throws Exception; /** * Gets the quick search. * * @param textQuery the text query * @param type is type user and type object(forum, topic and post) * @param pathQuery the path query * @param forumIdsOfModerator the list of forumId witch user searching has role is 'moderator'. * @return the quick search * @throws Exception the exception */ List<ForumSearch> getQuickSearch(String textQuery, String type, String pathQuery, String userId, List<String> listCateIds, List<String> listForumIds, List<String> forumIdsOfModerator) throws Exception; /** * Gets screen name * * @param userName username of user * @return screen name * @throws Exception the exception */ String getScreenName(String userName) throws Exception; /** * Gets the advanced search. * * @param eventQuery the event query * @return the advanced search * @throws Exception the exception */ List<ForumSearch> getAdvancedSearch(ForumEventQuery eventQuery, List<String> listCateIds, List<String> listForumIds) throws Exception; /** * Save forum statistic. * * @param forumStatistic the forum statistic * @throws Exception the exception */ void saveForumStatistic(ForumStatistic forumStatistic) throws Exception; /** * Gets the forum statistic. * * @return the forum statistic * @throws Exception the exception */ ForumStatistic getForumStatistic() throws Exception; /** * Save forum administration. * * @param forumAdministration the forum administration * @throws Exception the exception */ void saveForumAdministration(ForumAdministration forumAdministration) throws Exception; /** * Gets the forum administration. * * @return the forum administration * @throws Exception the exception */ ForumAdministration getForumAdministration() throws Exception; /** * Update informations for topics and posts * * @param topicCoutn number of topics * @param postCount number of posts * @throws Exception the exception */ void updateStatisticCounts(long topicCoutn, long postCount) throws Exception; /** * User login. * * @param userId the user id * @throws Exception the exception */ void userLogin(String userId) throws Exception; /** * User logout. * * @param userId the user id * @throws Exception the exception */ void userLogout(String userId) throws Exception; /** * Checks if is online. * * @param userId the user id * @return true, if is online * @throws Exception the exception */ boolean isOnline(String userId) throws Exception; /** * Gets the online users. * * @return the online users * @throws Exception the exception */ List<String> getOnlineUsers() throws Exception; /** * Gets the last login. * * @return the last login * @throws Exception the exception */ String getLastLogin() throws Exception; /** * Gets the private message. * * @param userName the user name * @param type the type * @return the private message * @throws Exception the exception */ JCRPageList getPrivateMessage(String userName, String type) throws Exception; /** * Gets new private message. * * @param userName the user name * @return number of private messages * @throws Exception the exception */ long getNewPrivateMessage(String userName) throws Exception; /** * Save private message. * * @param privateMessage the private message * @throws Exception the exception */ void savePrivateMessage(ForumPrivateMessage privateMessage) throws Exception; /** * Save read message. * * @param messageId the message id * @param userName the user name * @param type the type * @throws Exception the exception */ void saveReadMessage(String messageId, String userName, String type) throws Exception; /** * Removes the private message. * * @param messageId the message id * @param userName the user name * @param type the type * @throws Exception the exception */ void removePrivateMessage(String messageId, String userName, String type) throws Exception; /** * Get descriptions of forum * * @param userId username of an user * @return subscription of forum * @throws Exception the exception */ ForumSubscription getForumSubscription(String userId) throws Exception; /** * Save descriptions of forum * * @param forumSubscription informations want to save * @param userId username of an user * @throws Exception the exception */ void saveForumSubscription(ForumSubscription forumSubscription, String userId) throws Exception; /** * Adds the watch. * * @param watchType the watch type * @param path the path * @param values the values * @throws Exception the exception */ void addWatch(int watchType, String path, List<String> values, String currentUser) throws Exception; /** * Remove the watch. * * @param watchType the watch type * @param path the path * @param values the values * @throws Exception the exception */ void removeWatch(int watchType, String path, String values) throws Exception; /** * Get job waiting for moderator. * * @param paths the paths * @return list of forum * @throws Exception the exception */ List<ForumSearch> getJobWattingForModerator(String[] paths) throws Exception; /** * Get number of jobs are waiting for moderator. * * @param userId username of an user * @return number of jobs * @throws Exception the exception */ int getJobWattingForModeratorByUser(String userId) throws Exception; /** * Get information of message * * @param name name of message * @return message information * @throws Exception the exception */ SendMessageInfo getMessageInfo(String name) throws Exception; /** * Get messages are pending * * @return pending messages * @throws Exception the exception */ Iterator<SendMessageInfo> getPendingMessages() throws Exception; /** * Check admin role * * @param userName username of an user * @return is admin or not * @throws Exception the exception */ boolean isAdminRole(String userName) throws Exception; /** * Gets recent public posts limited by number post. * * @param number is number of post * @return the list recent public post. * @throws Exception the exception */ List<Post> getNewPosts(int number) throws Exception; /** * Gets recent posts for user and limited by number post. * * @param userName is userId for check permission. * @param number is number of post * @return the list recent post for user. * @throws Exception the exception */ List<Post> getRecentPostsForUser(String userName, int number) throws Exception; /** * Search node * * @param queryString query * @return iterator of nodes * @throws Exception the exception */ NodeIterator search(String queryString) throws Exception; /** * evaluate active of users * * @param query input a query * @throws Exception the exception */ void evaluateActiveUsers(String query) throws Exception; /** * create a user profile * * @param user saved user * @throws Exception the exception */ void createUserProfile(User user) throws Exception; /** * update user access a topic * * @param userId username of an user * @param topicId id of a topic * @throws Exception the exception */ void updateTopicAccess(String userId, String topicId) throws Exception; /** * update user access a forum * * @param userId username of an user * @param forumId id of a forum * @throws Exception the exception */ void updateForumAccess(String userId, String forumId) throws Exception; /** * export to xml object * * @param categoryId id of category * @param forumId id of forum * @param objectIds ids * @param nodePath path of node * @param bos byte array output stream * @param isExportAll is export all or not * @throws Exception the exception */ Object exportXML(String categoryId, String forumId, List<String> objectIds, String nodePath, ByteArrayOutputStream bos, boolean isExportAll) throws Exception; /** * import a stream * * @param nodePath path of node * @param bis byte array input stream * @param typeImport type of import * @throws Exception the exception */ //Note: used updateForum(String path) for update data after imported. void importXML(String nodePath, ByteArrayInputStream bis, int typeImport) throws Exception; /** * get profiles of users * * @param userList list of users * @return list of profiles * @throws Exception the exception */ List<UserProfile> getQuickProfiles(List<String> userList) throws Exception; /** * get profile of an user * * @param userName username * @return object user profile * @throws Exception the exception */ UserProfile getQuickProfile(String userName) throws Exception; /** * get more informations of user * * @param userProfile profile of user * @return user profile * @throws Exception the exception */ UserProfile getUserInformations(UserProfile userProfile) throws Exception; /** * get default user profile * * @param userName username of a user * @param ip current ip * @return user profile * @throws Exception the exception */ UserProfile getDefaultUserProfile(String userName, String ip) throws Exception; /** * update user profile * * @param userProfile input user profile * @return user profile * @throws Exception the exception */ UserProfile updateUserProfileSetting(UserProfile userProfile) throws Exception; /** * get bookmarks of user * * @param userName username of a user * @return bookmarks * @throws Exception the exception */ List<String> getBookmarks(String userName) throws Exception; /** * get user profile * * @param userName username of a user * @return user profile * @throws Exception the exception */ UserProfile getUserSettingProfile(String userName) throws Exception; /** * get user profile manager * * @param userName username of a user * @return user profile * @throws Exception the exception */ UserProfile getUserProfileManagement(String userName) throws Exception; /** * save user profile * * @param userProfile saved user profile * @throws Exception the exception */ void saveUserSettingProfile(UserProfile userProfile) throws Exception; /** * update forum * * @param path path to forum * @throws Exception the exception */ void updateForum(String path) throws Exception; /** * get list of banded ips * * @return list banded ips * @throws Exception the exception */ List<String> getBanList() throws Exception; /** * add ip to ban * * @param ip add ip * @throws Exception the exception */ boolean addBanIP(String ip) throws Exception; /** * remove banded ip * * @param ip removed banded ip * @throws Exception the exception */ void removeBan(String ip) throws Exception; /** * get list of band ips in forum * * @param forumId id of forum * @return list band ips * @throws Exception the exception */ List<String> getForumBanList(String forumId) throws Exception; /** * add ip to list of band ips in forum * * @param ip add ip * @param forumId id of forum * @throws Exception the exception */ boolean addBanIPForum(String ip, String forumId) throws Exception; /** * remove ip from list of band ips in forum * * @param ip removed ip * @param forumId id of forum * @throws Exception the exception */ void removeBanIPForum(String ip, String forumId) throws Exception; /** * get list of posts * * @param ip input ip * @param strOrderBy input order * @return list of posts * @throws Exception the exception */ JCRPageList getListPostsByIP(String ip, String strOrderBy) throws Exception; /** * register listener * * @param categoryId id of category * @throws Exception the exception */ void registerListenerForCategory(String categoryId) throws Exception; /** * remove listener * * @param path path of category * @throws Exception the exception */ void unRegisterListenerForCategory(String path) throws Exception; /** * get avatar * * @param userName username * @return avatar * @throws Exception the exception */ ForumAttachment getUserAvatar(String userName) throws Exception; /** * save avatar for user * * @param userId username * @param fileAttachment avatar * @throws Exception the exception */ void saveUserAvatar(String userId, ForumAttachment fileAttachment) throws Exception; /** * set default avatar * * @param userName username * @throws Exception the exception */ void setDefaultAvatar(String userName) throws Exception; /** * get watches * * @param userId username * @return watches by user * @throws Exception the exception */ List<Watch> getWatchByUser(String userId) throws Exception; /** * update watch email addresss for user * * @param listNodeId watch node * @param newEmailAdd watch email address * @param userId username * @throws Exception the exception */ void updateEmailWatch(List<String> listNodeId, String newEmailAdd, String userId) throws Exception; /** * get prune settings * @return list of prune settings * @throws Exception the exception */ List<PruneSetting> getAllPruneSetting() throws Exception; /** * get prune setting * * @param forumPath path of forum * @return prune setting * @throws Exception the exception */ PruneSetting getPruneSetting(String forumPath) throws Exception; /** * save a prune setting * * @param pruneSetting input prune setting * @throws Exception the exception */ void savePruneSetting(PruneSetting pruneSetting) throws Exception; /** * run prune setting * * @param pSetting input prune setting * @throws Exception the exception */ void runPrune(PruneSetting pSetting) throws Exception; /** * run prune setting * * @param forumPath path of forum * @throws Exception the exception */ void runPrune(String forumPath) throws Exception; /** * check prune setting * * @param pSetting input prune setting * @return prune setting * @throws Exception the exception */ long checkPrune(PruneSetting pSetting) throws Exception; /** * get list types of topic * * @return list of topic type * @throws Exception the exception */ List<TopicType> getTopicTypes() throws Exception; /** * get type of a topic * * @param Id id of topic * @return object topic type * @throws Exception the exception */ TopicType getTopicType(String Id) throws Exception; /** * save type of a topic * * @param topicType object topic type * @throws Exception the exception */ void saveTopicType(TopicType topicType) throws Exception; /** * remove type of a topic * * @param topicTypeId id of topic type * @throws Exception the exception */ void removeTopicType(String topicTypeId) throws Exception; /** * get page list of topics * * @param type type of topic * @return page list of topics * @throws Exception the exception */ JCRPageList getPageTopicByType(String type) throws Exception; /** * get list of topics * * @param categoryId id of category * @param forumId id of forum * @param string condition * @param strOrderBy input order * @return topic page list * @throws Exception the exception */ LazyPageList<Topic> getTopicList(String categoryId, String forumId, String string, String strOrderBy, int pageSize) throws Exception; /** * get summaries * * @param categoryId id of category * @param strQuery query * @return page list of forums * @throws Exception the exception */ List<Forum> getForumSummaries(String categoryId, String strQuery) throws Exception; /** * update user profile * * @param name username * @throws Exception the exception */ void updateUserProfileInfo(String name) throws Exception; /** * <p> * Add a new member to the forum. The forum profile is created and statistics * updated * </p> * * @param user user that becomes a new forum member * @param profileTemplate user profile template to be used for default * settings * @throws Exception */ void addMember(User user, UserProfile profileTemplate) throws Exception; /** * <p> * Removes an existing member from the forum. The forum profile is deleted and * statistics updated * </p> * * @param user user that leaves forum * @throws Exception */ void removeMember(User user) throws Exception; /** * <p> * Update information of logged in users that records in a queue to statistic and profile * </p> * * @param * @throws Exception */ public void updateLoggedinUsers() throws Exception; /** * update when delete an user * * @param userName username * @throws Exception the exception */ public void calculateDeletedUser(String userName) throws Exception; /** * create RSS * * @param objectId id of forum * @return input stream * @throws Exception the exception */ public InputStream createForumRss(String objectId, String link) throws Exception; /** * create RSS of user * * @param userId username * @param link link of RSS * @return input stream * @throws Exception the exception */ public InputStream createUserRss(String userId, String link) throws Exception; /** * add listener * * @param listener add listener * @throws Exception the exception */ public void addListenerPlugin(ForumEventListener listener) throws Exception; }