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 / easy-affiliate / actions / record-sale-affiliate.php
suretriggers / src / Integrations / easy-affiliate / actions Last commit date
add-affiliate.php 11 months ago record-sale-affiliate.php 11 months ago
record-sale-affiliate.php
128 lines
1 <?php
2 /**
3 * RecordSaleAffiliate.
4 * php version 5.6
5 *
6 * @category RecordSaleAffiliate
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\EasyAffiliate\Actions;
15
16 use Exception;
17 use SureTriggers\Integrations\AutomateAction;
18 use SureTriggers\Traits\SingletonLoader;
19 use \EasyAffiliate\Lib\ModelFactory;
20 use SureTriggers\Integrations\WordPress\WordPress;
21
22 /**
23 * RecordSaleAffiliate
24 *
25 * @category RecordSaleAffiliate
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 class RecordSaleAffiliate extends AutomateAction {
33
34
35 /**
36 * Integration type.
37 *
38 * @var string
39 */
40 public $integration = 'EasyAffiliate';
41
42 /**
43 * Action name.
44 *
45 * @var string
46 */
47 public $action = 'ea_record_sale_affiliate';
48
49 use SingletonLoader;
50
51 /**
52 * Register a action.
53 *
54 * @param array $actions actions.
55 * @return array
56 */
57 public function register( $actions ) {
58
59 $actions[ $this->integration ][ $this->action ] = [
60 'label' => __( 'Record Sale for Affiliate', 'suretriggers' ),
61 'action' => $this->action,
62 'function' => [ $this, 'action_listener' ],
63 ];
64 return $actions;
65 }
66
67 /**
68 * Action listener.
69 *
70 * @param int $user_id user_id.
71 * @param int $automation_id automation_id.
72 * @param array $fields fields.
73 * @param array $selected_options selectedOptions.
74 * @return array|void
75 * @throws Exception Exception.
76 */
77 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
78
79 if ( ! class_exists( 'EasyAffiliate\Models\Transaction' ) ) {
80 return [
81 'status' => 'error',
82 'message' => __( 'EasyAffiliate\Models\Transaction class not found.', 'suretriggers' ),
83
84 ];
85 }
86
87 $sale = [];
88 $sale['referrer'] = $selected_options['affiliate_id'];
89 $sale['_wafp_transaction_cust_name'] = $selected_options['customer_name'];
90 $sale['_wafp_transaction_cust_email'] = $selected_options['customer_email'];
91 $sale['_wafp_transaction_item_name'] = $selected_options['product_name'];
92 $sale['_wafp_transaction_trans_num'] = $selected_options['order_id'];
93 $sale['_wafp_transaction_source'] = $selected_options['transaction_source'];
94 $sale['_wafp_transaction_refund_amount'] = $selected_options['refund_amount'];
95 $sale['_wafp_transaction_sale_amount'] = $selected_options['amount'];
96
97 $transaction = new \EasyAffiliate\Models\Transaction();
98 $transaction->load_from_sanitized_array( $sale );
99 $transaction->affiliate_id = $sale['referrer'];
100 $transaction->apply_refund( $sale['_wafp_transaction_refund_amount'] );
101
102 $id = $transaction->store();
103 if ( is_wp_error( $id ) ) {
104 $errors[] = $id->get_error_message();
105 }
106
107 if ( ! empty( $errors ) ) {
108 throw new Exception( implode( ',', $errors ) );
109 }
110
111 /**
112 *
113 * Ignore line
114 *
115 * @phpstan-ignore-next-line
116 */
117 $data = ModelFactory::fetch( 'transaction', $transaction->id );
118 $affiliate = get_object_vars( $data->rec );
119 if ( is_numeric( $affiliate['affiliate_id'] ) ) {
120 $id = (int) $affiliate['affiliate_id'];
121 return array_merge( WordPress::get_user_context( $id ), $affiliate );
122 }
123 }
124
125 }
126
127 RecordSaleAffiliate::get_instance();
128