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