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

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

206 lines 8.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\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 // Specific Field Any Value
131 if( isset( $requirement['trigger_type'] )
132 && ( $requirement['trigger_type'] === 'gamipress_meta_box_update_specific_post_field_any_value' ) ) {
133
134 update_post_meta( $requirement_id, '_gamipress_meta_box_field_name', $requirement['mb_field_name'] );
135 }
136
137 // Specific Field Any Value
138 if( isset( $requirement['trigger_type'] )
139 && ( $requirement['trigger_type'] === 'gamipress_meta_box_update_specific_user_field_any_value' ) ) {
140
141 update_post_meta( $requirement_id, '_gamipress_meta_box_field_name_user', $requirement['mb_field_name_user'] );
142 }
143
144 // Any Field Specific Value
145 if( isset( $requirement['trigger_type'] )
146 && ( $requirement['trigger_type'] === 'gamipress_meta_box_update_any_post_field_specific_value'
147 || $requirement['trigger_type'] === 'gamipress_meta_box_update_any_user_field_specific_value' ) ) {
148
149 update_post_meta( $requirement_id, '_gamipress_meta_box_field_value_condition', $requirement['mb_field_value_condition'] );
150 update_post_meta( $requirement_id, '_gamipress_meta_box_field_value', $requirement['mb_field_value'] );
151
152
153 }
154
155 // Specific Field Specific Value
156 if( isset( $requirement['trigger_type'] )
157 && ( $requirement['trigger_type'] === 'gamipress_meta_box_update_specific_post_field_specific_value' ) ) {
158
159 update_post_meta( $requirement_id, '_gamipress_meta_box_field_value_condition', $requirement['mb_field_value_condition'] );
160 update_post_meta( $requirement_id, '_gamipress_meta_box_field_value', $requirement['mb_field_value'] );
161 update_post_meta( $requirement_id, '_gamipress_meta_box_field_name', $requirement['mb_field_name'] );
162 }
163
164 // Specific Field Specific Value
165 if( isset( $requirement['trigger_type'] )
166 && ( $requirement['trigger_type'] === 'gamipress_meta_box_update_specific_user_field_specific_value' ) ) {
167
168 update_post_meta( $requirement_id, '_gamipress_meta_box_field_value_condition', $requirement['mb_field_value_condition'] );
169 update_post_meta( $requirement_id, '_gamipress_meta_box_field_value', $requirement['mb_field_value'] );
170 update_post_meta( $requirement_id, '_gamipress_meta_box_field_name_user', $requirement['mb_field_name_user'] );
171 }
172 }
173 add_action( 'gamipress_ajax_update_requirement', 'gamipress_meta_box_ajax_update_requirement', 10, 2 );
174
175 /**
176 * Get meta box fields objects related to posts and custom types
177 *
178 * @since 1.0.0
179 *
180 * @return array
181 */
182 function gamipress_meta_box_get_all_post_fields() {
183
184 if ( ! function_exists( 'rwmb_get_object_fields' ) ) {
185 return array();
186 }
187
188 $post_fields = rwmb_get_object_fields( 'post' );
189
190 // Get custom types created on Meta Box
191 $custom_post_types = get_posts( [
192 'post_type' => 'mb-post-type',
193 'post_status' => 'publish',
194 'numberposts' => -1
195 ] );
196
197 if ( !empty ( $custom_post_types ) ) {
198 foreach ( $custom_post_types as $custom_type ) {
199 $custom_fields = rwmb_get_object_fields( $custom_type->post_name );
200 $post_fields = array_merge($post_fields, $custom_fields);
201 }
202 }
203
204 return $post_fields;
205
206 }