PluginProbe ʕ •ᴥ•ʔ
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode / 4.7.2
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode v4.7.2
4.7.2 4.7.1 trunk 2.3.0 2.4.0 2.4.1 2.4.2 2.5.0 3.0.0 3.0.1 3.1.0 3.10.0 3.10.1 3.11.1 3.11.2 3.11.3 3.2.0 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.6.2 3.6.5 3.6.6 3.7.0 3.7.1 3.8.0 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.2.0 4.2.1 4.2.10 4.2.11 4.2.12 4.2.13 4.2.14 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.3.10 4.3.11 4.3.12 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.3.7.1 4.3.8 4.3.9 4.3.9.1 4.4.0 4.4.1 4.4.2 4.5.0 4.5.1 4.5.10 4.5.11 4.5.2 4.5.3 4.5.4 4.5.5 4.5.6 4.5.7 4.5.8 4.5.9 4.6.0 4.6.1 4.6.2 4.6.3 4.6.4 4.6.5 4.6.6 4.6.7 4.7.0
cookiebot / src / abilities / Get_Compliance_Summary_Ability.php
cookiebot / src / abilities Last commit date
Ability_Audit_Logger.php 2 months ago Cookiebot_Abilities_Registrar.php 2 months ago Cookiebot_Ability_Interface.php 2 months ago Get_Compliance_Summary_Ability.php 2 months ago Get_Status_Ability.php 2 months ago Install_Ppg_Ability.php 2 months ago Set_Cbid_Ability.php 2 months ago Toggle_Gcm_Ability.php 2 months ago Verify_Setup_Ability.php 2 months ago
Get_Compliance_Summary_Ability.php
88 lines
1 <?php
2 /**
3 * Get_Compliance_Summary_Ability class.
4 *
5 * @package cookiebot
6 * @subpackage abilities
7 */
8
9 namespace cybot\cookiebot\abilities;
10
11 use cybot\cookiebot\lib\Cookiebot_WP;
12
13 /**
14 * Ability to get compliance summary.
15 *
16 * @since 4.8.0
17 */
18 class Get_Compliance_Summary_Ability implements Cookiebot_Ability_Interface {
19
20 /**
21 * Returns the ability name.
22 *
23 * @return string
24 *
25 * @since 4.8.0
26 */
27 public function get_name() {
28 return 'cookiebot/get-compliance-summary';
29 }
30
31 /**
32 * Returns the ability arguments.
33 *
34 * @return array
35 *
36 * @since 4.8.0
37 */
38 public function get_args() {
39 return array(
40 'label' => __( 'Get Compliance Summary', 'cookiebot' ),
41 'description' => __( 'Returns the privacy regulations covered by Cookiebot CMP on this site, plus the current scan status and plan type.', 'cookiebot' ),
42 'category' => 'cookiebot',
43 'output_schema' => array(
44 'type' => 'object',
45 'properties' => array(
46 'regulations_covered' => array( 'type' => 'array', 'items' => array( 'type' => 'string' ), 'description' => 'Privacy regulations covered by Cookiebot CMP.' ),
47 'scan_status' => array( 'type' => 'string', 'description' => 'Current cookie scan status.' ),
48 'consent_log_available' => array( 'type' => 'boolean', 'description' => 'Whether a consent log exists (requires CBID to be configured).' ),
49 'plan_type' => array( 'type' => 'string', 'description' => 'Detected plan type: free, premium, or unknown.' ),
50 ),
51 'additionalProperties' => false,
52 ),
53 'execute_callback' => function() {
54 $cbid = Cookiebot_WP::get_cbid();
55 $user_data = Cookiebot_WP::get_user_data();
56 $plan_type = 'unknown';
57
58 if ( ! empty( $user_data ) ) {
59 // get_user_data() may return a string (raw JSON) or an array (already-decoded option value).
60 $data = is_string( $user_data ) ? json_decode( $user_data, true ) : $user_data;
61 if ( is_array( $data ) && isset( $data['subscription']['plan'] ) ) {
62 $plan = strtolower( $data['subscription']['plan'] );
63 if ( false !== strpos( $plan, 'free' ) ) {
64 $plan_type = 'free';
65 } elseif ( false !== strpos( $plan, 'premium' ) || false !== strpos( $plan, 'pro' ) ) {
66 $plan_type = 'premium';
67 }
68 }
69 }
70
71 return array(
72 'regulations_covered' => array( 'GDPR', 'ePrivacy', 'CCPA/CPRA', 'LGPD', 'PDPA', 'PIPEDA', 'IAB TCF 2.2', 'Google Consent Mode v2' ),
73 'scan_status' => (string) get_option( 'cookiebot-scan-status', '' ),
74 'consent_log_available' => ! empty( $cbid ),
75 'plan_type' => $plan_type,
76 );
77 },
78 'permission_callback' => function() {
79 return current_user_can( 'manage_options' );
80 },
81 'meta' => array(
82 'annotations' => array( 'readonly' => true, 'destructive' => false, 'idempotent' => true ),
83 'show_in_rest' => true,
84 ),
85 );
86 }
87 }
88