/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library 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 Lesser General Public License for more * details. */ package com.liferay.portlet.messageboards; import com.liferay.message.boards.kernel.constants.MBConstants; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.settings.FallbackKeys; import com.liferay.portal.kernel.settings.GroupServiceSettingsLocator; import com.liferay.portal.kernel.settings.LocalizedValuesMap; import com.liferay.portal.kernel.settings.ParameterMapSettings; import com.liferay.portal.kernel.settings.Settings; import com.liferay.portal.kernel.settings.SettingsFactoryUtil; import com.liferay.portal.kernel.settings.TypedSettings; import com.liferay.portal.kernel.util.LocalizationUtil; import com.liferay.portal.kernel.util.PortalUtil; import com.liferay.portal.kernel.util.PropsKeys; import com.liferay.portal.kernel.util.RSSUtil; import com.liferay.portlet.messageboards.util.MBUtil; import java.util.Map; /** * @author Jorge Ferrer */ @Settings.Config(settingsIds = MBConstants.SERVICE_NAME) public class MBGroupServiceSettings { public static final String[] ALL_KEYS = {}; public static MBGroupServiceSettings getInstance(long groupId) throws PortalException { Settings settings = SettingsFactoryUtil.getSettings( new GroupServiceSettingsLocator(groupId, MBConstants.SERVICE_NAME)); return new MBGroupServiceSettings(settings); } public static MBGroupServiceSettings getInstance( long groupId, Map<String, String[]> parameterMap) throws PortalException { Settings settings = SettingsFactoryUtil.getSettings( new GroupServiceSettingsLocator(groupId, MBConstants.SERVICE_NAME)); ParameterMapSettings parameterMapSettings = new ParameterMapSettings( parameterMap, settings); return new MBGroupServiceSettings(parameterMapSettings); } public static void registerSettingsMetadata() { SettingsFactoryUtil.registerSettingsMetadata( MBGroupServiceSettings.class, null, _getFallbackKeys()); } public MBGroupServiceSettings(Settings settings) { _typedSettings = new TypedSettings(settings); } public String getEmailFromAddress() { return _typedSettings.getValue("emailFromAddress"); } public String getEmailFromName() { return _typedSettings.getValue("emailFromName"); } public LocalizedValuesMap getEmailMessageAddedBody() { return _typedSettings.getLocalizedValuesMap("emailMessageAddedBody"); } public String getEmailMessageAddedBodyXml() { return LocalizationUtil.getXml( getEmailMessageAddedBody(), "emailMessageAddedBody"); } public LocalizedValuesMap getEmailMessageAddedSubject() { return _typedSettings.getLocalizedValuesMap("emailMessageAddedSubject"); } public String getEmailMessageAddedSubjectXml() { return LocalizationUtil.getXml( getEmailMessageAddedSubject(), "emailMessageAddedSubject"); } public LocalizedValuesMap getEmailMessageUpdatedBody() { return _typedSettings.getLocalizedValuesMap("emailMessageUpdatedBody"); } public String getEmailMessageUpdatedBodyXml() { return LocalizationUtil.getXml( getEmailMessageUpdatedBody(), "emailMessageUpdatedBody"); } public LocalizedValuesMap getEmailMessageUpdatedSubject() { return _typedSettings.getLocalizedValuesMap( "emailMessageUpdatedSubject"); } public String getEmailMessageUpdatedSubjectXml() { return LocalizationUtil.getXml( getEmailMessageUpdatedSubject(), "emailMessageUpdatedSubject"); } public String getMessageFormat() { String messageFormat = _typedSettings.getValue("messageFormat"); if (MBUtil.isValidMessageFormat(messageFormat)) { return messageFormat; } return "html"; } public String[] getPriorities(String currentLanguageId) { return LocalizationUtil.getSettingsValues( _typedSettings.getWrappedSettings(), "priorities", currentLanguageId); } public String[] getRanks(String languageId) { return LocalizationUtil.getSettingsValues( _typedSettings.getWrappedSettings(), "ranks", languageId); } public String getRecentPostsDateOffset() { return _typedSettings.getValue("recentPostsDateOffset"); } @Settings.Property(name = "rssDelta") public int getRSSDelta() { return _typedSettings.getIntegerValue("rssDelta"); } @Settings.Property(name = "rssDisplayStyle") public String getRSSDisplayStyle() { return _typedSettings.getValue( "rssDisplayStyle", RSSUtil.DISPLAY_STYLE_FULL_CONTENT); } @Settings.Property(name = "rssFeedType") public String getRSSFeedType() { return _typedSettings.getValue( "rssFeedType", RSSUtil.getFeedType(RSSUtil.ATOM, 1.0)); } public boolean isAllowAnonymousPosting() { return _typedSettings.getBooleanValue("allowAnonymousPosting"); } public boolean isEmailHtmlFormat() { return _typedSettings.getBooleanValue("emailHtmlFormat"); } public boolean isEmailMessageAddedEnabled() { return _typedSettings.getBooleanValue("emailMessageAddedEnabled"); } public boolean isEmailMessageUpdatedEnabled() { return _typedSettings.getBooleanValue("emailMessageUpdatedEnabled"); } public boolean isEnableFlags() { return _typedSettings.getBooleanValue("enableFlags"); } public boolean isEnableRatings() { return _typedSettings.getBooleanValue("enableRatings"); } @Settings.Property(name = "enableRss") public boolean isEnableRSS() { if (!PortalUtil.isRSSFeedsEnabled()) { return false; } return _typedSettings.getBooleanValue("enableRss"); } public boolean isSubscribeByDefault() { return _typedSettings.getBooleanValue("subscribeByDefault"); } public boolean isThreadAsQuestionByDefault() { return _typedSettings.getBooleanValue("threadAsQuestionByDefault"); } private static FallbackKeys _getFallbackKeys() { FallbackKeys fallbackKeys = new FallbackKeys(); fallbackKeys.add( "allowAnonymousPosting", PropsKeys.MESSAGE_BOARDS_ANONYMOUS_POSTING_ENABLED); fallbackKeys.add( "emailFromAddress", PropsKeys.MESSAGE_BOARDS_EMAIL_FROM_ADDRESS, PropsKeys.ADMIN_EMAIL_FROM_ADDRESS); fallbackKeys.add( "emailFromName", PropsKeys.MESSAGE_BOARDS_EMAIL_FROM_NAME, PropsKeys.ADMIN_EMAIL_FROM_NAME); fallbackKeys.add( "emailHtmlFormat", PropsKeys.MESSAGE_BOARDS_EMAIL_HTML_FORMAT); fallbackKeys.add( "emailMessageAddedBody", PropsKeys.MESSAGE_BOARDS_EMAIL_MESSAGE_ADDED_BODY); fallbackKeys.add( "emailMessageAddedEnabled", PropsKeys.MESSAGE_BOARDS_EMAIL_MESSAGE_ADDED_ENABLED); fallbackKeys.add( "emailMessageAddedSubject", PropsKeys.MESSAGE_BOARDS_EMAIL_MESSAGE_ADDED_SUBJECT); fallbackKeys.add( "emailMessageUpdatedBody", PropsKeys.MESSAGE_BOARDS_EMAIL_MESSAGE_UPDATED_BODY); fallbackKeys.add( "emailMessageUpdatedEnabled", PropsKeys.MESSAGE_BOARDS_EMAIL_MESSAGE_UPDATED_ENABLED); fallbackKeys.add( "emailMessageUpdatedSubject", PropsKeys.MESSAGE_BOARDS_EMAIL_MESSAGE_UPDATED_SUBJECT); fallbackKeys.add("enableFlags", PropsKeys.MESSAGE_BOARDS_FLAGS_ENABLED); fallbackKeys.add( "enableRatings", PropsKeys.MESSAGE_BOARDS_RATINGS_ENABLED); fallbackKeys.add("enableRss", PropsKeys.MESSAGE_BOARDS_RSS_ENABLED); fallbackKeys.add( "messageFormat", PropsKeys.MESSAGE_BOARDS_MESSAGE_FORMATS_DEFAULT); fallbackKeys.add( "priorities", PropsKeys.MESSAGE_BOARDS_THREAD_PRIORITIES); fallbackKeys.add("ranks", PropsKeys.MESSAGE_BOARDS_USER_RANKS); fallbackKeys.add( "recentPostsDateOffset", PropsKeys.MESSAGE_BOARDS_RECENT_POSTS_DATE_OFFSET); fallbackKeys.add( "rssDelta", PropsKeys.SEARCH_CONTAINER_PAGE_DEFAULT_DELTA); fallbackKeys.add( "rssDisplayStyle", PropsKeys.RSS_FEED_DISPLAY_STYLE_DEFAULT); fallbackKeys.add("rssFeedType", PropsKeys.RSS_FEED_TYPE_DEFAULT); fallbackKeys.add( "subscribeByDefault", PropsKeys.MESSAGE_BOARDS_SUBSCRIBE_BY_DEFAULT); fallbackKeys.add( "threadAsQuestionByDefault", PropsKeys.MESSAGE_BOARDS_THREAD_AS_QUESTION_BY_DEFAULT); return fallbackKeys; } static { SettingsFactoryUtil.registerSettingsMetadata( MBGroupServiceSettings.class, null, _getFallbackKeys()); } private final TypedSettings _typedSettings; }