1
22
23 package com.liferay.portlet.announcements.service.impl;
24
25 import com.liferay.portal.PortalException;
26 import com.liferay.portal.SystemException;
27 import com.liferay.portal.model.Group;
28 import com.liferay.portal.model.Organization;
29 import com.liferay.portal.model.Role;
30 import com.liferay.portal.model.UserGroup;
31 import com.liferay.portal.security.auth.PrincipalException;
32 import com.liferay.portal.security.permission.ActionKeys;
33 import com.liferay.portal.security.permission.PermissionChecker;
34 import com.liferay.portal.service.permission.GroupPermissionUtil;
35 import com.liferay.portal.service.permission.OrganizationPermissionUtil;
36 import com.liferay.portal.service.permission.PortletPermissionUtil;
37 import com.liferay.portal.service.permission.RolePermissionUtil;
38 import com.liferay.portal.service.permission.UserGroupPermissionUtil;
39 import com.liferay.portal.util.PortalUtil;
40 import com.liferay.portal.util.PortletKeys;
41 import com.liferay.portlet.announcements.model.AnnouncementsEntry;
42 import com.liferay.portlet.announcements.service.base.AnnouncementsEntryServiceBaseImpl;
43 import com.liferay.portlet.announcements.service.permission.AnnouncementsEntryPermission;
44
45
52 public class AnnouncementsEntryServiceImpl
53 extends AnnouncementsEntryServiceBaseImpl {
54
55 public AnnouncementsEntry addEntry(
56 long plid, long classNameId, long classPK, String title,
57 String content, String url, String type, int displayDateMonth,
58 int displayDateDay, int displayDateYear, int displayDateHour,
59 int displayDateMinute, int expirationDateMonth,
60 int expirationDateDay, int expirationDateYear,
61 int expirationDateHour, int expirationDateMinute, int priority,
62 boolean alert)
63 throws PortalException, SystemException {
64
65 PermissionChecker permissionChecker = getPermissionChecker();
66
67 PortletPermissionUtil.check(
68 permissionChecker, plid, PortletKeys.ANNOUNCEMENTS,
69 ActionKeys.ADD_ENTRY);
70
71 if (classNameId == 0) {
72 if (!permissionChecker.isOmniadmin()) {
73 throw new PrincipalException();
74 }
75 }
76 else {
77 String className = PortalUtil.getClassName(classNameId);
78
79 if (className.equals(Group.class.getName()) &&
80 !GroupPermissionUtil.contains(
81 permissionChecker, classPK, ActionKeys.ASSIGN_MEMBERS)) {
82
83 throw new PrincipalException();
84 }
85
86 if (className.equals(Organization.class.getName()) &&
87 !OrganizationPermissionUtil.contains(
88 permissionChecker, classPK, ActionKeys.ASSIGN_MEMBERS)) {
89
90 throw new PrincipalException();
91 }
92
93 if (className.equals(Role.class.getName()) &&
94 !RolePermissionUtil.contains(
95 permissionChecker, classPK, ActionKeys.ASSIGN_MEMBERS)) {
96
97 throw new PrincipalException();
98 }
99
100 if (className.equals(UserGroup.class.getName()) &&
101 !UserGroupPermissionUtil.contains(
102 permissionChecker, classPK, ActionKeys.ASSIGN_MEMBERS)) {
103
104 throw new PrincipalException();
105 }
106 }
107
108 return announcementsEntryLocalService.addEntry(
109 getUserId(), classNameId, classPK, title, content, url, type,
110 displayDateMonth, displayDateDay, displayDateYear, displayDateHour,
111 displayDateMinute, expirationDateMonth, expirationDateDay,
112 expirationDateYear, expirationDateHour, expirationDateMinute,
113 priority, alert);
114 }
115
116 public void deleteEntry(long entryId)
117 throws PortalException, SystemException {
118
119 AnnouncementsEntryPermission.check(
120 getPermissionChecker(), entryId, ActionKeys.DELETE);
121
122 announcementsEntryLocalService.deleteEntry(entryId);
123 }
124
125 public AnnouncementsEntry updateEntry(
126 long entryId, String title, String content, String url,
127 String type, int displayDateMonth, int displayDateDay,
128 int displayDateYear, int displayDateHour, int displayDateMinute,
129 int expirationDateMonth, int expirationDateDay,
130 int expirationDateYear, int expirationDateHour,
131 int expirationDateMinute, int priority)
132 throws PortalException, SystemException {
133
134 AnnouncementsEntryPermission.check(
135 getPermissionChecker(), entryId, ActionKeys.UPDATE);
136
137 return announcementsEntryLocalService.updateEntry(
138 entryId, title, content, url, type, displayDateMonth,
139 displayDateDay, displayDateYear, displayDateHour, displayDateMinute,
140 expirationDateMonth, expirationDateDay, expirationDateYear,
141 expirationDateHour, expirationDateMinute, priority);
142 }
143
144 }