PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.33
OttoKit: All-in-One Automation Platform v1.1.33
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 / edd / actions / edd-create-discount.php
suretriggers / src / Integrations / edd / actions Last commit date
create-discount.php 10 months ago create-purchase.php 8 months ago delete-discount.php 10 months ago edd-create-discount.php 10 months ago fetch-discount-details.php 10 months ago find-user-have-active-inactive-license-for-specific-download.php 2 years ago find-user-have-subscription-for-specific-download.php 2 years ago find-user-purchased-download.php 10 months ago revoke-purchase.php 8 months ago update-license-status.php 8 months ago update-purchase-meta.php 8 months ago update-purchase.php 8 months ago
edd-create-discount.php
196 lines
1 <?php
2 /**
3 * EDDCreateDiscount.
4 * php version 5.6
5 *
6 * @category EDDCreateDiscount
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\EDD\Actions;
15
16 use SureTriggers\Integrations\AutomateAction;
17 use SureTriggers\Traits\SingletonLoader;
18 use SureTriggers\Integrations\WordPress\WordPress;
19 use Exception;
20
21 /**
22 * EDDCreateDiscount
23 *
24 * @category EDDCreateDiscount
25 * @package SureTriggers
26 * @author BSF <username@example.com>
27 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
28 * @link https://www.brainstormforce.com/
29 * @since 1.0.0
30 */
31 class EDDCreateDiscount extends AutomateAction {
32
33 /**
34 * Integration type.
35 *
36 * @var string
37 */
38 public $integration = 'EDD';
39
40 /**
41 * Action name.
42 *
43 * @var string
44 */
45 public $action = 'edd_create_discount';
46
47 use SingletonLoader;
48
49 /**
50 * Register action.
51 *
52 * @param array $actions action data.
53 * @return array
54 */
55 public function register( $actions ) {
56 $actions[ $this->integration ][ $this->action ] = [
57 'label' => __( 'Create Discount', 'suretriggers' ),
58 'action' => $this->action,
59 'function' => [ $this, 'action_listener' ],
60 ];
61
62 return $actions;
63 }
64
65 /**
66 * Action listener.
67 *
68 * @param int $user_id user_id.
69 * @param int $automation_id automation_id.
70 * @param array $fields fields.
71 * @param array $selected_options selected_options.
72 * @return array|bool
73 * @throws Exception Exception.
74 */
75 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
76
77 // Add conditional check as this action only works with EDD Discounts Pro extension.
78 if ( ! class_exists( 'edd_dp' ) ) {
79 return [
80 'status' => 'error',
81 'message' => 'EDD Discounts Pro plugin is not active.',
82 ];
83 }
84
85 $title = ! empty( $selected_options['discount_title'] ) ? $selected_options['discount_title'] : false;
86
87 $type = ! empty( $selected_options['discount_type'] ) ? sanitize_key( wp_strip_all_tags( stripslashes( trim( $selected_options['discount_type'] ) ) ) ) : false;
88
89 $quantity = ! empty( $selected_options['discount_quantity'] ) ? absint( trim( $selected_options['discount_quantity'] ) ) : false;
90
91 $value = ! empty( $selected_options['discount_value'] ) ? wp_strip_all_tags( stripslashes( trim( $selected_options['discount_value'] ) ) ) : false;
92
93 if ( ! empty( $selected_options['products'] ) ) {
94 $products_ids = array_column( $selected_options['products'], 'value' );
95 $products = $products_ids;
96 } else {
97 $products = [];
98 }
99
100 if ( ! empty( $selected_options['categories'] ) ) {
101 $categories_ids = array_column( $selected_options['categories'], 'value' );
102 $categories = $categories_ids;
103 } else {
104 $categories = [];
105 }
106
107 if ( ! empty( $selected_options['tags'] ) ) {
108 $tags_ids = array_column( $selected_options['tags'], 'value' );
109 $tags = $tags_ids;
110 } else {
111 $tags = [];
112 }
113
114 $user_emails = explode( ',', $selected_options['user_email'] );
115 if ( ! empty( $user_emails ) ) {
116 $users = [];
117 foreach ( $user_emails as $email ) {
118 $user = get_user_by( 'email', $email );
119 if ( $user ) {
120 $users[] = $user->ID;
121 }
122 }
123 } else {
124 $users = [];
125 }
126
127 $start = ! empty( $selected_options['start_date'] ) ? sanitize_text_field( trim( $selected_options['start_date'] ) ) : '';
128 $start_hour_time = explode( ':', $selected_options['start_hour'] );
129 $start_hour = ! empty( $start_hour_time[0] ) ? absint( trim( $start_hour_time[0] ) ) : '00';
130 $start_minute = ! empty( $start_hour_time[1] ) ? absint( trim( $start_hour_time[1] ) ) : '00';
131 $full_start_date = '';
132 if ( ! empty( $start ) ) {
133 $full_start_date = gmdate( 'Y-m-d H:i:s', (int) strtotime( sprintf( '%s %d:%d', $start, $start_hour, $start_minute ) ) );
134 }
135
136 $end = ! empty( $selected_options['expiration_date'] ) ? sanitize_text_field( trim( $selected_options['expiration_date'] ) ) : '';
137 $end_hour_time = explode( ':', $selected_options['expiration_hour'] );
138 $end_hour = ! empty( $end_hour_time[0] ) ? absint( trim( $end_hour_time[0] ) ) : '23';
139 $end_minute = ! empty( $end_hour_time[1] ) ? absint( trim( $end_hour_time[1] ) ) : '59';
140 $full_end_date = '';
141 if ( ! empty( $end ) ) {
142 $full_end_date = gmdate( 'Y-m-d H:i:s', (int) strtotime( sprintf( '%s %d:%d', $end, $end_hour, $end_minute ) ) );
143 }
144
145 $cust = ! empty( $selected_options['cust'] ) ? true : false;
146
147 if ( ! empty( $selected_options['groups'] ) ) {
148 $group_ids = array_column( $selected_options['groups'], 'value' );
149 $groups = $group_ids;
150 } else {
151 $groups = [];
152 }
153
154 if ( isset( $selected_options['product_condition'] ) ) {
155 $include_or_exclude = sanitize_text_field( $selected_options['product_condition'] );
156 } else {
157 $include_or_exclude = 'include';
158 }
159
160 $meta = [
161 'type' => $type,
162 'quantity' => $quantity,
163 'value' => $value,
164 'products' => $products,
165 'include_or_exclude' => $include_or_exclude,
166 'categories' => $categories,
167 'tags' => $tags,
168 'users' => $users,
169 'groups' => $groups,
170 'start' => $full_start_date,
171 'end' => $full_end_date,
172 'cust' => $cust,
173 ];
174
175 $result_arr = [
176 'post_title' => $title,
177 'post_type' => 'customer_discount',
178 'post_status' => 'publish',
179 ];
180
181 $post_id = wp_insert_post( $result_arr );
182
183 foreach ( array_filter( $meta ) as $key => $value ) {
184 update_post_meta( $post_id, $key, $value );
185 }
186 update_post_meta( $post_id, 'frontend', $meta );
187
188 $donation = WordPress::get_post_context( $post_id );
189 $discount_meta_data = get_post_meta( $post_id );
190
191 return array_merge( $donation, (array) $discount_meta_data );
192 }
193 }
194
195 EDDCreateDiscount::get_instance();
196