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 / meta-box / includes / requirements.php

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

213 lines 8.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\Meta_Box\Requirements
6 * @since 1.0.0
7 */
8
9 // Exit if accessed directly
10 if( !defined( 'ABSPATH' ) ) exit;
11
12 /**
13 * Add the custom field to the requirement object
14 *
15 * @since 1.0.0
16 *
17 * @param $requirement
18 * @param $requirement_id
19 *
20 * @return array
21 */
22 function gamipress_meta_box_requirement_object( $requirement, $requirement_id ) {
23
24 if( isset( $requirement['trigger_type'] )
25 && ( $requirement['trigger_type'] === 'gamipress_meta_box_update_specific_post_field_any_value'
26 || $requirement['trigger_type'] === 'gamipress_meta_box_update_specific_user_field_any_value' ) ) {
27
28 $requirement['mb_field_name'] = get_post_meta( $requirement_id, '_gamipress_meta_box_field_name', true );
29
30 }
31
32 if( isset( $requirement['trigger_type'] )
33 && ( $requirement['trigger_type'] === 'gamipress_meta_box_update_any_post_field_specific_value'
34 || $requirement['trigger_type'] === 'gamipress_meta_box_update_any_user_field_specific_value' ) ) {
35
36 $requirement['mb_field_value'] = get_post_meta( $requirement_id, '_gamipress_meta_box_field_value', true );
37 $requirement['mb_field_value_condition'] = get_post_meta( $requirement_id, '_gamipress_meta_box_field_value_condition', true );
38 }
39
40 if( isset( $requirement['trigger_type'] )
41 && ( $requirement['trigger_type'] === 'gamipress_meta_box_update_specific_post_field_specific_value'
42 || $requirement['trigger_type'] === 'gamipress_meta_box_update_specific_user_field_specific_value' ) ) {
43
44 $requirement['mb_field_name'] = get_post_meta( $requirement_id, '_gamipress_meta_box_field_name', true );
45 $requirement['mb_field_value'] = get_post_meta( $requirement_id, '_gamipress_meta_box_field_value', true );
46 $requirement['mb_field_value_condition'] = get_post_meta( $requirement_id, '_gamipress_meta_box_field_value_condition', true );
47 }
48
49 return $requirement;
50 }
51 add_filter( 'gamipress_requirement_object', 'gamipress_meta_box_requirement_object', 10, 2 );
52
53 /**
54 * Custom field on requirements UI
55 *
56 * @since 1.0.0
57 *
58 * @param $requirement_id
59 * @param $post_id
60 */
61 function gamipress_meta_box_requirement_ui_fields( $requirement_id, $post_id ) {
62
63 $value_conditions = gamipress_meta_box_get_value_conditions();
64 $value_condition = get_post_meta( $requirement_id, '_gamipress_meta_box_field_value_condition', true );
65 $field_value = get_post_meta( $requirement_id, '_gamipress_meta_box_field_value', true );
66 $field_name = get_post_meta( $requirement_id, '_gamipress_meta_box_field_name', true );
67 $field_name_user = get_post_meta( $requirement_id, '_gamipress_meta_box_field_name_user', true );
68
69 $post_fields = gamipress_meta_box_get_all_post_fields();
70
71 // Meta Box User Meta Extension
72 if ( defined( 'MBAIO_DIR' ) || class_exists( 'RWMB_User_Storage' ) ) {
73
74 if ( ! function_exists( 'rwmb_get_object_fields' ) ) {
75 return;
76 }
77
78 $user_fields = rwmb_get_object_fields( 'user', 'user' );
79 }
80
81 ?>
82
83 <span class="mb-field-name">
84 <select>
85 <?php foreach( $post_fields as $id => $name ) : ?>
86 <option value="<?php echo esc_attr( $id ); ?>" <?php selected( $field_name, $id ); ?>><?php echo esc_html( $name['name'] ); ?></option>
87 <?php endforeach; ?>
88 </select>
89 </span>
90
91 <?php
92 if ( isset( $user_fields ) ){
93 ?>
94
95 <span class="mb-field-name-user">
96 <select>
97 <?php foreach( $user_fields as $id => $name ) : ?>
98 <option value="<?php echo esc_attr( $id ); ?>" <?php selected( $field_name_user, $id ); ?>><?php echo esc_html( $name['name'] ); ?></option>
99 <?php endforeach; ?>
100 </select>
101 </span>
102
103 <?php
104 }
105 ?>
106
107 <span class="mb-field-value">
108 <select>
109 <?php foreach( $value_conditions as $id => $name ) : ?>
110 <option value="<?php echo esc_attr( $id ); ?>" <?php selected( $value_condition, $id ); ?>><?php echo esc_html( $name ); ?></option>
111 <?php endforeach; ?>
112 </select>
113 <input type="text" value="<?php echo $field_value; ?>" placeholder="<?php echo __( 'Field value', 'gamipress' ); ?>" />
114 </span>
115
116 <?php
117 }
118 add_action( 'gamipress_requirement_ui_html_after_achievement_post', 'gamipress_meta_box_requirement_ui_fields', 10, 2 );
119
120 /**
121 * Custom handler to save the custom field on requirements UI
122 *
123 * @since 1.0.0
124 *
125 * @param $requirement_id
126 * @param $requirement
127 */
128 function gamipress_meta_box_ajax_update_requirement( $requirement_id, $requirement ) {
129
130 $requirement = wp_parse_args( $requirement, array(
131 'mb_field_name' => '',
132 'mb_field_name_user' => '',
133 'mb_field_value_condition' => '',
134 'mb_field_value' => '',
135 ) );
136
137 // Specific Field Any Value
138 if( isset( $requirement['trigger_type'] )
139 && ( $requirement['trigger_type'] === 'gamipress_meta_box_update_specific_post_field_any_value' ) ) {
140
141 update_post_meta( $requirement_id, '_gamipress_meta_box_field_name', $requirement['mb_field_name'] );
142 }
143
144 // Specific Field Any Value
145 if( isset( $requirement['trigger_type'] )
146 && ( $requirement['trigger_type'] === 'gamipress_meta_box_update_specific_user_field_any_value' ) ) {
147
148 update_post_meta( $requirement_id, '_gamipress_meta_box_field_name_user', $requirement['mb_field_name_user'] );
149 }
150
151 // Any Field Specific Value
152 if( isset( $requirement['trigger_type'] )
153 && ( $requirement['trigger_type'] === 'gamipress_meta_box_update_any_post_field_specific_value'
154 || $requirement['trigger_type'] === 'gamipress_meta_box_update_any_user_field_specific_value' ) ) {
155
156 update_post_meta( $requirement_id, '_gamipress_meta_box_field_value_condition', $requirement['mb_field_value_condition'] );
157 update_post_meta( $requirement_id, '_gamipress_meta_box_field_value', $requirement['mb_field_value'] );
158
159
160 }
161
162 // Specific Field Specific Value
163 if( isset( $requirement['trigger_type'] )
164 && ( $requirement['trigger_type'] === 'gamipress_meta_box_update_specific_post_field_specific_value' ) ) {
165
166 update_post_meta( $requirement_id, '_gamipress_meta_box_field_value_condition', $requirement['mb_field_value_condition'] );
167 update_post_meta( $requirement_id, '_gamipress_meta_box_field_value', $requirement['mb_field_value'] );
168 update_post_meta( $requirement_id, '_gamipress_meta_box_field_name', $requirement['mb_field_name'] );
169 }
170
171 // Specific Field Specific Value
172 if( isset( $requirement['trigger_type'] )
173 && ( $requirement['trigger_type'] === 'gamipress_meta_box_update_specific_user_field_specific_value' ) ) {
174
175 update_post_meta( $requirement_id, '_gamipress_meta_box_field_value_condition', $requirement['mb_field_value_condition'] );
176 update_post_meta( $requirement_id, '_gamipress_meta_box_field_value', $requirement['mb_field_value'] );
177 update_post_meta( $requirement_id, '_gamipress_meta_box_field_name_user', $requirement['mb_field_name_user'] );
178 }
179 }
180 add_action( 'gamipress_ajax_update_requirement', 'gamipress_meta_box_ajax_update_requirement', 10, 2 );
181
182 /**
183 * Get meta box fields objects related to posts and custom types
184 *
185 * @since 1.0.0
186 *
187 * @return array
188 */
189 function gamipress_meta_box_get_all_post_fields() {
190
191 if ( ! function_exists( 'rwmb_get_object_fields' ) ) {
192 return array();
193 }
194
195 $post_fields = rwmb_get_object_fields( 'post' );
196
197 // Get custom types created on Meta Box
198 $custom_post_types = get_posts( [
199 'post_type' => 'mb-post-type',
200 'post_status' => 'publish',
201 'numberposts' => -1
202 ] );
203
204 if ( !empty ( $custom_post_types ) ) {
205 foreach ( $custom_post_types as $custom_type ) {
206 $custom_fields = rwmb_get_object_fields( $custom_type->post_name );
207 $post_fields = array_merge($post_fields, $custom_fields);
208 }
209 }
210
211 return $post_fields;
212
213 }