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