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