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.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, SystemException {
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 (!permissionChecker.isOmniadmin()) {
069 throw new PrincipalException();
070 }
071 }
072 else {
073 String className = PortalUtil.getClassName(classNameId);
074
075 if (className.equals(Group.class.getName()) &&
076 !GroupPermissionUtil.contains(
077 permissionChecker, classPK,
078 ActionKeys.MANAGE_ANNOUNCEMENTS)) {
079
080 throw new PrincipalException();
081 }
082
083 if (className.equals(Organization.class.getName()) &&
084 !OrganizationPermissionUtil.contains(
085 permissionChecker, classPK,
086 ActionKeys.MANAGE_ANNOUNCEMENTS)) {
087
088 throw new PrincipalException();
089 }
090
091 if (className.equals(Role.class.getName())) {
092 Role role = roleLocalService.getRole(classPK);
093
094 if (role.isTeam()) {
095 Team team = teamLocalService.getTeam(role.getClassPK());
096
097 if (!GroupPermissionUtil.contains(
098 permissionChecker, team.getGroupId(),
099 ActionKeys.MANAGE_ANNOUNCEMENTS) ||
100 !RolePermissionUtil.contains(
101 permissionChecker, team.getGroupId(), classPK,
102 ActionKeys.MANAGE_ANNOUNCEMENTS)) {
103
104 throw new PrincipalException();
105 }
106 }
107 else if (!RolePermissionUtil.contains(
108 permissionChecker, classPK,
109 ActionKeys.MANAGE_ANNOUNCEMENTS)) {
110
111 throw new PrincipalException();
112 }
113 }
114
115 if (className.equals(UserGroup.class.getName()) &&
116 !UserGroupPermissionUtil.contains(
117 permissionChecker, classPK,
118 ActionKeys.MANAGE_ANNOUNCEMENTS)) {
119
120 throw new PrincipalException();
121 }
122 }
123
124 return announcementsEntryLocalService.addEntry(
125 getUserId(), classNameId, classPK, title, content, url, type,
126 displayDateMonth, displayDateDay, displayDateYear, displayDateHour,
127 displayDateMinute, displayImmediately, expirationDateMonth,
128 expirationDateDay, expirationDateYear, expirationDateHour,
129 expirationDateMinute, priority, alert);
130 }
131
132
137 @Override
138 public AnnouncementsEntry addEntry(
139 long plid, long classNameId, long classPK, String title,
140 String content, String url, String type, int displayDateMonth,
141 int displayDateDay, int displayDateYear, int displayDateHour,
142 int displayDateMinute, int expirationDateMonth,
143 int expirationDateDay, int expirationDateYear,
144 int expirationDateHour, int expirationDateMinute, int priority,
145 boolean alert)
146 throws PortalException, SystemException {
147
148 return addEntry(
149 plid, classNameId, classPK, title, content, url, type,
150 displayDateMonth, displayDateDay, displayDateYear, displayDateHour,
151 displayDateMinute, false, expirationDateMonth, expirationDateDay,
152 expirationDateYear, expirationDateHour, expirationDateMinute,
153 priority, alert);
154 }
155
156 @Override
157 public void deleteEntry(long entryId)
158 throws PortalException, SystemException {
159
160 AnnouncementsEntryPermission.check(
161 getPermissionChecker(), entryId, ActionKeys.DELETE);
162
163 announcementsEntryLocalService.deleteEntry(entryId);
164 }
165
166 @Override
167 public AnnouncementsEntry getEntry(long entryId)
168 throws PortalException, SystemException {
169
170 AnnouncementsEntry entry = announcementsEntryLocalService.getEntry(
171 entryId);
172
173 AnnouncementsEntryPermission.check(
174 getPermissionChecker(), entry, ActionKeys.VIEW);
175
176 return entry;
177 }
178
179 @Override
180 public AnnouncementsEntry updateEntry(
181 long entryId, String title, String content, String url, String type,
182 int displayDateMonth, int displayDateDay, int displayDateYear,
183 int displayDateHour, int displayDateMinute, int expirationDateMonth,
184 int expirationDateDay, int expirationDateYear,
185 int expirationDateHour, int expirationDateMinute, int priority)
186 throws PortalException, SystemException {
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 expirationDateMonth, expirationDateDay, expirationDateYear,
195 expirationDateHour, expirationDateMinute, priority);
196 }
197
198 }