*/ public static function map(): array { $all = array( self::ACCESS, self::MANAGE, self::FLEET, self::BOOKINGS, self::REPORTS ); return array( 'administrator' => $all, 'rentbaik_manager' => $all, 'rentbaik_staff' => array( self::ACCESS, self::BOOKINGS ), ); } /** * Create roles and grant capabilities. * * @return void */ public static function install(): void { add_role( 'rentbaik_manager', __( 'Rental Manager', 'rentbaik' ), array( 'read' => true, 'upload_files' => true, ) ); add_role( 'rentbaik_staff', __( 'Rental Staff', 'rentbaik' ), array( 'read' => true, 'upload_files' => true, ) ); foreach ( self::map() as $role_name => $caps ) { $role = get_role( $role_name ); if ( ! $role ) { continue; } foreach ( $caps as $cap ) { $role->add_cap( $cap ); } } update_option( 'rentbaik_caps_version', self::VERSION, false ); } /** * Re-apply capabilities when the map version changed. * * @return void */ public static function maybe_upgrade(): void { if ( self::VERSION !== get_option( 'rentbaik_caps_version' ) ) { self::install(); } } /** * Remove the plugin roles and capabilities (used on uninstall). * * @return void */ public static function uninstall(): void { foreach ( self::map() as $role_name => $caps ) { $role = get_role( $role_name ); if ( ! $role ) { continue; } foreach ( $caps as $cap ) { $role->remove_cap( $cap ); } } remove_role( 'rentbaik_manager' ); remove_role( 'rentbaik_staff' ); delete_option( 'rentbaik_caps_version' ); } }