PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / trunk
OttoKit: All-in-One Automation Platform vtrunk
1.1.37 1.1.36 1.1.35 1.1.34 1.1.33 1.1.32 1.1.31 1.1.30 1.1.29 1.1.28 1.1.27 1.1.9 trunk 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 1.0.23 1.0.24 1.0.25 1.0.26 1.0.27 1.0.28 1.0.29 1.0.30 1.0.31 1.0.32 1.0.33 1.0.34 1.0.35 1.0.36 1.0.37 1.0.38 1.0.39 1.0.40 1.0.41 1.0.42 1.0.43 1.0.44 1.0.45 1.0.46 1.0.47 1.0.48 1.0.49 1.0.50 1.0.51 1.0.52 1.0.53 1.0.54 1.0.55 1.0.56 1.0.57 1.0.58 1.0.59 1.0.60 1.0.61 1.0.62 1.0.63 1.0.64 1.0.65 1.0.66 1.0.67 1.0.68 1.0.69 1.0.7 1.0.70 1.0.71 1.0.72 1.0.73 1.0.74 1.0.75 1.0.76 1.0.77 1.0.78 1.0.79 1.0.8 1.0.80 1.0.81 1.0.82 1.0.83 1.0.84 1.0.85 1.0.86 1.0.87 1.0.88 1.0.89 1.0.9 1.0.90 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.20 1.1.21 1.1.22 1.1.23 1.1.24 1.1.25 1.1.26 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8
suretriggers / src / Integrations / woocommerce-memberships / triggers / user-membership-plan-expires.php
suretriggers / src / Integrations / woocommerce-memberships / triggers Last commit date
add-user-membership-plan.php 3 years ago user-membership-plan-cancelled.php 3 years ago user-membership-plan-expires.php 3 years ago user-membership-status-changed.php 2 years ago
user-membership-plan-expires.php
138 lines
1 <?php
2 /**
3 * UserMembershipPlanExpires.
4 * php version 5.6
5 *
6 * @category UserMembershipPlanExpires
7 * @package SureTriggers
8 * @author BSF <username@example.com>
9 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
10 * @link https://www.brainstormforce.com/
11 * @since 1.0.0
12 */
13
14 namespace SureTriggers\Integrations\WoocommerceMemberships\Triggers;
15
16 use SureTriggers\Controllers\AutomationController;
17 use SureTriggers\Traits\SingletonLoader;
18 use SureTriggers\Integrations\WordPress\WordPress;
19
20 if ( ! class_exists( 'UserMembershipPlanExpires' ) ) :
21
22 /**
23 * UserMembershipPlanExpires
24 *
25 * @category UserMembershipPlanExpires
26 * @package SureTriggers
27 * @author BSF <username@example.com>
28 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
29 * @link https://www.brainstormforce.com/
30 * @since 1.0.0
31 *
32 * @psalm-suppress UndefinedTrait
33 */
34 class UserMembershipPlanExpires {
35
36 /**
37 * Integration type.
38 *
39 * @var string
40 */
41 public $integration = 'WoocommerceMemberships';
42
43 /**
44 * Trigger name.
45 *
46 * @var string
47 */
48 public $trigger = 'wc_user_membership_plan_expires';
49
50 use SingletonLoader;
51
52 /**
53 * Constructor
54 *
55 * @since 1.0.0
56 */
57 public function __construct() {
58 add_filter( 'sure_trigger_register_trigger', [ $this, 'register' ] );
59 }
60
61 /**
62 * Register action.
63 *
64 * @param array $triggers trigger data.
65 * @return array
66 */
67 public function register( $triggers ) {
68 $triggers[ $this->integration ][ $this->trigger ] = [
69 'label' => __( "A user's access to a membership plan expires", 'suretriggers' ),
70 'action' => $this->trigger,
71 'common_action' => 'wc_memberships_user_membership_status_changed',
72 'function' => [ $this, 'trigger_listener' ],
73 'priority' => 99,
74 'accepted_args' => 3,
75 ];
76
77 return $triggers;
78 }
79
80 /**
81 * Trigger listener
82 *
83 * @param object $membership_plan User Membership ID.
84 * @param array $old_status Old Status.
85 * @param array $new_status New Status.
86 *
87 * @return void
88 */
89 public function trigger_listener( $membership_plan, $old_status, $new_status ) {
90
91 if ( property_exists( $membership_plan, 'user_id' ) ) {
92 if ( 0 === $membership_plan->user_id ) {
93 // Its a logged in recipe and user ID is 0.
94 return;
95 }
96 }
97
98 if ( 'expired' !== $new_status ) {
99 return;
100 }
101
102 if ( property_exists( $membership_plan, 'plan_id' ) ) {
103 $membership_plan_type = get_post_meta( $membership_plan->plan_id, '_access_method', true );
104
105 if ( 'purchase' === $membership_plan_type ) {
106 if ( property_exists( $membership_plan, 'post' ) ) {
107 $order_id = get_post_meta( $membership_plan->post->ID, '_order_id', true );
108 }
109 }
110
111 $context['membership_plan'] = $membership_plan->plan_id;
112 }
113 $context['membership_plan_status'] = $new_status;
114 if ( property_exists( $membership_plan, 'name' ) ) {
115 $context['membership_plan_name'] = $membership_plan->name;
116 }
117 if ( property_exists( $membership_plan, 'user_id' ) ) {
118 $context['user'] = WordPress::get_user_context( $membership_plan->user_id );
119 }
120
121 AutomationController::sure_trigger_handle_trigger(
122 [
123 'trigger' => $this->trigger,
124 'context' => $context,
125 ]
126 );
127 }
128 }
129
130 /**
131 * Ignore false positive
132 *
133 * @psalm-suppress UndefinedMethod
134 */
135 UserMembershipPlanExpires::get_instance();
136
137 endif;
138