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