Easy Digital Downloads
  • Package
  • Class
  • Tree

Packages

  • EDD
    • Admin
      • Actions
      • Add-ons
      • Dashboard
      • Discounts
      • Downloads
      • Export
      • Notices
      • Pages
      • Payments
      • Reports
      • Settings
      • System
      • Upgrades
      • Upload
      • Welcome
    • Cart
    • Checkout
    • Classes
      • API
      • Fees
      • HTML
      • Roles
      • Session
    • Emails
    • Functions
      • AJAX
      • Compatibility
      • Errors
      • Formatting
      • Install
      • Login
      • Taxes
      • Templates
    • Gateways
    • Logging
    • Payments
    • Shortcodes
    • Widgets

Classes

  • EDD_Roles
  1 <?php
  2 /**
  3  * Roles and Capabilities
  4  *
  5  * @package     EDD
  6  * @subpackage  Classes/Roles
  7  * @copyright   Copyright (c) 2012, Pippin Williamson
  8  * @license     http://opensource.org/licenses/gpl-2.0.php GNU Public License
  9  * @since       1.4.4
 10 */
 11 
 12 /**
 13  * EDD_Roles Class
 14  *
 15  * This class handles the role creation and assignment of capabilities for those roles.
 16  *
 17  * These roles let us have Shop Accountants, Shop Workers, etc, each of whom can do
 18  * certain things within the EDD store
 19  *
 20  * @since 1.4.4
 21  */
 22 class EDD_Roles {
 23     /**
 24      * Get things going
 25      *
 26      * @access public
 27      * @since 1.4.4
 28      * @see EDD_Roles::add_roles()
 29      * @see EDD_Roles::add_caps()
 30      * @return void
 31      */
 32     public function __construct() {
 33         $this->add_roles();
 34         $this->add_caps();
 35     }
 36 
 37     /**
 38      * Add new shop roles with default WP caps
 39      *
 40      * @access public
 41      * @since 1.4.4
 42      * @return void
 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      * Add new shop-specific capabilities
100      *
101      * @access public
102      * @since  1.4.4
103      * @global obj $wp_roles
104      * @return void
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             // Add the main post type capabilities
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      * Gets the core post type capabilties
155      *
156      * @access public
157      * @since  1.4.4
158      * @return array $capabilities Core post type capabilties
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                 // Post type
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                 // Terms
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      * Remove core post type capabilities (called on uninstall)
195      *
196      * @access public
197      * @since 1.5.2
198      * @return void
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             /** Shop Manager Capabilities */
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             /** Site Administrator Capabilities */
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             /** Remove the Main Post Type Capabilities */
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             /** Shop Accountant Capabilities */
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             /** Shop Vendor Capabilities */
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 }
Easy Digital Downloads API documentation generated by ApiGen 2.8.0