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 / memberpress / actions / create-coupon.php
suretriggers / src / Integrations / memberpress / actions Last commit date
add-membership.php 10 months ago create-coupon.php 10 months ago remove-membership.php 10 months ago
create-coupon.php
147 lines
1 <?php
2 /**
3 * Create Coupon.
4 * php version 5.6
5 *
6 * @category CreateCoupon
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\MemberPress\Actions;
15
16 use Exception;
17 use MeprEvent;
18 use MeprProduct;
19 use MeprTransaction;
20 use MeprUser;
21 use MeprUtils;
22 use SureTriggers\Integrations\AutomateAction;
23 use SureTriggers\Traits\SingletonLoader;
24
25 /**
26 * CreateCoupon
27 *
28 * @category CreateCoupon
29 * @package SureTriggers
30 * @author BSF <username@example.com>
31 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
32 * @link https://www.brainstormforce.com/
33 * @since 1.0.0
34 */
35 class CreateCoupon extends AutomateAction {
36
37
38 /**
39 * Integration type.
40 *
41 * @var string
42 */
43 public $integration = 'MemberPress';
44
45 /**
46 * Action name.
47 *
48 * @var string
49 */
50 public $action = 'mp_create_coupon';
51
52 use SingletonLoader;
53
54 /**
55 * Register a action.
56 *
57 * @param array $actions actions.
58 * @return array
59 */
60 public function register( $actions ) {
61 $actions[ $this->integration ][ $this->action ] = [
62 'label' => __( 'Create Coupon', 'suretriggers' ),
63 'action' => $this->action,
64 'function' => [ $this, 'action_listener' ],
65 ];
66 return $actions;
67 }
68
69 /**
70 * Action listener.
71 *
72 * @param int $user_id user_id.
73 * @param int $automation_id automation_id.
74 * @param array $fields fields.
75 * @param array $selected_options selectedOptions.
76 * @throws Exception Throws exception.
77 *
78 * @return array
79 */
80 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
81 $coupon_code = ( isset( $selected_options['coupon_code'] ) ) ? $selected_options['coupon_code'] : '';
82 $new_post = [
83 'post_title' => $coupon_code,
84 'post_name' => strtolower( $coupon_code ),
85 'post_status' => 'publish',
86 'post_author' => $user_id,
87 'post_type' => 'memberpresscoupon',
88 ];
89 $couponexist = get_page_by_title( $coupon_code, OBJECT, 'memberpresscoupon' ); // @phpcs:ignore
90 if ( $couponexist ) {
91 return [
92 'status' => 'error',
93 'message' => 'Coupon is already exist with provided code',
94 ];
95 }
96 // Insert the post into the database.
97 $new_coupon = wp_insert_post( $new_post );
98 if ( isset( $selected_options['allow_upgrade_downgrades'] ) ) {
99 $allow_upgrade = $selected_options['allow_upgrade_downgrades'];
100 update_post_meta( $new_coupon, '_mepr_coupons_use_on_upgrades', $allow_upgrade );
101 }
102 if ( isset( $selected_options['start_date'] ) && '' !== $selected_options['start_date'] ) {
103 $start_date = $selected_options['start_date'];
104 $start_date = strtotime( $start_date );
105 update_post_meta( $new_coupon, '_mepr_coupons_should_start', 1 );
106 update_post_meta( $new_coupon, '_mepr_coupons_starts_on', $start_date );
107
108 }
109
110 if ( isset( $selected_options['expiration_date'] ) && '' !== $selected_options['expiration_date'] ) {
111 $expiration_date = $selected_options['expiration_date'];
112 $expiration_date = strtotime( $expiration_date );
113 update_post_meta( $new_coupon, '_mepr_coupons_should_expire', 1 );
114 update_post_meta( $new_coupon, '_mepr_coupons_expires_on', $expiration_date );
115 }
116 if ( isset( $selected_options['usage_count'] ) && '' !== $selected_options['usage_count'] ) {
117 $usage_count = $selected_options['usage_count'];
118 update_post_meta( $new_coupon, '_mepr_coupons_usage_amount', $usage_count );
119 }
120 if ( isset( $selected_options['discount_amount'] ) && '' !== $selected_options['discount_amount'] ) {
121 $discount_amount = $selected_options['discount_amount'];
122 update_post_meta( $new_coupon, '_mepr_coupons_discount_amount', $discount_amount );
123 }
124
125 if ( isset( $selected_options['discount_type'] ) && '' !== $selected_options['discount_type'] ) {
126 $discount_type = $selected_options['discount_type'];
127 update_post_meta( $new_coupon, '_mepr_coupons_discount_type', $discount_type );
128 }
129
130 if ( isset( $selected_options['memberpressproduct'] ) && ! empty( $selected_options['memberpressproduct'] ) ) {
131 $products = [];
132 foreach ( $selected_options['memberpressproduct'] as $membership ) {
133 array_push( $products, $membership['value'] );
134 }
135 update_post_meta( $new_coupon, '_mepr_coupons_valid_products', $products );
136 }
137 update_post_meta( $new_coupon, '_mepr_coupons_discount_mode', 'standard' );
138
139 $post = get_post( $new_coupon );
140 $post_meta = get_post_meta( $new_coupon );
141 $context = array_merge( (array) $post, (array) $post_meta );
142 return $context;
143 }
144 }
145
146 CreateCoupon::get_instance();
147