001
014
015 package com.liferay.portlet.announcements.service.impl;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.model.Group;
019 import com.liferay.portal.model.Organization;
020 import com.liferay.portal.model.Role;
021 import com.liferay.portal.model.Team;
022 import com.liferay.portal.model.UserGroup;
023 import com.liferay.portal.security.auth.PrincipalException;
024 import com.liferay.portal.security.permission.ActionKeys;
025 import com.liferay.portal.security.permission.PermissionChecker;
026 import com.liferay.portal.service.permission.GroupPermissionUtil;
027 import com.liferay.portal.service.permission.OrganizationPermissionUtil;
028 import com.liferay.portal.service.permission.PortalPermissionUtil;
029 import com.liferay.portal.service.permission.RolePermissionUtil;
030 import com.liferay.portal.service.permission.UserGroupPermissionUtil;
031 import com.liferay.portal.util.PortalUtil;
032 import com.liferay.portal.util.PortletKeys;
033 import com.liferay.portlet.announcements.model.AnnouncementsEntry;
034 import com.liferay.portlet.announcements.service.base.AnnouncementsEntryServiceBaseImpl;
035 import com.liferay.portlet.announcements.service.permission.AnnouncementsEntryPermission;
036
037
040 public class AnnouncementsEntryServiceImpl
041 extends AnnouncementsEntryServiceBaseImpl {
042
043 @Override
044 public AnnouncementsEntry addEntry(
045 long plid, long classNameId, long classPK, String title,
046 String content, String url, String type, int displayDateMonth,
047 int displayDateDay, int displayDateYear, int displayDateHour,
048 int displayDateMinute, boolean displayImmediately,
049 int expirationDateMonth, int expirationDateDay,
050 int expirationDateYear, int expirationDateHour,
051 int expirationDateMinute, int priority, boolean alert)
052 throws PortalException {
053
054 PermissionChecker permissionChecker = getPermissionChecker();
055
056 if (alert) {
057 AnnouncementsEntryPermission.check(
058 permissionChecker, plid, PortletKeys.ALERTS,
059 ActionKeys.ADD_ENTRY);
060 }
061 else {
062 AnnouncementsEntryPermission.check(
063 permissionChecker, plid, PortletKeys.ANNOUNCEMENTS,
064 ActionKeys.ADD_ENTRY);
065 }
066
067 if (classNameId == 0) {
068 if (!PortalPermissionUtil.contains(
069 permissionChecker, ActionKeys.ADD_GENERAL_ANNOUNCEMENTS)) {
070
071 throw new PrincipalException();
072 }
073 }
074 else {
075 String className = PortalUtil.getClassName(classNameId);
076
077 if (className.equals(Group.class.getName()) &&
078 !GroupPermissionUtil.contains(
079 permissionChecker, classPK,
080 ActionKeys.MANAGE_ANNOUNCEMENTS)) {
081
082 throw new PrincipalException();
083 }
084
085 if (className.equals(Organization.class.getName()) &&
086 !OrganizationPermissionUtil.contains(
087 permissionChecker, classPK,
088 ActionKeys.MANAGE_ANNOUNCEMENTS)) {
089
090 throw new PrincipalException();
091 }
092
093 if (className.equals(Role.class.getName())) {
094 Role role = roleLocalService.getRole(classPK);
095
096 if (role.isTeam()) {
097 Team team = teamLocalService.getTeam(role.getClassPK());
098
099 if (!GroupPermissionUtil.contains(
100 permissionChecker, team.getGroupId(),
101 ActionKeys.MANAGE_ANNOUNCEMENTS) ||
102 !RolePermissionUtil.contains(
103 permissionChecker, team.getGroupId(), classPK,
104 ActionKeys.MANAGE_ANNOUNCEMENTS)) {
105
106 throw new PrincipalException();
107 }
108 }
109 else if (!RolePermissionUtil.contains(
110 permissionChecker, classPK,
111 ActionKeys.MANAGE_ANNOUNCEMENTS)) {
112
113 throw new PrincipalException();
114 }
115 }
116
117 if (className.equals(UserGroup.class.getName()) &&
118 !UserGroupPermissionUtil.contains(
119 permissionChecker, classPK,
120 ActionKeys.MANAGE_ANNOUNCEMENTS)) {
121
122 throw new PrincipalException();
123 }
124 }
125
126 return announcementsEntryLocalService.addEntry(
127 getUserId(), classNameId, classPK, title, content, url, type,
128 displayDateMonth, displayDateDay, displayDateYear, displayDateHour,
129 displayDateMinute, displayImmediately, expirationDateMonth,
130 expirationDateDay, expirationDateYear, expirationDateHour,
131 expirationDateMinute, priority, alert);
132 }
133
134
139 @Deprecated
140 @Override
141 public AnnouncementsEntry addEntry(
142 long plid, long classNameId, long classPK, String title,
143 String content, String url, String type, int displayDateMonth,
144 int displayDateDay, int displayDateYear, int displayDateHour,
145 int displayDateMinute, int expirationDateMonth,
146 int expirationDateDay, int expirationDateYear,
147 int expirationDateHour, int expirationDateMinute, int priority,
148 boolean alert)
149 throws PortalException {
150
151 return addEntry(
152 plid, classNameId, classPK, title, content, url, type,
153 displayDateMonth, displayDateDay, displayDateYear, displayDateHour,
154 displayDateMinute, false, expirationDateMonth, expirationDateDay,
155 expirationDateYear, expirationDateHour, expirationDateMinute,
156 priority, alert);
157 }
158
159 @Override
160 public void deleteEntry(long entryId) throws PortalException {
161 AnnouncementsEntryPermission.check(
162 getPermissionChecker(), entryId, ActionKeys.DELETE);
163
164 announcementsEntryLocalService.deleteEntry(entryId);
165 }
166
167 @Override
168 public AnnouncementsEntry getEntry(long entryId) throws PortalException {
169 AnnouncementsEntry entry = announcementsEntryLocalService.getEntry(
170 entryId);
171
172 AnnouncementsEntryPermission.check(
173 getPermissionChecker(), entry, ActionKeys.VIEW);
174
175 return entry;
176 }
177
178 @Override
179 public AnnouncementsEntry updateEntry(
180 long entryId, String title, String content, String url, String type,
181 int displayDateMonth, int displayDateDay, int displayDateYear,
182 int displayDateHour, int displayDateMinute,
183 boolean displayImmediately, int expirationDateMonth,
184 int expirationDateDay, int expirationDateYear,
185 int expirationDateHour, int expirationDateMinute, int priority)
186 throws PortalException {
187
188 AnnouncementsEntryPermission.check(
189 getPermissionChecker(), entryId, ActionKeys.UPDATE);
190
191 return announcementsEntryLocalService.updateEntry(
192 getUserId(), entryId, title, content, url, type, displayDateMonth,
193 displayDateDay, displayDateYear, displayDateHour, displayDateMinute,
194 displayImmediately, expirationDateMonth, expirationDateDay,
195 expirationDateYear, expirationDateHour, expirationDateMinute,
196 priority);
197 }
198
199 }