001
014
015 package com.liferay.portlet.messageboards;
016
017 import com.liferay.message.boards.kernel.constants.MBConstants;
018 import com.liferay.portal.kernel.exception.PortalException;
019 import com.liferay.portal.kernel.settings.FallbackKeys;
020 import com.liferay.portal.kernel.settings.GroupServiceSettingsLocator;
021 import com.liferay.portal.kernel.settings.LocalizedValuesMap;
022 import com.liferay.portal.kernel.settings.ParameterMapSettings;
023 import com.liferay.portal.kernel.settings.Settings;
024 import com.liferay.portal.kernel.settings.SettingsFactoryUtil;
025 import com.liferay.portal.kernel.settings.TypedSettings;
026 import com.liferay.portal.kernel.util.LocalizationUtil;
027 import com.liferay.portal.kernel.util.PortalUtil;
028 import com.liferay.portal.kernel.util.PropsKeys;
029 import com.liferay.portal.kernel.util.RSSUtil;
030 import com.liferay.portlet.messageboards.util.MBUtil;
031
032 import java.util.Map;
033
034
037 @Settings.Config(settingsIds = MBConstants.SERVICE_NAME)
038 public class MBGroupServiceSettings {
039
040 public static final String[] ALL_KEYS = {};
041
042 public static MBGroupServiceSettings getInstance(long groupId)
043 throws PortalException {
044
045 Settings settings = SettingsFactoryUtil.getSettings(
046 new GroupServiceSettingsLocator(groupId, MBConstants.SERVICE_NAME));
047
048 return new MBGroupServiceSettings(settings);
049 }
050
051 public static MBGroupServiceSettings getInstance(
052 long groupId, Map<String, String[]> parameterMap)
053 throws PortalException {
054
055 Settings settings = SettingsFactoryUtil.getSettings(
056 new GroupServiceSettingsLocator(groupId, MBConstants.SERVICE_NAME));
057
058 ParameterMapSettings parameterMapSettings = new ParameterMapSettings(
059 parameterMap, settings);
060
061 return new MBGroupServiceSettings(parameterMapSettings);
062 }
063
064 public static void registerSettingsMetadata() {
065 SettingsFactoryUtil.registerSettingsMetadata(
066 MBGroupServiceSettings.class, null, _getFallbackKeys());
067 }
068
069 public MBGroupServiceSettings(Settings settings) {
070 _typedSettings = new TypedSettings(settings);
071 }
072
073 public String getEmailFromAddress() {
074 return _typedSettings.getValue("emailFromAddress");
075 }
076
077 public String getEmailFromName() {
078 return _typedSettings.getValue("emailFromName");
079 }
080
081 public LocalizedValuesMap getEmailMessageAddedBody() {
082 return _typedSettings.getLocalizedValuesMap("emailMessageAddedBody");
083 }
084
085 public String getEmailMessageAddedBodyXml() {
086 return LocalizationUtil.getXml(
087 getEmailMessageAddedBody(), "emailMessageAddedBody");
088 }
089
090 public LocalizedValuesMap getEmailMessageAddedSubject() {
091 return _typedSettings.getLocalizedValuesMap("emailMessageAddedSubject");
092 }
093
094 public String getEmailMessageAddedSubjectXml() {
095 return LocalizationUtil.getXml(
096 getEmailMessageAddedSubject(), "emailMessageAddedSubject");
097 }
098
099 public LocalizedValuesMap getEmailMessageUpdatedBody() {
100 return _typedSettings.getLocalizedValuesMap("emailMessageUpdatedBody");
101 }
102
103 public String getEmailMessageUpdatedBodyXml() {
104 return LocalizationUtil.getXml(
105 getEmailMessageUpdatedBody(), "emailMessageUpdatedBody");
106 }
107
108 public LocalizedValuesMap getEmailMessageUpdatedSubject() {
109 return _typedSettings.getLocalizedValuesMap(
110 "emailMessageUpdatedSubject");
111 }
112
113 public String getEmailMessageUpdatedSubjectXml() {
114 return LocalizationUtil.getXml(
115 getEmailMessageUpdatedSubject(), "emailMessageUpdatedSubject");
116 }
117
118 public String getMessageFormat() {
119 String messageFormat = _typedSettings.getValue("messageFormat");
120
121 if (MBUtil.isValidMessageFormat(messageFormat)) {
122 return messageFormat;
123 }
124
125 return "html";
126 }
127
128 public String[] getPriorities(String currentLanguageId) {
129 return LocalizationUtil.getSettingsValues(
130 _typedSettings.getWrappedSettings(), "priorities",
131 currentLanguageId);
132 }
133
134 public String[] getRanks(String languageId) {
135 return LocalizationUtil.getSettingsValues(
136 _typedSettings.getWrappedSettings(), "ranks", languageId);
137 }
138
139 public String getRecentPostsDateOffset() {
140 return _typedSettings.getValue("recentPostsDateOffset");
141 }
142
143 @Settings.Property(name = "rssDelta")
144 public int getRSSDelta() {
145 return _typedSettings.getIntegerValue("rssDelta");
146 }
147
148 @Settings.Property(name = "rssDisplayStyle")
149 public String getRSSDisplayStyle() {
150 return _typedSettings.getValue(
151 "rssDisplayStyle", RSSUtil.DISPLAY_STYLE_FULL_CONTENT);
152 }
153
154 @Settings.Property(name = "rssFeedType")
155 public String getRSSFeedType() {
156 return _typedSettings.getValue(
157 "rssFeedType", RSSUtil.getFeedType(RSSUtil.ATOM, 1.0));
158 }
159
160 public boolean isAllowAnonymousPosting() {
161 return _typedSettings.getBooleanValue("allowAnonymousPosting");
162 }
163
164 public boolean isEmailHtmlFormat() {
165 return _typedSettings.getBooleanValue("emailHtmlFormat");
166 }
167
168 public boolean isEmailMessageAddedEnabled() {
169 return _typedSettings.getBooleanValue("emailMessageAddedEnabled");
170 }
171
172 public boolean isEmailMessageUpdatedEnabled() {
173 return _typedSettings.getBooleanValue("emailMessageUpdatedEnabled");
174 }
175
176 public boolean isEnableFlags() {
177 return _typedSettings.getBooleanValue("enableFlags");
178 }
179
180 public boolean isEnableRatings() {
181 return _typedSettings.getBooleanValue("enableRatings");
182 }
183
184 @Settings.Property(name = "enableRss")
185 public boolean isEnableRSS() {
186 if (!PortalUtil.isRSSFeedsEnabled()) {
187 return false;
188 }
189
190 return _typedSettings.getBooleanValue("enableRss");
191 }
192
193 public boolean isSubscribeByDefault() {
194 return _typedSettings.getBooleanValue("subscribeByDefault");
195 }
196
197 public boolean isThreadAsQuestionByDefault() {
198 return _typedSettings.getBooleanValue("threadAsQuestionByDefault");
199 }
200
201 private static FallbackKeys _getFallbackKeys() {
202 FallbackKeys fallbackKeys = new FallbackKeys();
203
204 fallbackKeys.add(
205 "allowAnonymousPosting",
206 PropsKeys.MESSAGE_BOARDS_ANONYMOUS_POSTING_ENABLED);
207 fallbackKeys.add(
208 "emailFromAddress", PropsKeys.MESSAGE_BOARDS_EMAIL_FROM_ADDRESS,
209 PropsKeys.ADMIN_EMAIL_FROM_ADDRESS);
210 fallbackKeys.add(
211 "emailFromName", PropsKeys.MESSAGE_BOARDS_EMAIL_FROM_NAME,
212 PropsKeys.ADMIN_EMAIL_FROM_NAME);
213 fallbackKeys.add(
214 "emailHtmlFormat", PropsKeys.MESSAGE_BOARDS_EMAIL_HTML_FORMAT);
215 fallbackKeys.add(
216 "emailMessageAddedBody",
217 PropsKeys.MESSAGE_BOARDS_EMAIL_MESSAGE_ADDED_BODY);
218 fallbackKeys.add(
219 "emailMessageAddedEnabled",
220 PropsKeys.MESSAGE_BOARDS_EMAIL_MESSAGE_ADDED_ENABLED);
221 fallbackKeys.add(
222 "emailMessageAddedSubject",
223 PropsKeys.MESSAGE_BOARDS_EMAIL_MESSAGE_ADDED_SUBJECT);
224 fallbackKeys.add(
225 "emailMessageUpdatedBody",
226 PropsKeys.MESSAGE_BOARDS_EMAIL_MESSAGE_UPDATED_BODY);
227 fallbackKeys.add(
228 "emailMessageUpdatedEnabled",
229 PropsKeys.MESSAGE_BOARDS_EMAIL_MESSAGE_UPDATED_ENABLED);
230 fallbackKeys.add(
231 "emailMessageUpdatedSubject",
232 PropsKeys.MESSAGE_BOARDS_EMAIL_MESSAGE_UPDATED_SUBJECT);
233 fallbackKeys.add("enableFlags", PropsKeys.MESSAGE_BOARDS_FLAGS_ENABLED);
234 fallbackKeys.add(
235 "enableRatings", PropsKeys.MESSAGE_BOARDS_RATINGS_ENABLED);
236 fallbackKeys.add("enableRss", PropsKeys.MESSAGE_BOARDS_RSS_ENABLED);
237 fallbackKeys.add(
238 "messageFormat", PropsKeys.MESSAGE_BOARDS_MESSAGE_FORMATS_DEFAULT);
239 fallbackKeys.add(
240 "priorities", PropsKeys.MESSAGE_BOARDS_THREAD_PRIORITIES);
241 fallbackKeys.add("ranks", PropsKeys.MESSAGE_BOARDS_USER_RANKS);
242 fallbackKeys.add(
243 "recentPostsDateOffset",
244 PropsKeys.MESSAGE_BOARDS_RECENT_POSTS_DATE_OFFSET);
245 fallbackKeys.add(
246 "rssDelta", PropsKeys.SEARCH_CONTAINER_PAGE_DEFAULT_DELTA);
247 fallbackKeys.add(
248 "rssDisplayStyle", PropsKeys.RSS_FEED_DISPLAY_STYLE_DEFAULT);
249 fallbackKeys.add("rssFeedType", PropsKeys.RSS_FEED_TYPE_DEFAULT);
250 fallbackKeys.add(
251 "subscribeByDefault",
252 PropsKeys.MESSAGE_BOARDS_SUBSCRIBE_BY_DEFAULT);
253 fallbackKeys.add(
254 "threadAsQuestionByDefault",
255 PropsKeys.MESSAGE_BOARDS_THREAD_AS_QUESTION_BY_DEFAULT);
256
257 return fallbackKeys;
258 }
259
260 static {
261 SettingsFactoryUtil.registerSettingsMetadata(
262 MBGroupServiceSettings.class, null, _getFallbackKeys());
263 }
264
265 private final TypedSettings _typedSettings;
266
267 }