PluginProbe
Subscriptions for WooCommerce with Stripe Recurring Payments / 1.11.2
Subscriptions for WooCommerce with Stripe Recurring Payments v1.11.2
2.0.0 1.11.2 1.11.1 1.11.0 1.10.9 1.10.8 1.10.7 1.10.6 1.10.5 1.10.4 1.10.3 1.10.2 1.10.1 1.10.0 1.9.6 1.9.5 trunk 1.3.0 1.3.1 1.3.2 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 All 61 releases
subscription / includes / Illuminate / RoleManagement.php

RoleManagement.php in Subscriptions for WooCommerce with Stripe Recurring Payments 1.11.2, at includes/Illuminate/RoleManagement.php

117 lines 3.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Role Management File
4 *
5 * @package SpringDevs\Subscription\Illuminate
6 */
7
8 namespace SpringDevs\Subscription\Illuminate;
9
10 /**
11 * RoleManagement [ helper class ]
12 *
13 * @package SpringDevs\Subscription\Illuminate
14 */
15 class RoleManagement {
16 /**
17 * Initialize the class
18 */
19 public function __construct() {
20 add_action( 'subscrpt_subscription_activated', [ $this, 'maybe_change_user_role_on_subscription_activation' ] );
21
22 add_action( 'subscrpt_subscription_expired', [ $this, 'maybe_change_user_role_on_subscription_deactivation' ] );
23 add_action( 'subscrpt_subscription_cancelled', [ $this, 'maybe_change_user_role_on_subscription_deactivation' ] );
24 }
25
26 /**
27 * Get default active role
28 */
29 public static function get_default_active_role(): string {
30 $default_active_role = get_option( 'wp_subscription_active_role' );
31
32 // Migrate legacy option if needed.
33 if ( empty( $default_active_role ) ) {
34 $default_active_role = get_option( 'subscrpt_active_role', 'subscriber' );
35 update_option( 'wp_subscription_active_role', $default_active_role );
36 }
37
38 return $default_active_role;
39 }
40
41 /**
42 * Get default inactive role
43 */
44 public static function get_default_inactive_role(): string {
45 $default_inactive_role = get_option( 'wp_subscription_unactive_role' ); // ? Yeap! it is a typo from the ancient times. Too lazy to change!
46
47 // Migrate legacy option if needed.
48 if ( empty( $default_inactive_role ) ) {
49 $default_inactive_role = get_option( 'subscrpt_unactive_role', 'customer' );
50 update_option( 'wp_subscription_unactive_role', $default_inactive_role );
51 }
52
53 return $default_inactive_role;
54 }
55
56 /**
57 * Maybe change user role on subscription activation
58 *
59 * @param int $subscription_id Subscription ID.
60 */
61 public function maybe_change_user_role_on_subscription_activation( $subscription_id ) {
62 // Get the subscription owner's user ID
63 $user_id = get_post_field( 'post_author', (int) $subscription_id );
64
65 if ( ! $user_id ) {
66 return;
67 }
68
69 $user = new \WP_User( $user_id );
70
71 // Don't change roles for administrators
72 if ( in_array( 'administrator', $user->roles ?? [], true ) ) {
73 return;
74 }
75
76 $default_active_role = self::get_default_active_role();
77
78 $user->set_role( $default_active_role );
79 }
80
81 /**
82 * Maybe change user role on subscription deactivation
83 *
84 * @param int $subscription_id Subscription ID.
85 */
86 public function maybe_change_user_role_on_subscription_deactivation( $subscription_id ) {
87 // Get the subscription owner's user ID
88 $user_id = get_post_field( 'post_author', (int) $subscription_id );
89
90 if ( ! $user_id ) {
91 return;
92 }
93
94 $user = new \WP_User( $user_id );
95
96 // Don't change roles for administrators
97 if ( in_array( 'administrator', $user->roles ?? [], true ) ) {
98 return;
99 }
100
101 $args = [
102 'author' => $user_id,
103 'status' => 'active',
104 ];
105 $all_subscriptions = Helper::get_subscriptions( $args );
106
107 // Don't change role if user has other active subscriptions
108 if ( count( $all_subscriptions ) > 0 ) {
109 return;
110 }
111
112 $default_inactive_role = self::get_default_inactive_role();
113
114 $user->set_role( $default_inactive_role );
115 }
116 }
117