package org.sakaiproject.tool.messageforums.ui; import java.text.DateFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.sakaiproject.api.app.messageforums.Area; import org.sakaiproject.api.app.messageforums.AreaManager; import org.sakaiproject.api.app.messageforums.DiscussionForumService; import org.sakaiproject.api.app.messageforums.MessageForumsForumManager; import org.sakaiproject.api.app.messageforums.MessageForumsTypeManager; import org.sakaiproject.api.app.messageforums.PrivateForum; import org.sakaiproject.api.app.messageforums.SynopticMsgcntrItem; import org.sakaiproject.api.app.messageforums.SynopticMsgcntrManager; import org.sakaiproject.api.app.messageforums.Topic; import org.sakaiproject.api.app.messageforums.ui.PrivateMessageManager; import org.sakaiproject.component.app.messageforums.dao.hibernate.PrivateTopicImpl; import org.sakaiproject.component.app.messageforums.dao.hibernate.SynopticMsgcntrItemImpl; import org.sakaiproject.component.cover.ServerConfigurationService; import org.sakaiproject.entity.api.ResourceProperties; import org.sakaiproject.exception.IdUnusedException; import org.sakaiproject.site.api.Site; import org.sakaiproject.site.api.ToolConfiguration; import org.sakaiproject.site.cover.SiteService; import org.sakaiproject.tool.cover.SessionManager; import org.sakaiproject.tool.cover.ToolManager; import org.sakaiproject.tool.messageforums.PrivateMessagesTool; import org.sakaiproject.tool.messageforums.SynopticSiteSemesterComparator; import org.sakaiproject.tool.messageforums.SynopticSitesPreferencesComparator; import org.sakaiproject.user.api.Preferences; import org.sakaiproject.user.cover.PreferencesService; public class MessageForumSynopticBeanLite { // transient only persists in request scope private transient Boolean myWorkspace = null; private transient Boolean anyMFToolInSite = null; private transient List<DecoratedSynopticMsgcntrItem> myContents = null; private transient DecoratedSynopticMsgcntrItem siteHomepageContent = null; /** to get accces to log file */ private static final Log LOG = LogFactory.getLog(MessageForumSynopticBeanLite.class); private SynopticMsgcntrManager synopticMsgcntrManager; private MessageForumsForumManager forumsManager; private MessageForumsTypeManager typeManager; private AreaManager areaManager; private PrivateMessageManager pvtMessageManager; private int myContentsSize = -1; private HashMap mfPageInSiteMap, sitesMap; private int myDisplayedSites = 0; /** The string that Charon uses for preferences. */ private static final String CHARON_PREFS = "sakai:portal:sitenav"; private static final String PERFORMANCE_2 = "2"; private String performance; private Boolean userRequestSynoptic; private Boolean disableMyWorkspace; private Boolean disableMessages; private Boolean disableForums; private String disableMyWorkspaceDisabledMessage; public List<DecoratedSynopticMsgcntrItem> getContents(){ if(isMyWorkspace() && !isDisableMyWorkspace()){ if(myContents != null){ return myContents; } performance = getPerformance(); userRequestSynoptic = isUserRequestSynoptic(); List<SynopticMsgcntrItem> synItems; myContentsSize = -1; myDisplayedSites = 0; //findWorkspaceSynopticMsgcntrItems synItems = getSynopticMsgcntrManager().getWorkspaceSynopticMsgcntrItems(getCurrentUser()); //Grab user's preferences for site order, and remove sites that user has removed Preferences prefs = PreferencesService.getPreferences(getCurrentUser()); ResourceProperties props = prefs.getProperties(CHARON_PREFS); List<String> orderedSites = props.getPropertyList("order"); List<String> excludedSites = props.getPropertyList("exclude"); if(excludedSites != null){ //user has set preferences so filter out any missing sites: for (Iterator iterator = synItems.iterator(); iterator .hasNext();) { SynopticMsgcntrItem synItem = (SynopticMsgcntrItem) iterator.next(); if(excludedSites.contains(synItem.getSiteId())){ iterator.remove(); } } } synItems = sortSynopticMsgcntrList(synItems, orderedSites); myContents = new ArrayList<DecoratedSynopticMsgcntrItem>(); /** * This sites query needs to be the same as what the portal calls... this is to take advantage of query caching. * In theory sorting by TITLE_ASC seems like it would be slower, but that actually allows the query cache to find * it. If this is causing a slow down, check to see if portal changed it's getSites query. */ List<Site> sites = SiteService.getSites( org.sakaiproject.site.api.SiteService.SelectionType.ACCESS, null, null, null, org.sakaiproject.site.api.SiteService.SortType.TITLE_ASC, null); for (SynopticMsgcntrItem synopticMsgcntrItem : synItems) { boolean deleteSite = false; boolean resetSynopticInfo = false; Site site = null; String synopticSiteId = synopticMsgcntrItem.getSiteId(); if(synopticSiteId != null && !"".equals(synopticSiteId)){ for (Site itrSite : sites) { if(synopticSiteId.equals(itrSite.getId())){ site = itrSite; break; } } //only add if the site exists: if(site != null){ //check if the site title has changed: if(synopticMsgcntrItem.getSiteTitle() != null && !synopticMsgcntrItem.getSiteTitle().equals(site.getTitle())){ //update all site titles in table getSynopticMsgcntrManager().updateAllSiteTitles(synopticMsgcntrItem.getSiteId(), site.getTitle()); //set the current synoptic item's site title to the correct title synopticMsgcntrItem.setSiteTitle(site.getTitle()); } if(!PERFORMANCE_2.equals(performance)){ DecoratedSynopticMsgcntrItem dSynopticItem = new DecoratedSynopticMsgcntrItem(synopticMsgcntrItem, site); //this covers the case when a tool had unread messages but then the tool was //removed from the site boolean isMessageForumsPageInSite = isMessageForumsPageInSite(site); if(!isDisableMessages() && !isMessageForumsPageInSite && !isMessagesPageInSite(site) && dSynopticItem.getNewMessagesCount() != 0){ //update synoptic item since the db is out of sync: resetSynopticInfo = true; }else if(!isDisableForums() && !isMessageForumsPageInSite && !isForumsPageInSite(site) && dSynopticItem.getNewForumCount() != 0){ //update synoptic item since it the db is out of sync: resetSynopticInfo = true; }else{ //everything checks out, so add it to the list myContents.add(dSynopticItem); } }else{ DecoratedSynopticMsgcntrItem dSynopticItem = new DecoratedSynopticMsgcntrItem(synopticMsgcntrItem, null); myContents.add(dSynopticItem); } }else{ //site is null (could not find site is access list) deleteSite = true; } }else{ //site Id is null or "" deleteSite = true; } if(deleteSite){ //synoptic item for site needs to be delete getSynopticMsgcntrManager().deleteSynopticMsgcntrItem(synopticMsgcntrItem); } if(resetSynopticInfo){ //update synoptic item since the db is out of sync: getSynopticMsgcntrManager() .resetMessagesAndForumSynopticInfo( synopticMsgcntrItem.getUserId(), synopticMsgcntrItem.getSiteId()); } } myContentsSize = myContents.size(); for (Iterator iterator = myContents.iterator(); iterator.hasNext();) { DecoratedSynopticMsgcntrItem dSynopticMsgcntrItem = (DecoratedSynopticMsgcntrItem) iterator .next(); if(!dSynopticMsgcntrItem.getSynopticMsgcntrItem().isHideItem()) myDisplayedSites++; } return myContents; }else{ //not workspace or workspace is disabled return null; } } public int returnContentsSize(){ return getContents().size(); } public void proccessActionSaveChanges(){ boolean anySaved = false; for (Iterator iterator = getContents().iterator(); iterator.hasNext();) { DecoratedSynopticMsgcntrItem dSynItem = (DecoratedSynopticMsgcntrItem) iterator.next(); if(dSynItem.hasChanged()){ anySaved = true; getSynopticMsgcntrManager().saveSynopticMsgcntrItem(dSynItem.getSynopticMsgcntrItem()); } } if(anySaved){ //reset my contents to update information myContents = null; } } public void showSynopticInfo(){ setUserRequestSynoptic(Boolean.valueOf(false)); } public DecoratedSynopticMsgcntrItem getSiteHomepageContent(){ if(siteHomepageContent != null){ return siteHomepageContent; } SynopticMsgcntrItem synItem; if(isMyWorkspace()){ //do nothing }else if(getCurrentUser() == null){ //return empty synopticMsgcntrItem for anon users Site site; try { site = SiteService.getSite(getContext()); synItem = new SynopticMsgcntrItemImpl(); synItem.setSiteId(site.getId()); siteHomepageContent = new DecoratedSynopticMsgcntrItem(synItem, site); } catch (IdUnusedException e) { //we not longer need this record so delete it e.printStackTrace(); } }else{ //findSiteSynopticMsgcntrItems synItem = getSynopticMsgcntrManager().getSiteSynopticMsgcntrItem(getCurrentUser(), getContext()); if(synItem != null){ Site site; try { //only add if the site exists: site = SiteService.getSite(synItem.getSiteId()); //check if the site title has changed: if(synItem.getSiteTitle() != null && !synItem.getSiteTitle().equals(site.getTitle())){ //update all site titles in table getSynopticMsgcntrManager().updateAllSiteTitles(site.getId(), site.getTitle()); //set the current synoptic item's site title to the correct title synItem.setSiteTitle(site.getTitle()); } siteHomepageContent = new DecoratedSynopticMsgcntrItem(synItem, site); } catch (IdUnusedException e) { //we not longer need this record so delete it getSynopticMsgcntrManager().deleteSynopticMsgcntrItem(synItem); e.printStackTrace(); } }else{ //add a new entry to the table String userId = SessionManager.getCurrentSessionUserId(); String siteId = ToolManager.getCurrentPlacement().getContext(); //calling resetMessagesAndForumSynopticInfo will create a new item (if needed) and //set the correct counts for new messgaes getSynopticMsgcntrManager().resetMessagesAndForumSynopticInfo(userId, siteId); SynopticMsgcntrItem synopticMsgcntrItem = getSynopticMsgcntrManager().getSiteSynopticMsgcntrItem(userId, siteId); Site site; try { //only add if the site exists: site = SiteService.getSite(synopticMsgcntrItem.getSiteId()); siteHomepageContent = new DecoratedSynopticMsgcntrItem(synopticMsgcntrItem, site); } catch (IdUnusedException e) { //we not longer need this record so delete it getSynopticMsgcntrManager().deleteSynopticMsgcntrItem(synopticMsgcntrItem); e.printStackTrace(); } } } return siteHomepageContent; } private String getSiteTitle(){ try { return SiteService.getSite(ToolManager.getCurrentPlacement().getContext()).getTitle(); } catch (IdUnusedException e) { e.printStackTrace(); } return ""; } /** * Returns TRUE if on MyWorkspace, FALSE if on a specific site * * @return * TRUE if on MyWorkspace, FALSE if on a specific site */ public boolean isMyWorkspace() { // myWorkspace is a transient variable if (myWorkspace == null) { // get context id final String siteId = getContext(); if (SiteService.getUserSiteId("admin").equals(siteId)) return false; myWorkspace = SiteService.isUserSite(siteId); LOG.debug("Result of determining if My Workspace: " + myWorkspace); } return myWorkspace.booleanValue(); } /** * Returns current context * * @return * String The site id (context) where tool currently located */ public String getContext() { return ToolManager.getCurrentPlacement().getContext(); } public SynopticMsgcntrManager getSynopticMsgcntrManager() { return synopticMsgcntrManager; } public void setSynopticMsgcntrManager( SynopticMsgcntrManager synopticMsgcntrManager) { this.synopticMsgcntrManager = synopticMsgcntrManager; } public String getCurrentUser(){ return SessionManager.getCurrentSessionUserId(); } public String getServerUrl() { return ServerConfigurationService.getServerUrl(); } public List<SynopticMsgcntrItem> sortSynopticMsgcntrList(List<SynopticMsgcntrItem> list, List<String> orderedSites) { if(orderedSites == null){ //user hasn't set his preference for site order: //this sorts the list in two groups: Course sites then Non-Course Sites // -A course site lists higher than a non-course site // -Non course sites are ordered alphabetically // -Course sites are ordered by year, then semester, then alphabetically Collections.sort(list, new SynopticSiteSemesterComparator()); }else{ //this sorts the list by user preferences Collections.sort(list, new SynopticSitesPreferencesComparator(orderedSites)); } return list; } /** * Determines if any MF tool in site. variable is transient to be per request. * * @return * TRUE if Messages & Forums, Messages, or Forums tool in site */ public boolean isAnyMFToolInSite() { if (anyMFToolInSite == null) { anyMFToolInSite = isMessageForumsPageInSite() || isMessagesPageInSite() || isForumsPageInSite(); } return anyMFToolInSite; } /** * @return TRUE if Messages tool exists in this site, * FALSE otherwise */ public boolean isForumsPageInSite() { boolean mfToolExists = false; try { final Site thisSite = getSite(getContext()); mfToolExists = isForumsPageInSite(thisSite); } catch (IdUnusedException e) { LOG.error("IdUnusedException while trying to check if site has MF tool."); } return mfToolExists; } /** * @return TRUE if Forums tool exists in this site, * FALSE otherwise */ private boolean isForumsPageInSite(Site thisSite) { return isToolInSite(thisSite, DiscussionForumService.FORUMS_TOOL_ID); } /** * @return TRUE if Messages tool exists in this site, * FALSE otherwise */ public boolean isMessagesPageInSite() { boolean mfToolExists = false; try { final Site thisSite = getSite(getContext()); mfToolExists = isMessagesPageInSite(thisSite); } catch (IdUnusedException e) { LOG.error("IdUnusedException while trying to check if site has MF tool."); } return mfToolExists; } /** * @return TRUE if Messages tool exists in this site, * FALSE otherwise */ private boolean isMessagesPageInSite(Site thisSite) { return isToolInSite(thisSite, DiscussionForumService.MESSAGES_TOOL_ID); } /** * @return TRUE if Message Forums (Message Center) exists in this site, * FALSE otherwise */ public boolean isMessageForumsPageInSite() { boolean mfToolExists = false; try { final Site thisSite = getSite(getContext()); mfToolExists = isMessageForumsPageInSite(thisSite); } catch (IdUnusedException e) { LOG.error("IdUnusedException while trying to check if site has MF tool."); } return mfToolExists; } /** * Returns the Site object for this id, if it exists. * If not, returns IdUnusedException * * @param siteId * The site id to check * * @return * Site object for this id */ private Site getSite(String siteId) throws IdUnusedException { if (sitesMap == null) { sitesMap = new HashMap(); } if (sitesMap.get(siteId) == null) { Site site = SiteService.getSite(siteId); sitesMap.put(site.getId(), site); return site; } else { return (Site) sitesMap.get(siteId); } } /** * @return TRUE if Messages & Forums (Message Center) exists in this site, * FALSE otherwise */ private boolean isMessageForumsPageInSite(Site thisSite) { if (mfPageInSiteMap == null) { mfPageInSiteMap = new HashMap(); } Boolean isMFPageInSite; if ((isMFPageInSite = (Boolean) mfPageInSiteMap.get(thisSite)) == null) { isMFPageInSite = isToolInSite(thisSite, DiscussionForumService.MESSAGE_CENTER_ID); mfPageInSiteMap.put(thisSite, isMFPageInSite); } return isMFPageInSite; } /** * Return TRUE if tool with id passed in exists in site passed in * FALSE otherwise. * * @param thisSite * Site object to check * @param toolId * Tool id to be checked * * @return */ private boolean isToolInSite(Site thisSite, String toolId) { final Collection toolsInSite = thisSite.getTools(toolId); return ! toolsInSite.isEmpty(); } public String getPerformance() { if(performance == null){ performance = ServerConfigurationService.getString(SynopticMsgcntrManager.MYWORKSPACE_PERFORMANCE); } return performance; } public void setPerformance(String performance) { this.performance = performance; } public Boolean isUserRequestSynoptic() { if(userRequestSynoptic == null){ userRequestSynoptic = ServerConfigurationService.getBoolean(SynopticMsgcntrManager.MYWORKSPACE_USERPROMPT, false); } return userRequestSynoptic; } public void setUserRequestSynoptic(Boolean userRequestSynoptic) { this.userRequestSynoptic = userRequestSynoptic; } public class DecoratedSynopticMsgcntrItem{ private SynopticMsgcntrItem synopticMsgcntrItem; private Site site ; private String messagesUrl, forumUrl, messagesFormattedDate, forumFormattedDate, siteUrl; private HashMap receivedFolderUuidByContextId; private boolean originalDisplayValue, doesForumsExist, doesMessagesExist; public boolean isDoesForumsExist() { if(site == null) return false; if (isMessageForumsPageInSite(site) || isForumsPageInSite(site)) return true; else return false; } public void setDoesForumsExist(boolean doesForumsExist) { this.doesForumsExist = doesForumsExist; } public boolean isDoesMessagesExist() { if(site == null) return false; if (isMessageForumsPageInSite(site) || isMessagesPageInSite(site)) return true; else return false; } public void setDoesMessagesExist(boolean doesMessagesExist) { this.doesMessagesExist = doesMessagesExist; } public DecoratedSynopticMsgcntrItem(SynopticMsgcntrItem synopticMsgcntrItem, Site site){ this.synopticMsgcntrItem = synopticMsgcntrItem; this.originalDisplayValue = synopticMsgcntrItem.isHideItem(); this.site = site; } public boolean hasChanged(){ return originalDisplayValue != synopticMsgcntrItem.isHideItem(); } public SynopticMsgcntrItem getSynopticMsgcntrItem() { return synopticMsgcntrItem; } public void setSynopticMsgcntrItem(SynopticMsgcntrItem synopticMsgcntrItem) { this.synopticMsgcntrItem = synopticMsgcntrItem; } public String getSiteUrl(){ if(siteUrl == null){ siteUrl = ServerConfigurationService.getPortalUrl() + "/site/" + synopticMsgcntrItem.getSiteId(); } return siteUrl; } public int getNewForumCount(){ //check this to make sure the tool hasn't been removed if(site == null) return synopticMsgcntrItem.getNewForumCount(); if (isMessageForumsPageInSite(site) || isForumsPageInSite(site)) { return synopticMsgcntrItem.getNewForumCount(); }else{ return 0; } } public int getNewMessagesCount(){ if(site == null) return synopticMsgcntrItem.getNewMessagesCount(); //check this to make sure the tool hasn't been removed if (isMessageForumsPageInSite(site) || isMessagesPageInSite(site)){ return synopticMsgcntrItem.getNewMessagesCount(); }else{ return 0; } } public String getMessagesUrl(){ if(messagesUrl == null){ messagesUrl = generatePrivateTopicMessagesUrl(synopticMsgcntrItem.getSiteId()); } return messagesUrl; } public String getForumUrl(){ if(forumUrl == null){ forumUrl = getMCPageURL(synopticMsgcntrItem.getSiteId()); } return forumUrl; } public String getMessagesPlacementId(){ if(site == null) return ""; String messagesPlacementId = ""; ToolConfiguration tc = site.getToolForCommonId("sakai.messages"); if(tc != null){ messagesPlacementId = tc.getId(); } return messagesPlacementId; } public String getForumPlacementId(){ if(site == null) return ""; String forumPlacementId = ""; ToolConfiguration tc = site.getToolForCommonId("sakai.forums"); if(tc != null){ forumPlacementId = tc.getId(); } return forumPlacementId; } public String getMessagesFormattedDate(){ if(messagesFormattedDate == null){ messagesFormattedDate = DateFormat.getDateTimeInstance().format(synopticMsgcntrItem.getMessagesLastVisit()); } return messagesFormattedDate; } public String getForumFormattedDate(){ if(forumFormattedDate == null){ forumFormattedDate = DateFormat.getDateTimeInstance().format(synopticMsgcntrItem.getForumLastVisit()); } return forumFormattedDate; } /** * Returns a map of context id, Received folder uuid pairs */ private void constructReceivedUuidMap(List receivedUuidsForAllSites) { receivedFolderUuidByContextId = new HashMap(); for (Iterator listIter = receivedUuidsForAllSites.iterator(); listIter.hasNext();) { Object [] uuidRow = (Object []) listIter.next(); receivedFolderUuidByContextId.put(uuidRow[0], uuidRow[1]); } } /** * Return Received folder uuid */ private String getUuidFromMap(String contextId) { if (receivedFolderUuidByContextId == null) { List tempSiteList = new ArrayList(); tempSiteList.add(contextId); List receivedUuidsForAllSites = getForumsManager(). getReceivedUuidByContextId(tempSiteList); constructReceivedUuidMap(receivedUuidsForAllSites); } return (String) receivedFolderUuidByContextId.get(contextId); } /** * Returns the URL using a helper to go to MC home page directly. * * @return String A URL so the user can click to go to Message Center. * Needed since tool could possibly by in MyWorkspace */ private String getMCPageURL(String siteId) { ToolConfiguration mcTool = null; String url = null; try { String toolId = ""; final Site site = getSite(siteId); if (isMessageForumsPageInSite(site)) { toolId = DiscussionForumService.MESSAGE_CENTER_ID; } else if (isForumsPageInSite(site)) { toolId = DiscussionForumService.FORUMS_TOOL_ID; } else if (isMessagesPageInSite(site)) { toolId = DiscussionForumService.MESSAGES_TOOL_ID; } mcTool = site.getToolForCommonId(toolId); if (mcTool != null) { if (toolId == DiscussionForumService.MESSAGE_CENTER_ID) { url = ServerConfigurationService.getPortalUrl() + "/directtool/" + mcTool.getId() + "/sakai.messageforums.helper.helper/main"; } else if (toolId == DiscussionForumService.FORUMS_TOOL_ID) { url = ServerConfigurationService.getPortalUrl() + "/directtool/" + mcTool.getId() + "/sakai.messageforums.helper.helper/discussionForum/forumsOnly/dfForums"; } else if (toolId == DiscussionForumService.MESSAGES_TOOL_ID) { url = ServerConfigurationService.getPortalUrl() + "/directtool/" + mcTool.getId() + "/sakai.messageforums.helper.helper/privateMsg/pvtMsgHpView"; } } } catch (IdUnusedException e) { // Weirdness since site ids used gotten from SiteService LOG.error("IdUnusedException while trying to check if site has MF tool."); } return url; } /** * Construct the Url to bring up the Private Message section * for the site whose id is passed in * * @param contextId * The site id * * @return * String containing the Url to call the helper to move * to the Private Message section of a site */ public String generatePrivateTopicMessagesUrl(String contextId) { if (messagesUrl != null) { return messagesUrl; } else { Topic receivedTopic = null; String receivedTopicUuid = null; if ((receivedTopicUuid = getUuidFromMap(contextId)) == null) { Area area = getAreaManager().getAreaByContextIdAndTypeId(contextId, getTypeManager().getPrivateMessageAreaType()); if (area != null && getCurrentUser() != null) { if (isMessagesPageInSite() || area.getEnabled().booleanValue() || getPvtMessageManager().isInstructor()){ /* TODO: determine if receivedTopicUuid = ""; // is OK? */ PrivateForum pf = getPvtMessageManager().initializePrivateMessageArea(area, new ArrayList()); pf = getPvtMessageManager().initializationHelper(pf, area); List pvtTopics = pf.getTopics(); Collections.sort(pvtTopics, PrivateTopicImpl.TITLE_COMPARATOR); //changed to date comparator Iterator it = pvtTopics.iterator(); if(it.hasNext()){ receivedTopic = (Topic) it.next(); receivedTopicUuid = receivedTopic.getUuid(); receivedFolderUuidByContextId.put(contextId, receivedTopicUuid); } } } } ToolConfiguration mcTool = null; String url = null; try { String toolId = ""; final Site site = getSite(contextId); if (isMessageForumsPageInSite(site)) { toolId = DiscussionForumService.MESSAGE_CENTER_ID; } else if (isMessagesPageInSite(site)) { toolId = DiscussionForumService.MESSAGES_TOOL_ID; } else if (isForumsPageInSite(site)) { toolId = DiscussionForumService.FORUMS_TOOL_ID; } mcTool = site.getToolForCommonId(toolId); if (mcTool != null) { messagesUrl = ServerConfigurationService.getPortalUrl() + "/directtool/" + mcTool.getId() + "/sakai.messageforums.helper.helper/privateMsg/pvtMsg?pvtMsgTopicId=" + receivedTopicUuid + "&contextId=" + contextId + "&selectedTopic=" + PrivateMessagesTool.PVTMSG_MODE_RECEIVED; return messagesUrl; } } catch (IdUnusedException e) { LOG.error("IdUnusedException attempting to move to Private Messages for a site. Site id used is: " + contextId); } } return ""; } /** * @return TRUE if Forums tool exists in this site, * FALSE otherwise */ private boolean isForumsPageInSite(Site thisSite) { return isToolInSite(thisSite, DiscussionForumService.FORUMS_TOOL_ID); } } public int getMyContentsSize() { if(myContentsSize == -1){ myContentsSize = getContents().size(); } return myContentsSize; } public void setMyContentsSize(int myContentsSize) { this.myContentsSize = myContentsSize; } public MessageForumsForumManager getForumsManager() { return forumsManager; } public void setForumsManager(MessageForumsForumManager forumsManager) { this.forumsManager = forumsManager; } public MessageForumsTypeManager getTypeManager() { return typeManager; } public void setTypeManager(MessageForumsTypeManager typeManager) { this.typeManager = typeManager; } public AreaManager getAreaManager() { return areaManager; } public void setAreaManager(AreaManager areaManager) { this.areaManager = areaManager; } public PrivateMessageManager getPvtMessageManager() { return pvtMessageManager; } public void setPvtMessageManager(PrivateMessageManager pvtMessageManager) { this.pvtMessageManager = pvtMessageManager; } public int getMyDisplayedSites() { return myDisplayedSites; } public void setMyDisplayedSites(int myDisplayedSites) { this.myDisplayedSites = myDisplayedSites; } public Boolean isDisableMyWorkspace() { if(disableMyWorkspace != null){ return disableMyWorkspace; } disableMyWorkspace = ServerConfigurationService.getBoolean(SynopticMsgcntrManager.DISABLE_MYWORKSPACE, false); return disableMyWorkspace; } public void setDisableMyWorkspace(Boolean disableMyWorkspace) { this.disableMyWorkspace = disableMyWorkspace; } public boolean isDisableMessages() { if(disableMessages != null){ return disableMessages; } disableMessages = ServerConfigurationService.getBoolean(SynopticMsgcntrManager.DISABLE_MESSAGES, false); return disableMessages; } public void setDisableMessages(Boolean disableMessages) { this.disableMessages = disableMessages; } public boolean isDisableForums() { if(disableForums != null){ return disableForums; } disableForums = ServerConfigurationService.getBoolean(SynopticMsgcntrManager.DISABLE_FORUMS, false); return disableForums; } public void setDisableForums(Boolean disableForums) { this.disableForums = disableForums; } public String getDisableMyWorkspaceDisabledMessage() { if(disableMyWorkspaceDisabledMessage != null){ return disableMyWorkspaceDisabledMessage; } disableMyWorkspaceDisabledMessage = ServerConfigurationService.getString(SynopticMsgcntrManager.DISABLE_MYWORKSPACE_DISABLEDMESSAGE); return disableMyWorkspaceDisabledMessage; } public void setDisableMyWorkspaceDisabledMessage(String disableMyWorkspaceMessage) { this.disableMyWorkspaceDisabledMessage = disableMyWorkspaceMessage; } }