1 <?php
2 3 4 5 6 7 8 9 10
11
12 13 14 15 16 17 18 19 20 21
22 class EDD_Roles {
23 24 25 26 27 28 29 30 31
32 public function __construct() {
33 $this->add_roles();
34 $this->add_caps();
35 }
36
37 38 39 40 41 42 43
44 public function add_roles() {
45 add_role( 'shop_manager', __( 'Shop Manager', 'edd' ), array(
46 'read' => true,
47 'edit_posts' => true,
48 'delete_posts' => true,
49 'unfiltered_html' => true,
50 'upload_files' => true,
51 'export' => true,
52 'import' => true,
53 'delete_others_pages' => true,
54 'delete_others_posts' => true,
55 'delete_pages' => true,
56 'delete_private_pages' => true,
57 'delete_private_posts' => true,
58 'delete_published_pages' => true,
59 'delete_published_posts' => true,
60 'edit_others_pages' => true,
61 'edit_others_posts' => true,
62 'edit_pages' => true,
63 'edit_posts' => true,
64 'edit_private_pages' => true,
65 'edit_private_posts' => true,
66 'edit_published_pages' => true,
67 'edit_published_posts' => true,
68 'manage_categories' => true,
69 'manage_links' => true,
70 'moderate_comments' => true,
71 'publish_pages' => true,
72 'publish_posts' => true,
73 'read_private_pages' => true,
74 'read_private_posts' => true
75 ) );
76
77 add_role( 'shop_accountant', __( 'Shop Accountant', 'edd' ), array(
78 'read' => true,
79 'edit_posts' => false,
80 'delete_posts' => false
81 ) );
82
83 add_role( 'shop_worker', __( 'Shop Worker', 'edd' ), array(
84 'read' => true,
85 'edit_posts' => false,
86 'upload_files' => true,
87 'delete_posts' => false
88 ) );
89
90 add_role( 'shop_vendor', __( 'Shop Vendor', 'edd' ), array(
91 'read' => true,
92 'edit_posts' => false,
93 'upload_files' => true,
94 'delete_posts' => false
95 ) );
96 }
97
98 99 100 101 102 103 104 105
106 public function add_caps() {
107 global $wp_roles;
108
109 if ( class_exists('WP_Roles') )
110 if ( ! isset( $wp_roles ) )
111 $wp_roles = new WP_Roles();
112
113 if ( is_object( $wp_roles ) ) {
114 $wp_roles->add_cap( 'shop_manager', 'view_shop_reports' );
115 $wp_roles->add_cap( 'shop_manager', 'view_shop_sensitive_data' );
116 $wp_roles->add_cap( 'shop_manager', 'export_shop_reports' );
117 $wp_roles->add_cap( 'shop_manager', 'manage_shop_settings' );
118 $wp_roles->add_cap( 'shop_manager', 'manage_shop_discounts' );
119
120 $wp_roles->add_cap( 'administrator', 'view_shop_reports' );
121 $wp_roles->add_cap( 'administrator', 'view_shop_sensitive_data' );
122 $wp_roles->add_cap( 'administrator', 'export_shop_reports' );
123 $wp_roles->add_cap( 'administrator', 'manage_shop_discounts' );
124 $wp_roles->add_cap( 'administrator', 'manage_shop_settings' );
125
126
127 $capabilities = $this->get_core_caps();
128 foreach ( $capabilities as $cap_group ) {
129 foreach ( $cap_group as $cap ) {
130 $wp_roles->add_cap( 'shop_manager', $cap );
131 $wp_roles->add_cap( 'administrator', $cap );
132 $wp_roles->add_cap( 'shop_worker', $cap );
133 }
134 }
135
136 $wp_roles->add_cap( 'shop_accountant', 'edit_products' );
137 $wp_roles->add_cap( 'shop_accountant', 'read_private_prodcuts' );
138 $wp_roles->add_cap( 'shop_accountant', 'view_shop_reports' );
139 $wp_roles->add_cap( 'shop_accountant', 'export_shop_reports' );
140 $wp_roles->add_cap( 'shop_accountant', 'edit_shop_payments' );
141
142 $wp_roles->add_cap( 'shop_vendor', 'edit_product' );
143 $wp_roles->add_cap( 'shop_vendor', 'edit_products' );
144 $wp_roles->add_cap( 'shop_vendor', 'delete_product' );
145 $wp_roles->add_cap( 'shop_vendor', 'delete_products' );
146 $wp_roles->add_cap( 'shop_vendor', 'publish_products' );
147 $wp_roles->add_cap( 'shop_vendor', 'edit_published_products' );
148 $wp_roles->add_cap( 'shop_vendor', 'upload_files' );
149 $wp_roles->add_cap( 'shop_vendor', 'assign_product_terms' );
150 }
151 }
152
153 154 155 156 157 158 159
160 public function get_core_caps() {
161 $capabilities = array();
162
163 $capability_types = array( 'product', 'shop_payment', 'shop_discount' );
164
165 foreach ( $capability_types as $capability_type ) {
166 $capabilities[ $capability_type ] = array(
167
168 "edit_{$capability_type}",
169 "read_{$capability_type}",
170 "delete_{$capability_type}",
171 "edit_{$capability_type}s",
172 "edit_others_{$capability_type}s",
173 "publish_{$capability_type}s",
174 "read_private_{$capability_type}s",
175 "delete_{$capability_type}s",
176 "delete_private_{$capability_type}s",
177 "delete_published_{$capability_type}s",
178 "delete_others_{$capability_type}s",
179 "edit_private_{$capability_type}s",
180 "edit_published_{$capability_type}s",
181
182
183 "manage_{$capability_type}_terms",
184 "edit_{$capability_type}_terms",
185 "delete_{$capability_type}_terms",
186 "assign_{$capability_type}_terms"
187 );
188 }
189
190 return $capabilities;
191 }
192
193 194 195 196 197 198 199
200 public function remove_caps() {
201 if ( class_exists( 'WP_Roles' ) )
202 if ( ! isset( $wp_roles ) )
203 $wp_roles = new WP_Roles();
204
205 if ( is_object( $wp_roles ) ) {
206
207 $wp_roles->remove_cap( 'shop_manager', 'view_shop_reports' );
208 $wp_roles->remove_cap( 'shop_manager', 'view_shop_sensitive_data' );
209 $wp_roles->remove_cap( 'shop_manager', 'export_shop_reports' );
210 $wp_roles->remove_cap( 'shop_manager', 'manage_shop_discounts' );
211 $wp_roles->remove_cap( 'shop_manager', 'manage_shop_settings' );
212
213
214 $wp_roles->remove_cap( 'administrator', 'view_shop_reports' );
215 $wp_roles->remove_cap( 'administrator', 'view_shop_sensitive_data' );
216 $wp_roles->remove_cap( 'administrator', 'export_shop_reports' );
217 $wp_roles->remove_cap( 'administrator', 'manage_shop_discounts' );
218 $wp_roles->remove_cap( 'administrator', 'manage_shop_settings' );
219
220
221 $capabilities = $this->get_core_caps();
222
223 foreach ( $capabilities as $cap_group ) {
224 foreach ( $cap_group as $cap ) {
225 $wp_roles->remove_cap( 'shop_manager', $cap );
226 $wp_roles->remove_cap( 'administrator', $cap );
227 $wp_roles->remove_cap( 'shop_worker', $cap );
228 }
229 }
230
231
232 $wp_roles->remove_cap( 'shop_accountant', 'edit_products' );
233 $wp_roles->remove_cap( 'shop_accountant', 'read_private_prodcuts' );
234 $wp_roles->remove_cap( 'shop_accountant', 'view_shop_reports' );
235 $wp_roles->remove_cap( 'shop_accountant', 'export_shop_reports' );
236
237
238 $wp_roles->remove_cap( 'shop_vendor', 'edit_product' );
239 $wp_roles->remove_cap( 'shop_vendor', 'edit_products' );
240 $wp_roles->remove_cap( 'shop_vendor', 'delete_product' );
241 $wp_roles->remove_cap( 'shop_vendor', 'delete_products' );
242 $wp_roles->remove_cap( 'shop_vendor', 'publish_products' );
243 $wp_roles->remove_cap( 'shop_vendor', 'edit_published_products' );
244 $wp_roles->remove_cap( 'shop_vendor', 'upload_files' );
245 }
246 }
247 }