PluginProbe
weDocs: AI Powered Knowledge Base, Docs, Documentation, Wiki & AI Chatbot / trunk
weDocs: AI Powered Knowledge Base, Docs, Documentation, Wiki & AI Chatbot vtrunk
2.5.0 2.4.1 2.4.0 2.3.1 2.3.0 2.2.5 2.2.6 2.2.7 2.2.2 2.2.3 2.2.4 1.3.0 1.3.1 1.3.2 1.3.3 1.4 1.4.1 1.5 1.6 1.6.1 1.6.2 1.6.3 1.7 1.7.1 1.7.2 All 54 releases
wedocs / includes / Capability.php

Capability.php in weDocs: AI Powered Knowledge Base, Docs, Documentation, Wiki & AI Chatbot trunk, at includes/Capability.php

57 lines 1.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WeDevs\WeDocs;
4
5 /**
6 * Post type class
7 */
8 class Capability {
9 /**
10 * Initialize the class
11 */
12 public function __construct() {
13 add_filter( 'user_has_cap', array( $this, 'grant_delete_capability_to_specific_roles' ), 10, 4 );
14 }
15
16 /**
17 * Grant doc delete capabilities to Admin, Editor and
18 * weDocs-pro global permission given roles.
19 *
20 * @param array $all_caps An array of all the user's capabilities.
21 * @param array $caps Actual capabilities for meta capability.
22 * @param array $args Optional parameters passed to has_cap(), typically object ID.
23 * @param WP_User $user
24 *
25 * @return array
26 */
27 public function grant_delete_capability_to_specific_roles( $all_caps, $caps, $args, $user ) {
28 if ( ! isset( $_GET['post'] ) || ! is_numeric( $_GET['post'] ) || 'docs' !== get_post_type( absint( $_GET['post'] ) ) ) {
29 return $all_caps;
30 }
31
32 $permitted_roles = array( 'administrator', 'editor' );
33 $delete_caps = array(
34 'delete_published_docs' => true,
35 'delete_docs' => true,
36 'delete_others_docs' => true,
37 'delete_private_docs' => true,
38 );
39
40 if ( empty( array_intersect( array_keys( $delete_caps ), $caps ) ) ) {
41 return $all_caps;
42 }
43
44 if ( wedocs_pro_exists() ) {
45 $permitted_roles = wedocs_get_permission_settings( 'global_permission', [ 'administrator', 'editor' ] );
46 }
47
48 $has_role = array_intersect( $user->roles, $permitted_roles );
49
50 if ( ! empty( $user->roles ) && ! empty( $has_role ) ) {
51 $all_caps = array_merge( $all_caps, $delete_caps );
52 }
53
54 return $all_caps;
55 }
56 }
57