PluginProbe
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI / 7.9.8
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI v7.9.8
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 7.8.7 All 46 releases
gamipress / integrations / woocommerce / includes / requirements.php

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

216 lines 9.0 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 return $requirement;
66 }
67 add_filter( 'gamipress_requirement_object', 'gamipress_wc_requirement_object', 10, 2 );
68
69 /**
70 * Custom fields on requirements UI
71 *
72 * @param $requirement_id
73 * @param $post_id
74 */
75 function gamipress_wc_requirement_ui_fields( $requirement_id, $post_id ) {
76
77 $number_conditions = gamipress_number_condition_options();
78
79 // Purchase total value
80 $purchase_total_condition = gamipress_get_post_meta( $requirement_id, '_gamipress_wc_purchase_total_condition', true );
81 $purchase_total = absint( gamipress_get_post_meta( $requirement_id, '_gamipress_wc_purchase_total', true ) );
82
83 ?>
84 <span class="wc-purchase-total">
85 <select>
86 <?php foreach( $number_conditions as $id => $name ) : ?>
87 <option value="<?php echo esc_attr( $id ); ?>" <?php selected( $purchase_total_condition, $id ); ?>><?php echo esc_html( $name ); ?></option>
88 <?php endforeach; ?>
89 </select>
90 <input type="text" value="<?php echo esc_attr( $purchase_total ); ?>" size="7" placeholder="100" />
91 </span>
92
93 <?php
94
95 // Product variation select
96 $post_id = absint( gamipress_get_post_meta( $requirement_id, '_gamipress_achievement_post' ) );
97 $site_id = absint( gamipress_get_post_meta( $requirement_id, '_gamipress_achievement_post_site_id' ) );
98 $variation_id = absint( gamipress_get_post_meta( $requirement_id, '_gamipress_wc_variation_id', true ) );
99 ?>
100
101 <span class="wc-variation">
102 <?php if( $post_id !== 0 && $variation_id !== 0 ) {
103 echo gamipress_wc_get_product_variations_dropdown( $post_id, $variation_id, $site_id );
104 } ?>
105 </span>
106
107 <?php
108
109 // Category select
110 $category_id = absint( gamipress_get_post_meta( $requirement_id, '_gamipress_wc_category_id', true ) );
111 $categories = get_terms( array(
112 'taxonomy' => 'product_cat',
113 'hide_empty' => false,
114 ) );
115
116 ?>
117
118 <span class="wc-category">
119 <select>
120 <?php foreach( $categories as $category ) : ?>
121 <option value="<?php echo $category->term_id; ?>" <?php selected( $category_id, $category->term_id ); ?>><?php echo $category->name; ?></option>
122 <?php endforeach; ?>
123 </select>
124 </span>
125
126 <?php
127
128 // Tags select
129 $tag_id = absint( gamipress_get_post_meta( $requirement_id, '_gamipress_wc_tag_id', true ) );
130 $tags = get_terms( array(
131 'taxonomy' => 'product_tag',
132 'hide_empty' => false,
133 ) );
134
135 ?>
136
137 <span class="wc-tag">
138 <select>
139 <?php foreach( $tags as $tag ) : ?>
140 <option value="<?php echo $tag->term_id; ?>" <?php selected( $tag_id, $tag->term_id ); ?>><?php echo $tag->name; ?></option>
141 <?php endforeach; ?>
142 </select>
143 </span>
144
145 <?php
146
147 // Lifetime value
148 $lifetime_condition = gamipress_get_post_meta( $requirement_id, '_gamipress_wc_lifetime_condition', true );
149 $lifetime = absint( gamipress_get_post_meta( $requirement_id, '_gamipress_wc_lifetime', true ) );
150
151 ?>
152 <span class="wc-lifetime">
153 <select>
154 <?php foreach( $number_conditions as $id => $name ) : ?>
155 <option value="<?php echo esc_attr( $id ); ?>" <?php selected( $lifetime_condition, $id ); ?>><?php echo esc_html( $name ); ?></option>
156 <?php endforeach; ?>
157 </select>
158 <input type="text" value="<?php echo esc_attr( $lifetime ); ?>" size="5" maxlength="5" placeholder="100" />
159 </span>
160
161 <?php
162 }
163 add_action( 'gamipress_requirement_ui_html_after_achievement_post', 'gamipress_wc_requirement_ui_fields', 10, 2 );
164
165 /**
166 * Custom handler to save custom fields on requirements UI
167 *
168 * @param $requirement_id
169 * @param $requirement
170 */
171 function gamipress_wc_ajax_update_requirement( $requirement_id, $requirement ) {
172
173 if( isset( $requirement['trigger_type'] )
174 && ( $requirement['trigger_type'] === 'gamipress_wc_new_purchase_total' ) ) {
175
176 // Purchase total
177 gamipress_update_post_meta( $requirement_id, '_gamipress_wc_purchase_total_condition', $requirement['wc_purchase_total_condition'] );
178 gamipress_update_post_meta( $requirement_id, '_gamipress_wc_purchase_total', $requirement['wc_purchase_total'] );
179
180 }
181
182 if( isset( $requirement['trigger_type'] )
183 && ( $requirement['trigger_type'] === 'gamipress_wc_product_variation_purchase'
184 || $requirement['trigger_type'] === 'gamipress_wc_product_variation_refund'
185 || $requirement['trigger_type'] === 'gamipress_wc_specific_subscription_variation_purchase'
186 || $requirement['trigger_type'] === 'gamipress_wc_specific_subscription_variation_renewal'
187 || $requirement['trigger_type'] === 'gamipress_wc_specific_subscription_variation_cancelled'
188 || $requirement['trigger_type'] === 'gamipress_wc_specific_subscription_variation_expired' ) ) {
189 // Save the variation field
190 gamipress_update_post_meta( $requirement_id, '_gamipress_wc_variation_id', $requirement['wc_variation_id'] );
191 }
192
193 if( isset( $requirement['trigger_type'] )
194 && ( $requirement['trigger_type'] === 'gamipress_wc_product_category_purchase'
195 || $requirement['trigger_type'] === 'gamipress_wc_product_category_refund' ) ) {
196 // Save the category field
197 gamipress_update_post_meta( $requirement_id, '_gamipress_wc_category_id', $requirement['wc_category_id'] );
198 }
199
200 if( isset( $requirement['trigger_type'] )
201 && ( $requirement['trigger_type'] === 'gamipress_wc_product_tag_purchase'
202 || $requirement['trigger_type'] === 'gamipress_wc_product_tag_refund' ) ) {
203 // Save the tag field
204 gamipress_update_post_meta( $requirement_id, '_gamipress_wc_tag_id', $requirement['wc_tag_id'] );
205 }
206
207 if( isset( $requirement['trigger_type'] )
208 && ( $requirement['trigger_type'] === 'gamipress_wc_lifetime_value' ) ) {
209
210 // Lifetime
211 gamipress_update_post_meta( $requirement_id, '_gamipress_wc_lifetime_condition', $requirement['wc_lifetime_condition'] );
212 gamipress_update_post_meta( $requirement_id, '_gamipress_wc_lifetime', $requirement['wc_lifetime'] );
213
214 }
215 }
216 add_action( 'gamipress_ajax_update_requirement', 'gamipress_wc_ajax_update_requirement', 10, 2 );