001
014
015 package com.liferay.portlet.journal.social;
016
017 import com.liferay.portal.kernel.util.StringPool;
018 import com.liferay.portal.kernel.util.Validator;
019 import com.liferay.portal.security.permission.ActionKeys;
020 import com.liferay.portal.security.permission.PermissionChecker;
021 import com.liferay.portal.theme.ThemeDisplay;
022 import com.liferay.portal.util.PortalUtil;
023 import com.liferay.portlet.journal.model.JournalArticle;
024 import com.liferay.portlet.journal.model.JournalArticleConstants;
025 import com.liferay.portlet.journal.service.JournalArticleLocalServiceUtil;
026 import com.liferay.portlet.journal.service.permission.JournalArticlePermission;
027 import com.liferay.portlet.journal.service.permission.JournalPermission;
028 import com.liferay.portlet.social.model.BaseSocialActivityInterpreter;
029 import com.liferay.portlet.social.model.SocialActivity;
030 import com.liferay.portlet.social.model.SocialActivityFeedEntry;
031
032
035 public class JournalActivityInterpreter extends BaseSocialActivityInterpreter {
036
037 public String[] getClassNames() {
038 return _CLASS_NAMES;
039 }
040
041 @Override
042 protected SocialActivityFeedEntry doInterpret(
043 SocialActivity activity, ThemeDisplay themeDisplay)
044 throws Exception {
045
046 PermissionChecker permissionChecker =
047 themeDisplay.getPermissionChecker();
048
049 int activityType = activity.getType();
050
051 JournalArticle article =
052 JournalArticleLocalServiceUtil.getJournalArticle(
053 activity.getClassPK());
054
055 if ((activityType == JournalActivityKeys.ADD_ARTICLE) &&
056 !JournalPermission.contains(
057 permissionChecker, activity.getGroupId(),
058 ActionKeys.ADD_ARTICLE)) {
059
060 return null;
061 }
062 else if ((activityType == JournalActivityKeys.UPDATE_ARTICLE) &&
063 !JournalArticlePermission.contains(
064 permissionChecker, article, ActionKeys.UPDATE)) {
065
066 return null;
067 }
068
069 String groupName = StringPool.BLANK;
070
071 if (activity.getGroupId() != themeDisplay.getScopeGroupId()) {
072 groupName = getGroupName(activity.getGroupId(), themeDisplay);
073 }
074
075 String creatorUserName = getUserName(
076 activity.getUserId(), themeDisplay);
077
078
079
080 String link = null;
081
082 JournalArticle lastestArticle =
083 JournalArticleLocalServiceUtil.getLatestArticle(
084 article.getGroupId(), article.getArticleId());
085
086 if (Validator.isNotNull(lastestArticle.getLayoutUuid()) &&
087 !article.isInTrash()) {
088
089 String groupFriendlyURL = PortalUtil.getGroupFriendlyURL(
090 themeDisplay.getScopeGroup(), false, themeDisplay);
091
092 link =
093 groupFriendlyURL.concat(
094 JournalArticleConstants.CANONICAL_URL_SEPARATOR).concat(
095 lastestArticle.getUrlTitle());
096 }
097
098
099
100 String titlePattern = null;
101
102 if (activityType == JournalActivityKeys.ADD_ARTICLE) {
103 if (Validator.isNull(groupName)) {
104 titlePattern = "activity-journal-add-article";
105 }
106 else {
107 titlePattern = "activity-journal-add-article-in";
108 }
109 }
110 else if (activityType == JournalActivityKeys.UPDATE_ARTICLE) {
111 if (Validator.isNull(groupName)) {
112 titlePattern = "activity-journal-update-article";
113 }
114 else {
115 titlePattern = "activity-journal-update-article-in";
116 }
117 }
118
119 String articleTitle = getValue(
120 activity.getExtraData(), "title", article.getTitle());
121
122 Object[] titleArguments = null;
123
124 if (Validator.isNotNull(link)) {
125 titleArguments = new Object[] {
126 groupName, creatorUserName, wrapLink(link, articleTitle)
127 };
128 }
129 else {
130 titleArguments = new Object[] {
131 groupName, creatorUserName, articleTitle,
132 };
133 }
134
135 String title = themeDisplay.translate(titlePattern, titleArguments);
136
137
138
139 String body = StringPool.BLANK;
140
141 return new SocialActivityFeedEntry(link, title, body);
142 }
143
144 private static final String[] _CLASS_NAMES = new String[] {
145 JournalArticle.class.getName()
146 };
147
148 }