File: /www/wwwroot/www.cytocare.cn/wp-content/plugins/wedocs/includes/Capability.php
<?php
namespace WeDevs\WeDocs;
/**
 * Post type class
 */
class Capability {
    /**
     * Initialize the class
     */
    public function __construct() {
        add_filter( 'user_has_cap', array( $this, 'grant_delete_capability_to_specific_roles' ), 10, 4 );
    }
    /**
	 * Grant doc delete capabilities to Admin, Editor and
	 * weDocs-pro global permission given roles.
	 *
	 * @param array $all_caps An array of all the user's capabilities.
	 * @param array $caps    Actual capabilities for meta capability.
	 * @param array $args    Optional parameters passed to has_cap(), typically object ID.
	 * @param WP_User $user
     *
	 * @return array
	 */
    public function grant_delete_capability_to_specific_roles( $all_caps, $caps, $args, $user ) {
        if ( ! isset( $_GET['post'] ) || 'docs' !== get_post_type( absint( $_GET['post'] ) ) ) {
			return $all_caps;
		}
        $permitted_roles = array( 'administrator', 'editor' );
        $delete_caps     = array(
            'delete_published_docs' => true,
			'delete_docs' => true,
            'delete_others_docs' => true,
            'delete_private_docs' => true,
        );
		if ( empty( array_intersect( array_keys( $delete_caps ), $caps ) ) ) {
            return $all_caps;
        }
        if ( wedocs_pro_exists() ) {
            $permitted_roles = wedocs_get_permission_settings( 'global_permission', [ 'administrator', 'editor' ] );
        }
        $has_role = array_intersect( $user->roles, $permitted_roles );
        
        if ( ! empty( $user->roles ) && ! empty( $has_role ) ) {
            $all_caps = array_merge( $all_caps, $delete_caps );
        }
        return $all_caps;
    }
}