001
014
015 package com.liferay.portlet.blogs.util;
016
017 import com.liferay.portal.kernel.exception.SystemException;
018 import com.liferay.portal.kernel.log.Log;
019 import com.liferay.portal.kernel.log.LogFactoryUtil;
020 import com.liferay.portal.kernel.search.Document;
021 import com.liferay.portal.kernel.search.Field;
022 import com.liferay.portal.kernel.search.Hits;
023 import com.liferay.portal.kernel.util.FriendlyURLNormalizerUtil;
024 import com.liferay.portal.kernel.util.GetterUtil;
025 import com.liferay.portal.kernel.util.LocaleUtil;
026 import com.liferay.portal.kernel.util.LocalizationUtil;
027 import com.liferay.portal.kernel.util.PropsKeys;
028 import com.liferay.portal.kernel.util.StringPool;
029 import com.liferay.portal.kernel.util.StringUtil;
030 import com.liferay.portal.kernel.util.Validator;
031 import com.liferay.portal.model.ModelHintsUtil;
032 import com.liferay.portal.util.PortalUtil;
033 import com.liferay.portal.util.PropsUtil;
034 import com.liferay.portal.util.PropsValues;
035 import com.liferay.portlet.blogs.model.BlogsEntry;
036 import com.liferay.portlet.blogs.service.BlogsEntryLocalServiceUtil;
037 import com.liferay.portlet.messageboards.model.MBMessage;
038 import com.liferay.portlet.messageboards.service.MBMessageLocalServiceUtil;
039 import com.liferay.util.ContentUtil;
040
041 import java.util.ArrayList;
042 import java.util.List;
043 import java.util.Locale;
044 import java.util.Map;
045 import java.util.regex.Pattern;
046
047 import javax.portlet.PortletPreferences;
048
049
053 public class BlogsUtil {
054
055 public static final String DISPLAY_STYLE_ABSTRACT = "abstract";
056
057 public static final String DISPLAY_STYLE_FULL_CONTENT = "full-content";
058
059 public static final String DISPLAY_STYLE_TITLE = "title";
060
061 public static Map<Locale, String> getEmailEntryAddedBodyMap(
062 PortletPreferences preferences) {
063
064 Map<Locale, String> map = LocalizationUtil.getLocalizationMap(
065 preferences, "emailEntryAddedBody");
066
067 Locale defaultLocale = LocaleUtil.getSiteDefault();
068
069 String defaultValue = map.get(defaultLocale);
070
071 if (Validator.isNotNull(defaultValue)) {
072 return map;
073 }
074
075 map.put(
076 defaultLocale,
077 ContentUtil.get(
078 PropsUtil.get(PropsKeys.BLOGS_EMAIL_ENTRY_ADDED_BODY)));
079
080 return map;
081 }
082
083 public static boolean getEmailEntryAddedEnabled(
084 PortletPreferences preferences) {
085
086 String emailEntryAddedEnabled = preferences.getValue(
087 "emailEntryAddedEnabled", StringPool.BLANK);
088
089 if (Validator.isNotNull(emailEntryAddedEnabled)) {
090 return GetterUtil.getBoolean(emailEntryAddedEnabled);
091 }
092 else {
093 return GetterUtil.getBoolean(
094 PropsUtil.get(PropsKeys.BLOGS_EMAIL_ENTRY_ADDED_ENABLED));
095 }
096 }
097
098 public static Map<Locale, String> getEmailEntryAddedSubjectMap(
099 PortletPreferences preferences) {
100
101 Map<Locale, String> map = LocalizationUtil.getLocalizationMap(
102 preferences, "emailEntryAddedSubject");
103
104 Locale defaultLocale = LocaleUtil.getSiteDefault();
105
106 String defaultValue = map.get(defaultLocale);
107
108 if (Validator.isNotNull(defaultValue)) {
109 return map;
110 }
111
112 map.put(
113 defaultLocale,
114 ContentUtil.get(
115 PropsUtil.get(PropsKeys.BLOGS_EMAIL_ENTRY_ADDED_SUBJECT)));
116
117 return map;
118 }
119
120 public static Map<Locale, String> getEmailEntryUpdatedBodyMap(
121 PortletPreferences preferences) {
122
123 Map<Locale, String> map = LocalizationUtil.getLocalizationMap(
124 preferences, "emailEntryUpdatedBody");
125
126 Locale defaultLocale = LocaleUtil.getSiteDefault();
127
128 String defaultValue = map.get(defaultLocale);
129
130 if (Validator.isNotNull(defaultValue)) {
131 return map;
132 }
133
134 map.put(
135 defaultLocale,
136 ContentUtil.get(
137 PropsUtil.get(PropsKeys.BLOGS_EMAIL_ENTRY_UPDATED_BODY)));
138
139 return map;
140 }
141
142 public static boolean getEmailEntryUpdatedEnabled(
143 PortletPreferences preferences) {
144
145 String emailEntryUpdatedEnabled = preferences.getValue(
146 "emailEntryUpdatedEnabled", StringPool.BLANK);
147
148 if (Validator.isNotNull(emailEntryUpdatedEnabled)) {
149 return GetterUtil.getBoolean(emailEntryUpdatedEnabled);
150 }
151 else {
152 return GetterUtil.getBoolean(
153 PropsUtil.get(PropsKeys.BLOGS_EMAIL_ENTRY_UPDATED_ENABLED));
154 }
155 }
156
157 public static Map<Locale, String> getEmailEntryUpdatedSubjectMap(
158 PortletPreferences preferences) {
159
160 Map<Locale, String> map = LocalizationUtil.getLocalizationMap(
161 preferences, "emailEntryUpdatedSubject");
162
163 Locale defaultLocale = LocaleUtil.getSiteDefault();
164
165 String defaultValue = map.get(defaultLocale);
166
167 if (Validator.isNotNull(defaultValue)) {
168 return map;
169 }
170
171 map.put(
172 defaultLocale,
173 ContentUtil.get(
174 PropsUtil.get(PropsKeys.BLOGS_EMAIL_ENTRY_UPDATED_SUBJECT)));
175
176 return map;
177 }
178
179 public static String getEmailFromAddress(
180 PortletPreferences preferences, long companyId)
181 throws SystemException {
182
183 return PortalUtil.getEmailFromAddress(
184 preferences, companyId, PropsValues.BLOGS_EMAIL_FROM_ADDRESS);
185 }
186
187 public static String getEmailFromName(
188 PortletPreferences preferences, long companyId)
189 throws SystemException {
190
191 return PortalUtil.getEmailFromName(
192 preferences, companyId, PropsValues.BLOGS_EMAIL_FROM_NAME);
193 }
194
195 public static List<Object> getEntries(Hits hits) {
196 List<Object> entries = new ArrayList<Object>();
197
198 for (Document document : hits.getDocs()) {
199 String entryClassName = GetterUtil.getString(
200 document.get(Field.ENTRY_CLASS_NAME));
201 long entryClassPK = GetterUtil.getLong(
202 document.get(Field.ENTRY_CLASS_PK));
203
204 try {
205 Object obj = null;
206
207 if (entryClassName.equals(BlogsEntry.class.getName())) {
208 obj = BlogsEntryLocalServiceUtil.getEntry(entryClassPK);
209 }
210 else if (entryClassName.equals(MBMessage.class.getName())) {
211 long classPK = GetterUtil.getLong(
212 document.get(Field.CLASS_PK));
213
214 BlogsEntryLocalServiceUtil.getEntry(classPK);
215
216 obj = MBMessageLocalServiceUtil.getMessage(entryClassPK);
217 }
218
219 entries.add(obj);
220 }
221 catch (Exception e) {
222 if (_log.isWarnEnabled()) {
223 _log.warn(
224 "Blogs search index is stale and contains entry " +
225 "{className=" + entryClassName + ", classPK=" +
226 entryClassPK + "}");
227 }
228 }
229 }
230
231 return entries;
232 }
233
234 public static String getUrlTitle(long entryId, String title) {
235 if (title == null) {
236 return String.valueOf(entryId);
237 }
238
239 title = StringUtil.toLowerCase(title.trim());
240
241 if (Validator.isNull(title) || Validator.isNumber(title) ||
242 title.equals("rss")) {
243
244 title = String.valueOf(entryId);
245 }
246 else {
247 title = FriendlyURLNormalizerUtil.normalize(
248 title, _friendlyURLPattern);
249 }
250
251 return ModelHintsUtil.trimString(
252 BlogsEntry.class.getName(), "urlTitle", title);
253 }
254
255 private static Log _log = LogFactoryUtil.getLog(BlogsUtil.class);
256
257 private static Pattern _friendlyURLPattern = Pattern.compile("[^a-z0-9_-]");
258
259 }