001
014
015 package com.liferay.portlet.journal.social;
016
017 import com.liferay.portal.kernel.util.Validator;
018 import com.liferay.portal.model.Layout;
019 import com.liferay.portal.security.permission.ActionKeys;
020 import com.liferay.portal.security.permission.PermissionChecker;
021 import com.liferay.portal.service.LayoutLocalServiceUtil;
022 import com.liferay.portal.service.ServiceContext;
023 import com.liferay.portal.util.PortalUtil;
024 import com.liferay.portlet.journal.model.JournalArticle;
025 import com.liferay.portlet.journal.model.JournalArticleConstants;
026 import com.liferay.portlet.journal.service.JournalArticleLocalServiceUtil;
027 import com.liferay.portlet.journal.service.permission.JournalArticlePermission;
028 import com.liferay.portlet.journal.service.permission.JournalFolderPermission;
029 import com.liferay.portlet.social.model.BaseSocialActivityInterpreter;
030 import com.liferay.portlet.social.model.SocialActivity;
031 import com.liferay.portlet.social.model.SocialActivityConstants;
032
033
037 public class JournalArticleActivityInterpreter
038 extends BaseSocialActivityInterpreter {
039
040 @Override
041 public String[] getClassNames() {
042 return _CLASS_NAMES;
043 }
044
045 @Override
046 protected String getPath(
047 SocialActivity activity, ServiceContext serviceContext)
048 throws Exception {
049
050 JournalArticle article =
051 JournalArticleLocalServiceUtil.getLatestArticle(
052 activity.getClassPK());
053
054 String layoutUuid = article.getLayoutUuid();
055
056 if (Validator.isNull(layoutUuid)) {
057 return null;
058 }
059
060 Layout layout = LayoutLocalServiceUtil.fetchLayoutByUuidAndGroupId(
061 layoutUuid, article.getGroupId(), false);
062
063 if (layout == null) {
064 layout = LayoutLocalServiceUtil.fetchLayoutByUuidAndGroupId(
065 layoutUuid, article.getGroupId(), true);
066 }
067
068 String groupFriendlyURL = PortalUtil.getGroupFriendlyURL(
069 layout.getGroup(), layout.isPrivateLayout(),
070 serviceContext.getThemeDisplay());
071
072 return groupFriendlyURL.concat(
073 JournalArticleConstants.CANONICAL_URL_SEPARATOR).concat(
074 article.getUrlTitle());
075 }
076
077 @Override
078 protected String getTitlePattern(
079 String groupName, SocialActivity activity) {
080
081 int activityType = activity.getType();
082
083 if (activityType == JournalActivityKeys.ADD_ARTICLE) {
084 if (Validator.isNull(groupName)) {
085 return "activity-journal-article-add-web-content";
086 }
087 else {
088 return "activity-journal-article-add-web-content-in";
089 }
090 }
091 else if (activityType == JournalActivityKeys.UPDATE_ARTICLE) {
092 if (Validator.isNull(groupName)) {
093 return "activity-journal-article-update-web-content";
094 }
095 else {
096 return "activity-journal-article-update-web-content-in";
097 }
098 }
099 else if (activityType == SocialActivityConstants.TYPE_MOVE_TO_TRASH) {
100 if (Validator.isNull(groupName)) {
101 return "activity-journal-article-move-to-trash";
102 }
103 else {
104 return "activity-journal-article-move-to-trash-in";
105 }
106 }
107 else if (activityType ==
108 SocialActivityConstants.TYPE_RESTORE_FROM_TRASH) {
109
110 if (Validator.isNull(groupName)) {
111 return "activity-journal-article-restore-from-trash";
112 }
113 else {
114 return "activity-journal-article-restore-from-trash-in";
115 }
116 }
117
118 return null;
119 }
120
121 @Override
122 protected boolean hasPermissions(
123 PermissionChecker permissionChecker, SocialActivity activity,
124 String actionId, ServiceContext serviceContext)
125 throws Exception {
126
127 int activityType = activity.getType();
128
129 if (activityType == JournalActivityKeys.ADD_ARTICLE) {
130 JournalArticle article =
131 JournalArticleLocalServiceUtil.getLatestArticle(
132 activity.getClassPK());
133
134 return JournalFolderPermission.contains(
135 permissionChecker, article.getGroupId(), article.getFolderId(),
136 ActionKeys.ADD_ARTICLE);
137 }
138 else if (activityType == JournalActivityKeys.UPDATE_ARTICLE) {
139 return JournalArticlePermission.contains(
140 permissionChecker, activity.getClassPK(), ActionKeys.UPDATE);
141 }
142
143 return JournalArticlePermission.contains(
144 permissionChecker, activity.getClassPK(), actionId);
145 }
146
147 private static final String[] _CLASS_NAMES =
148 {JournalArticle.class.getName()};
149
150 }