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.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.RolePermissionUtil;
029 import com.liferay.portal.service.permission.UserGroupPermissionUtil;
030 import com.liferay.portal.util.PortalUtil;
031 import com.liferay.portal.util.PortletKeys;
032 import com.liferay.portlet.announcements.model.AnnouncementsEntry;
033 import com.liferay.portlet.announcements.service.base.AnnouncementsEntryServiceBaseImpl;
034 import com.liferay.portlet.announcements.service.permission.AnnouncementsEntryPermission;
035
036
039 public class AnnouncementsEntryServiceImpl
040 extends AnnouncementsEntryServiceBaseImpl {
041
042 public AnnouncementsEntry addEntry(
043 long plid, long classNameId, long classPK, String title,
044 String content, String url, String type, int displayDateMonth,
045 int displayDateDay, int displayDateYear, int displayDateHour,
046 int displayDateMinute, int expirationDateMonth,
047 int expirationDateDay, int expirationDateYear,
048 int expirationDateHour, int expirationDateMinute, int priority,
049 boolean alert)
050 throws PortalException, SystemException {
051
052 PermissionChecker permissionChecker = getPermissionChecker();
053
054 if (alert) {
055 AnnouncementsEntryPermission.check(
056 permissionChecker, plid, PortletKeys.ALERTS,
057 ActionKeys.ADD_ENTRY);
058 }
059 else {
060 AnnouncementsEntryPermission.check(
061 permissionChecker, plid, PortletKeys.ANNOUNCEMENTS,
062 ActionKeys.ADD_ENTRY);
063 }
064
065 if (classNameId == 0) {
066 if (!permissionChecker.isOmniadmin()) {
067 throw new PrincipalException();
068 }
069 }
070 else {
071 String className = PortalUtil.getClassName(classNameId);
072
073 if (className.equals(Group.class.getName()) &&
074 !GroupPermissionUtil.contains(
075 permissionChecker, classPK,
076 ActionKeys.MANAGE_ANNOUNCEMENTS)) {
077
078 throw new PrincipalException();
079 }
080
081 if (className.equals(Organization.class.getName()) &&
082 !OrganizationPermissionUtil.contains(
083 permissionChecker, classPK,
084 ActionKeys.MANAGE_ANNOUNCEMENTS)) {
085
086 throw new PrincipalException();
087 }
088
089 if (className.equals(Role.class.getName()) &&
090 !RolePermissionUtil.contains(
091 permissionChecker, classPK,
092 ActionKeys.MANAGE_ANNOUNCEMENTS)) {
093
094 throw new PrincipalException();
095 }
096
097 if (className.equals(UserGroup.class.getName()) &&
098 !UserGroupPermissionUtil.contains(
099 permissionChecker, classPK,
100 ActionKeys.MANAGE_ANNOUNCEMENTS)) {
101
102 throw new PrincipalException();
103 }
104 }
105
106 return announcementsEntryLocalService.addEntry(
107 getUserId(), classNameId, classPK, title, content, url, type,
108 displayDateMonth, displayDateDay, displayDateYear, displayDateHour,
109 displayDateMinute, expirationDateMonth, expirationDateDay,
110 expirationDateYear, expirationDateHour, expirationDateMinute,
111 priority, alert);
112 }
113
114 public void deleteEntry(long entryId)
115 throws PortalException, SystemException {
116
117 AnnouncementsEntryPermission.check(
118 getPermissionChecker(), entryId, ActionKeys.DELETE);
119
120 announcementsEntryLocalService.deleteEntry(entryId);
121 }
122
123 public AnnouncementsEntry getEntry(long entryId)
124 throws PortalException, SystemException {
125
126 AnnouncementsEntry entry = announcementsEntryLocalService.getEntry(
127 entryId);
128
129 AnnouncementsEntryPermission.check(
130 getPermissionChecker(), entry, ActionKeys.VIEW);
131
132 return entry;
133 }
134
135 public AnnouncementsEntry updateEntry(
136 long entryId, String title, String content, String url, String type,
137 int displayDateMonth, int displayDateDay, int displayDateYear,
138 int displayDateHour, int displayDateMinute, int expirationDateMonth,
139 int expirationDateDay, int expirationDateYear,
140 int expirationDateHour, int expirationDateMinute, int priority)
141 throws PortalException, SystemException {
142
143 AnnouncementsEntryPermission.check(
144 getPermissionChecker(), entryId, ActionKeys.UPDATE);
145
146 return announcementsEntryLocalService.updateEntry(
147 getUserId(), entryId, title, content, url, type, displayDateMonth,
148 displayDateDay, displayDateYear, displayDateHour, displayDateMinute,
149 expirationDateMonth, expirationDateDay, expirationDateYear,
150 expirationDateHour, expirationDateMinute, priority);
151 }
152
153 }