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 updateEntry(
124 long entryId, String title, String content, String url, String type,
125 int displayDateMonth, int displayDateDay, int displayDateYear,
126 int displayDateHour, int displayDateMinute, int expirationDateMonth,
127 int expirationDateDay, int expirationDateYear,
128 int expirationDateHour, int expirationDateMinute, int priority)
129 throws PortalException, SystemException {
130
131 AnnouncementsEntryPermission.check(
132 getPermissionChecker(), entryId, ActionKeys.UPDATE);
133
134 return announcementsEntryLocalService.updateEntry(
135 getUserId(), entryId, title, content, url, type, displayDateMonth,
136 displayDateDay, displayDateYear, displayDateHour, displayDateMinute,
137 expirationDateMonth, expirationDateDay, expirationDateYear,
138 expirationDateHour, expirationDateMinute, priority);
139 }
140
141 }