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
gamipress / integrations / woocommerce / includes / requirements.php

requirements.php in GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI 8.0.5, at integrations/woocommerce/includes/requirements.php

244 lines 10.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 );