PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.36
OttoKit: All-in-One Automation Platform v1.1.36
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 / SureDonation / triggers / suredonation-donation-completed.php
suretriggers / src / Integrations / SureDonation / triggers Last commit date
suredonation-donation-completed.php 1 month ago suredonation-donation-refunded.php 1 month ago suredonation-donation-status-changed.php 1 month ago suredonation-new-donation.php 1 month ago
suredonation-donation-completed.php
147 lines
1 <?php
2 /**
3 * SureDonationDonationCompleted trigger.
4 * php version 5.6
5 *
6 * @category SureDonationDonationCompleted
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\SureDonation\Triggers;
15
16 use SureTriggers\Controllers\AutomationController;
17 use SureTriggers\Traits\SingletonLoader;
18
19 /**
20 * SureDonationDonationCompleted
21 *
22 * @category SureDonationDonationCompleted
23 * @package SureTriggers
24 * @author BSF <username@example.com>
25 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
26 * @link https://www.brainstormforce.com/
27 * @since 1.0.0
28 */
29 class SureDonationDonationCompleted {
30
31 /**
32 * Integration type.
33 *
34 * @var string
35 */
36 public $integration = 'SureDonation';
37
38 /**
39 * Trigger name.
40 *
41 * @var string
42 */
43 public $trigger = 'suredonation_donation_completed';
44
45 use SingletonLoader;
46
47 /**
48 * Constructor
49 *
50 * @since 1.0.0
51 */
52 public function __construct() {
53 add_filter( 'sure_trigger_register_trigger', [ $this, 'register' ] );
54 }
55
56 /**
57 * Register a trigger.
58 *
59 * @param array $triggers triggers.
60 * @return array
61 */
62 public function register( $triggers ) {
63 $triggers[ $this->integration ][ $this->trigger ] = [
64 'label' => __( 'Donation Completed', 'suretriggers' ),
65 'action' => 'suredonation_donation_status_changed',
66 'function' => [ $this, 'trigger_listener' ],
67 'priority' => 10,
68 'accepted_args' => 4,
69 ];
70
71 return $triggers;
72 }
73
74 /**
75 * Trigger listener.
76 *
77 * @param int $donation_id Donation ID.
78 * @param string $new_status New payment status.
79 * @param string $old_status Previous payment status.
80 * @param array<string, mixed> $donation Donation data array.
81 * @return void
82 */
83 public function trigger_listener( $donation_id, $new_status, $old_status, $donation ) {
84 if ( 'completed' !== $new_status ) {
85 return;
86 }
87
88 $context = $this->get_donation_context( $donation_id, $donation );
89 $context['old_status'] = $old_status;
90
91 AutomationController::sure_trigger_handle_trigger(
92 [
93 'trigger' => $this->trigger,
94 'context' => $context,
95 ]
96 );
97 }
98
99 /**
100 * Build context array from donation data.
101 *
102 * @param int $donation_id Donation ID.
103 * @param array<string, mixed> $donation Donation data (may be empty; fetched fresh if so).
104 * @return array<string, mixed>
105 */
106 private function get_donation_context( $donation_id, $donation ) {
107 if ( ( ! is_array( $donation ) || empty( $donation ) ) && class_exists( 'SureDonation\Inc\Database\Tables\Donations' ) ) {
108 $donation = \SureDonation\Inc\Database\Tables\Donations::get( absint( $donation_id ) );
109 }
110
111 if ( ! is_array( $donation ) ) {
112 $donation = [];
113 }
114
115 $campaign_id = isset( $donation['campaign_id'] ) && is_numeric( $donation['campaign_id'] ) ? absint( $donation['campaign_id'] ) : 0;
116 $form_id = isset( $donation['form_id'] ) && is_numeric( $donation['form_id'] ) ? absint( $donation['form_id'] ) : 0;
117
118 return [
119 'donation_id' => absint( $donation_id ),
120 'campaign_id' => $campaign_id,
121 'campaign_title' => $campaign_id ? (string) get_the_title( $campaign_id ) : '',
122 'form_id' => $form_id,
123 'form_title' => $form_id ? (string) get_the_title( $form_id ) : '',
124 'donor_id' => isset( $donation['donor_id'] ) && is_numeric( $donation['donor_id'] ) ? absint( $donation['donor_id'] ) : 0,
125 'donor_name' => isset( $donation['donor_name'] ) ? sanitize_text_field( (string) $donation['donor_name'] ) : '',
126 'donor_email' => isset( $donation['donor_email'] ) ? sanitize_email( (string) $donation['donor_email'] ) : '',
127 'donor_phone' => isset( $donation['donor_phone'] ) ? sanitize_text_field( (string) $donation['donor_phone'] ) : '',
128 'amount' => isset( $donation['amount'] ) && is_numeric( $donation['amount'] ) ? (float) $donation['amount'] : 0.0,
129 'fees_covered' => isset( $donation['fees_covered'] ) && is_numeric( $donation['fees_covered'] ) ? (float) $donation['fees_covered'] : 0.0,
130 'currency' => isset( $donation['currency'] ) ? sanitize_text_field( (string) $donation['currency'] ) : 'USD',
131 'payment_status' => isset( $donation['payment_status'] ) ? sanitize_text_field( (string) $donation['payment_status'] ) : 'completed',
132 'payment_mode' => isset( $donation['payment_mode'] ) ? sanitize_text_field( (string) $donation['payment_mode'] ) : '',
133 'gateway' => isset( $donation['gateway'] ) ? sanitize_text_field( (string) $donation['gateway'] ) : '',
134 'transaction_id' => isset( $donation['transaction_id'] ) ? sanitize_text_field( (string) $donation['transaction_id'] ) : '',
135 'donation_type' => isset( $donation['donation_type'] ) ? sanitize_text_field( (string) $donation['donation_type'] ) : 'one-time',
136 'is_anonymous' => ! empty( $donation['is_anonymous'] ),
137 'donor_comment' => isset( $donation['donor_comment'] ) ? wp_kses_post( (string) $donation['donor_comment'] ) : '',
138 'subscription_id' => isset( $donation['subscription_id'] ) ? sanitize_text_field( (string) $donation['subscription_id'] ) : '',
139 'subscription_status' => isset( $donation['subscription_status'] ) ? sanitize_text_field( (string) $donation['subscription_status'] ) : '',
140 'created_at' => isset( $donation['created_at'] ) ? sanitize_text_field( (string) $donation['created_at'] ) : '',
141 'updated_at' => isset( $donation['updated_at'] ) ? sanitize_text_field( (string) $donation['updated_at'] ) : '',
142 ];
143 }
144 }
145
146 SureDonationDonationCompleted::get_instance();
147