PluginProbe
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI / 8.0.5
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI v8.0.5
8.0.5 8.0.4 8.0.3 8.0.1 8.0.2 8.0.0 7.9.9.7 7.9.9.6 7.9.9.5 7.9.9.4 7.9.9.3 7.9.9.2 7.9.9.1 7.9.9 7.9.8 7.9.7 7.9.6 7.9.5 7.9.4 7.9.3 7.9.2 7.9.1 7.9.0 7.8.9 7.8.8 All 47 releases
← All changes | integrations/woocommerce/includes/requirements.php +244 -0 7.8.8 → 8.0.5 View file →
@@ -1,0 +1,244 @@
1 +<?php
2 +/**
3 + * Requirements
4 + *
5 + * @package GamiPress\WooCommerce\Requirements
6 + * @since 1.1.3
7 + */
8 +
9 +// Exit if accessed directly
10 +if( !defined( 'ABSPATH' ) ) exit;
11 +
12 +/**
13 + * Add custom fields to the requirement object
14 + *
15 + * @param $requirement
16 + * @param $requirement_id
17 + *
18 + * @return array
19 + */
20 +function gamipress_wc_requirement_object( $requirement, $requirement_id ) {
21 +
22 + if( isset( $requirement['trigger_type'] )
23 + && ( $requirement['trigger_type'] === 'gamipress_wc_new_purchase_total' ) ) {
24 +
25 + // Purchase total
26 + $requirement['wc_purchase_total_condition'] = gamipress_get_post_meta( $requirement_id, '_gamipress_wc_purchase_total_condition', true );
27 + $requirement['wc_purchase_total'] = gamipress_get_post_meta( $requirement_id, '_gamipress_wc_purchase_total', true );
28 +
29 + }
30 +
31 + if( isset( $requirement['trigger_type'] )
32 + && ( $requirement['trigger_type'] === 'gamipress_wc_product_variation_purchase'
33 + || $requirement['trigger_type'] === 'gamipress_wc_product_variation_refund'
34 + || $requirement['trigger_type'] === 'gamipress_wc_specific_subscription_variation_purchase'
35 + || $requirement['trigger_type'] === 'gamipress_wc_specific_subscription_variation_renewal'
36 + || $requirement['trigger_type'] === 'gamipress_wc_specific_subscription_variation_cancelled'
37 + || $requirement['trigger_type'] === 'gamipress_wc_specific_subscription_variation_expired' ) ) {
38 + // Product variation
39 + $requirement['wc_variation_id'] = gamipress_get_post_meta( $requirement_id, '_gamipress_wc_variation_id', true );
40 + }
41 +
42 + if( isset( $requirement['trigger_type'] )
43 + && ( $requirement['trigger_type'] === 'gamipress_wc_product_category_purchase'
44 + || $requirement['trigger_type'] === 'gamipress_wc_product_category_refund' ) ) {
45 + // Category
46 + $requirement['wc_category_id'] = gamipress_get_post_meta( $requirement_id, '_gamipress_wc_category_id', true );
47 + }
48 +
49 + if( isset( $requirement['trigger_type'] )
50 + && ( $requirement['trigger_type'] === 'gamipress_wc_product_tag_purchase'
51 + || $requirement['trigger_type'] === 'gamipress_wc_product_tag_refund' ) ) {
52 + // Category
53 + $requirement['wc_tag_id'] = gamipress_get_post_meta( $requirement_id, '_gamipress_wc_tag_id', true );
54 + }
55 +
56 + if( isset( $requirement['trigger_type'] )
57 + && ( $requirement['trigger_type'] === 'gamipress_wc_lifetime_value' ) ) {
58 +
59 + // Lifetime value
60 + $requirement['wc_lifetime_condition'] = gamipress_get_post_meta( $requirement_id, '_gamipress_wc_lifetime_condition', true );
61 + $requirement['wc_lifetime'] = gamipress_get_post_meta( $requirement_id, '_gamipress_wc_lifetime', true );
62 +
63 + }
64 +
65 + if( isset( $requirement['trigger_type'] )
66 + && ( $requirement['trigger_type'] === 'gamipress_wc_subscription_months_active'
67 + || $requirement['trigger_type'] === 'gamipress_wc_specific_subscription_months_active' ) ) {
68 +
69 + // Subscription months active
70 + $requirement['wc_subscription_months'] = gamipress_get_post_meta( $requirement_id, '_gamipress_wc_subscription_months', true );
71 +
72 + }
73 +
74 + return $requirement;
75 +}
76 +add_filter( 'gamipress_requirement_object', 'gamipress_wc_requirement_object', 10, 2 );
77 +
78 +/**
79 + * Custom fields on requirements UI
80 + *
81 + * @param $requirement_id
82 + * @param $post_id
83 + */
84 +function gamipress_wc_requirement_ui_fields( $requirement_id, $post_id ) {
85 +
86 + $number_conditions = gamipress_number_condition_options();
87 +
88 + // Purchase total value
89 + $purchase_total_condition = gamipress_get_post_meta( $requirement_id, '_gamipress_wc_purchase_total_condition', true );
90 + $purchase_total = absint( gamipress_get_post_meta( $requirement_id, '_gamipress_wc_purchase_total', true ) );
91 +
92 + ?>
93 + <span class="wc-purchase-total">
94 + <select>
95 + <?php foreach( $number_conditions as $id => $name ) : ?>
96 + <option value="<?php echo esc_attr( $id ); ?>" <?php selected( $purchase_total_condition, $id ); ?>><?php echo esc_html( $name ); ?></option>
97 + <?php endforeach; ?>
98 + </select>
99 + <input type="text" value="<?php echo esc_attr( $purchase_total ); ?>" size="7" placeholder="100" />
100 + </span>
101 +
102 + <?php
103 +
104 + // Product variation select
105 + $post_id = absint( gamipress_get_post_meta( $requirement_id, '_gamipress_achievement_post' ) );
106 + $site_id = absint( gamipress_get_post_meta( $requirement_id, '_gamipress_achievement_post_site_id' ) );
107 + $variation_id = absint( gamipress_get_post_meta( $requirement_id, '_gamipress_wc_variation_id', true ) );
108 + ?>
109 +
110 + <span class="wc-variation">
111 + <?php if( $post_id !== 0 && $variation_id !== 0 ) {
112 + echo gamipress_wc_get_product_variations_dropdown( $post_id, $variation_id, $site_id );
113 + } ?>
114 + </span>
115 +
116 + <?php
117 +
118 + // Category select
119 + $category_id = absint( gamipress_get_post_meta( $requirement_id, '_gamipress_wc_category_id', true ) );
120 + $categories = get_terms( array(
121 + 'taxonomy' => 'product_cat',
122 + 'hide_empty' => false,
123 + ) );
124 +
125 + ?>
126 +
127 + <span class="wc-category">
128 + <select>
129 + <?php foreach( $categories as $category ) : ?>
130 + <option value="<?php echo $category->term_id; ?>" <?php selected( $category_id, $category->term_id ); ?>><?php echo $category->name; ?></option>
131 + <?php endforeach; ?>
132 + </select>
133 + </span>
134 +
135 + <?php
136 +
137 + // Tags select
138 + $tag_id = absint( gamipress_get_post_meta( $requirement_id, '_gamipress_wc_tag_id', true ) );
139 + $tags = get_terms( array(
140 + 'taxonomy' => 'product_tag',
141 + 'hide_empty' => false,
142 + ) );
143 +
144 + ?>
145 +
146 + <span class="wc-tag">
147 + <select>
148 + <?php foreach( $tags as $tag ) : ?>
149 + <option value="<?php echo $tag->term_id; ?>" <?php selected( $tag_id, $tag->term_id ); ?>><?php echo $tag->name; ?></option>
150 + <?php endforeach; ?>
151 + </select>
152 + </span>
153 +
154 + <?php
155 +
156 + // Lifetime value
157 + $lifetime_condition = gamipress_get_post_meta( $requirement_id, '_gamipress_wc_lifetime_condition', true );
158 + $lifetime = absint( gamipress_get_post_meta( $requirement_id, '_gamipress_wc_lifetime', true ) );
159 +
160 + ?>
161 + <span class="wc-lifetime">
162 + <select>
163 + <?php foreach( $number_conditions as $id => $name ) : ?>
164 + <option value="<?php echo esc_attr( $id ); ?>" <?php selected( $lifetime_condition, $id ); ?>><?php echo esc_html( $name ); ?></option>
165 + <?php endforeach; ?>
166 + </select>
167 + <input type="text" value="<?php echo esc_attr( $lifetime ); ?>" size="5" maxlength="5" placeholder="100" />
168 + </span>
169 +
170 + <?php
171 +
172 + // Subscription months active
173 + $subscription_months = gamipress_get_post_meta( $requirement_id, '_gamipress_wc_subscription_months', true );
174 +
175 + ?>
176 + <span class="wc-subscription-months">
177 + <input type="text" value="<?php echo esc_attr( $subscription_months ); ?>" size="5" maxlength="5" placeholder="6" />
178 + </span>
179 +
180 + <?php
181 +}
182 +add_action( 'gamipress_requirement_ui_html_after_achievement_post', 'gamipress_wc_requirement_ui_fields', 10, 2 );
183 +
184 +/**
185 + * Custom handler to save custom fields on requirements UI
186 + *
187 + * @param $requirement_id
188 + * @param $requirement
189 + */
190 +function gamipress_wc_ajax_update_requirement( $requirement_id, $requirement ) {
191 +
192 + if( isset( $requirement['trigger_type'] )
193 + && ( $requirement['trigger_type'] === 'gamipress_wc_new_purchase_total' ) ) {
194 +
195 + // Purchase total
196 + gamipress_update_post_meta( $requirement_id, '_gamipress_wc_purchase_total_condition', $requirement['wc_purchase_total_condition'] );
197 + gamipress_update_post_meta( $requirement_id, '_gamipress_wc_purchase_total', $requirement['wc_purchase_total'] );
198 +
199 + }
200 +
201 + if( isset( $requirement['trigger_type'] )
202 + && ( $requirement['trigger_type'] === 'gamipress_wc_product_variation_purchase'
203 + || $requirement['trigger_type'] === 'gamipress_wc_product_variation_refund'
204 + || $requirement['trigger_type'] === 'gamipress_wc_specific_subscription_variation_purchase'
205 + || $requirement['trigger_type'] === 'gamipress_wc_specific_subscription_variation_renewal'
206 + || $requirement['trigger_type'] === 'gamipress_wc_specific_subscription_variation_cancelled'
207 + || $requirement['trigger_type'] === 'gamipress_wc_specific_subscription_variation_expired' ) ) {
208 + // Save the variation field
209 + gamipress_update_post_meta( $requirement_id, '_gamipress_wc_variation_id', $requirement['wc_variation_id'] );
210 + }
211 +
212 + if( isset( $requirement['trigger_type'] )
213 + && ( $requirement['trigger_type'] === 'gamipress_wc_product_category_purchase'
214 + || $requirement['trigger_type'] === 'gamipress_wc_product_category_refund' ) ) {
215 + // Save the category field
216 + gamipress_update_post_meta( $requirement_id, '_gamipress_wc_category_id', $requirement['wc_category_id'] );
217 + }
218 +
219 + if( isset( $requirement['trigger_type'] )
220 + && ( $requirement['trigger_type'] === 'gamipress_wc_product_tag_purchase'
221 + || $requirement['trigger_type'] === 'gamipress_wc_product_tag_refund' ) ) {
222 + // Save the tag field
223 + gamipress_update_post_meta( $requirement_id, '_gamipress_wc_tag_id', $requirement['wc_tag_id'] );
224 + }
225 +
226 + if( isset( $requirement['trigger_type'] )
227 + && ( $requirement['trigger_type'] === 'gamipress_wc_lifetime_value' ) ) {
228 +
229 + // Lifetime
230 + gamipress_update_post_meta( $requirement_id, '_gamipress_wc_lifetime_condition', $requirement['wc_lifetime_condition'] );
231 + gamipress_update_post_meta( $requirement_id, '_gamipress_wc_lifetime', $requirement['wc_lifetime'] );
232 +
233 + }
234 +
235 + if( isset( $requirement['trigger_type'] )
236 + && ( $requirement['trigger_type'] === 'gamipress_wc_subscription_months_active'
237 + || $requirement['trigger_type'] === 'gamipress_wc_specific_subscription_months_active' ) ) {
238 +
239 + // Subscription months active
240 + gamipress_update_post_meta( $requirement_id, '_gamipress_wc_subscription_months', $requirement['wc_subscription_months'] );
241 +
242 + }
243 +}
244 +add_action( 'gamipress_ajax_update_requirement', 'gamipress_wc_ajax_update_requirement', 10, 2 );