1
22
23 package com.liferay.portlet.tasks.service.impl;
24
25 import com.liferay.portal.PortalException;
26 import com.liferay.portal.SystemException;
27 import com.liferay.portal.kernel.util.GetterUtil;
28 import com.liferay.portal.model.Layout;
29 import com.liferay.portal.security.auth.PrincipalException;
30 import com.liferay.portal.security.permission.ActionKeys;
31 import com.liferay.portal.security.permission.PermissionChecker;
32 import com.liferay.portal.service.permission.GroupPermissionUtil;
33 import com.liferay.portal.service.permission.LayoutPermissionUtil;
34 import com.liferay.portlet.tasks.model.TasksProposal;
35 import com.liferay.portlet.tasks.service.base.TasksProposalServiceBaseImpl;
36 import com.liferay.portlet.tasks.service.permission.TasksProposalPermission;
37
38
45 public class TasksProposalServiceImpl extends TasksProposalServiceBaseImpl {
46
47 public TasksProposal addProposal(
48 long groupId, String className, String classPK, String name,
49 String description, long reviewUserId,
50 boolean addCommunityPermissions, boolean addGuestPermissions)
51 throws PortalException, SystemException{
52
53 PermissionChecker permissionChecker = getPermissionChecker();
54
55 if (!GroupPermissionUtil.contains(
56 permissionChecker, groupId, ActionKeys.MANAGE_LAYOUTS) &&
57 (name.equals(Layout.class.getName()) &&
58 !LayoutPermissionUtil.contains(
59 permissionChecker, GetterUtil.getLong(classPK),
60 ActionKeys.UPDATE))) {
61
62 throw new PrincipalException();
63 }
64
65 return tasksProposalLocalService.addProposal(
66 getUserId(), groupId, className, classPK, name, description,
67 reviewUserId, addCommunityPermissions, addGuestPermissions);
68 }
69
70 public TasksProposal addProposal(
71 long groupId, String className, String classPK, String name,
72 String description, long reviewUserId,
73 String[] communityPermissions, String[] guestPermissions)
74 throws PortalException, SystemException{
75
76 PermissionChecker permissionChecker = getPermissionChecker();
77
78 if (!GroupPermissionUtil.contains(
79 permissionChecker, groupId, ActionKeys.MANAGE_LAYOUTS) &&
80 (name.equals(Layout.class.getName()) &&
81 !LayoutPermissionUtil.contains(
82 permissionChecker, GetterUtil.getLong(classPK),
83 ActionKeys.UPDATE))) {
84
85 throw new PrincipalException();
86 }
87
88 return tasksProposalLocalService.addProposal(
89 getUserId(), groupId, className, classPK, name, description,
90 reviewUserId, communityPermissions, guestPermissions);
91 }
92
93 public void deleteProposal(long proposalId)
94 throws PortalException, SystemException{
95
96 PermissionChecker permissionChecker = getPermissionChecker();
97
98 TasksProposal proposal = tasksProposalPersistence.findByPrimaryKey(
99 proposalId);
100
101 long groupId = proposal.getGroupId();
102
103 if (!GroupPermissionUtil.contains(
104 permissionChecker, groupId, ActionKeys.ASSIGN_REVIEWER) &&
105 !GroupPermissionUtil.contains(
106 permissionChecker, groupId, ActionKeys.MANAGE_STAGING) &&
107 !GroupPermissionUtil.contains(
108 permissionChecker, groupId, ActionKeys.PUBLISH_STAGING) &&
109 !TasksProposalPermission.contains(
110 permissionChecker, proposalId, ActionKeys.DELETE)) {
111
112 throw new PrincipalException();
113 }
114
115 tasksProposalLocalService.deleteProposal(proposalId);
116 }
117
118 public TasksProposal updateProposal(
119 long proposalId, String description, int dueDateMonth,
120 int dueDateDay, int dueDateYear, int dueDateHour, int dueDateMinute)
121 throws PortalException, SystemException{
122
123 PermissionChecker permissionChecker = getPermissionChecker();
124
125 TasksProposal proposal = tasksProposalPersistence.findByPrimaryKey(
126 proposalId);
127
128 long groupId = proposal.getGroupId();
129
130 if (!GroupPermissionUtil.contains(
131 permissionChecker, groupId, ActionKeys.ASSIGN_REVIEWER) &&
132 !GroupPermissionUtil.contains(
133 permissionChecker, groupId, ActionKeys.MANAGE_STAGING) &&
134 !GroupPermissionUtil.contains(
135 permissionChecker, groupId, ActionKeys.PUBLISH_STAGING) &&
136 !TasksProposalPermission.contains(
137 permissionChecker, proposalId, ActionKeys.UPDATE)) {
138
139 throw new PrincipalException();
140 }
141
142 return tasksProposalLocalService.updateProposal(
143 getUserId(), proposalId, description, dueDateMonth, dueDateDay,
144 dueDateYear, dueDateHour, dueDateMinute);
145 }
146
147 }