PluginProbe
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI / 8.0.3
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI v8.0.3
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 / h5p / includes / requirements.php

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

230 lines 12.7 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\H5P\Requirements
6 * @since 1.0.0
7 */
8
9 // Exit if accessed directly
10 if( !defined( 'ABSPATH' ) ) exit;
11
12 /**
13 * Add the content type 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_h5p_requirement_object( $requirement, $requirement_id ) {
23
24 if( isset( $requirement['trigger_type'] )
25 && ( $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type'
26 || $requirement['trigger_type'] === 'gamipress_h5p_max_complete_specific_content_type'
27 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type_min_score'
28 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type_max_score'
29 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type_between_score'
30 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type_min_percentage'
31 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type_max_percentage'
32 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type_between_percentage' ) ) {
33
34 // Specific content type
35 $requirement['h5p_content_type'] = get_post_meta( $requirement_id, '_gamipress_h5p_content_type', true );
36 }
37
38 if( isset( $requirement['trigger_type'] )
39 && ( $requirement['trigger_type'] === 'gamipress_h5p_complete_content_min_score'
40 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_min_score'
41 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type_min_score'
42 || $requirement['trigger_type'] === 'gamipress_h5p_complete_content_min_score_tag'
43 || $requirement['trigger_type'] === 'gamipress_h5p_complete_content_max_score'
44 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_max_score'
45 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type_max_score'
46 || $requirement['trigger_type'] === 'gamipress_h5p_complete_content_max_score_tag' ) ) {
47
48 // Min/max score
49 $requirement['h5p_score'] = get_post_meta( $requirement_id, '_gamipress_h5p_score', true );
50 }
51
52 if( isset( $requirement['trigger_type'] )
53 && ( $requirement['trigger_type'] === 'gamipress_h5p_complete_content_between_score'
54 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_between_score'
55 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type_between_score'
56 || $requirement['trigger_type'] === 'gamipress_h5p_complete_content_between_score_tag' ) ) {
57
58 // Between score
59 $requirement['h5p_min_score'] = get_post_meta( $requirement_id, '_gamipress_h5p_min_score', true );
60 $requirement['h5p_max_score'] = get_post_meta( $requirement_id, '_gamipress_h5p_max_score', true );
61
62 }
63
64 if( isset( $requirement['trigger_type'] )
65 && ( $requirement['trigger_type'] === 'gamipress_h5p_complete_content_min_percentage'
66 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_min_percentage'
67 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type_min_percentage'
68 || $requirement['trigger_type'] === 'gamipress_h5p_complete_content_min_percentage_tag'
69 || $requirement['trigger_type'] === 'gamipress_h5p_complete_content_max_percentage'
70 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_max_percentage'
71 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type_max_percentage'
72 || $requirement['trigger_type'] === 'gamipress_h5p_complete_content_max_percentage_tag' ) ) {
73
74 // Percentage score
75 $requirement['h5p_percentage'] = get_post_meta( $requirement_id, '_gamipress_h5p_percentage', true );
76 }
77
78 if( isset( $requirement['trigger_type'] )
79 && ( $requirement['trigger_type'] === 'gamipress_h5p_complete_content_between_percentage'
80 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_between_percentage'
81 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type_between_percentage'
82 || $requirement['trigger_type'] === 'gamipress_h5p_complete_content_between_percentage_tag' ) ) {
83
84 // Percentage score
85 $requirement['h5p_min_percentage'] = get_post_meta( $requirement_id, '_gamipress_h5p_min_percentage', true );
86 $requirement['h5p_max_percentage'] = get_post_meta( $requirement_id, '_gamipress_h5p_max_percentage', true );
87 }
88
89 return $requirement;
90 }
91 add_filter( 'gamipress_requirement_object', 'gamipress_h5p_requirement_object', 10, 2 );
92
93 /**
94 * Content type field on requirements UI
95 *
96 * @since 1.0.0
97 *
98 * @param $requirement_id
99 * @param $post_id
100 */
101 function gamipress_h5p_requirement_ui_fields( $requirement_id, $post_id ) {
102
103 global $wpdb;
104
105 // Get active libraries
106 $content_types = $wpdb->get_results( $wpdb->prepare(
107 "SELECT l.name, l.title
108 FROM {$wpdb->prefix}h5p_libraries AS l
109 WHERE l.runnable = 1"
110 ) );
111
112 $requirement_content_type = get_post_meta( $requirement_id, '_gamipress_h5p_content_type', true ); ?>
113
114 <span class="h5p-content-type">
115 <select>
116 <?php foreach( $content_types as $content_type ) : ?>
117 <option value="<?php echo $content_type->name; ?>" <?php selected( $requirement_content_type, $content_type->name ); ?>><?php echo $content_type->title; ?></option>
118 <?php endforeach; ?>
119 </select>
120 </span>
121
122 <?php
123
124 $score = absint( get_post_meta( $requirement_id, '_gamipress_h5p_score', true ) );
125 $min_score = get_post_meta( $requirement_id, '_gamipress_h5p_min_score', true );
126 $max_score = get_post_meta( $requirement_id, '_gamipress_h5p_max_score', true );
127 $percentage = get_post_meta( $requirement_id, '_gamipress_h5p_percentage', true );
128 $min_percentage = get_post_meta( $requirement_id, '_gamipress_h5p_min_percentage', true );
129 $max_percentage = get_post_meta( $requirement_id, '_gamipress_h5p_max_percentage', true );
130
131 ?>
132
133 <span class="h5p-score"><input type="text" value="<?php echo $score; ?>" size="3" maxlength="3" placeholder="100" /></span>
134 <span class="h5p-min-score"><input type="text" value="<?php echo ( ! empty( $min_score ) ? absint( $min_score ) : '' ); ?>" size="3" maxlength="3" placeholder="Min" /> -</span>
135 <span class="h5p-max-score"><input type="text" value="<?php echo ( ! empty( $max_score ) ? absint( $max_score ) : '' ); ?>" size="3" maxlength="3" placeholder="Max" /></span>
136 <span class="h5p-percentage"><input type="text" value="<?php echo ( ! empty( $percentage ) ? absint( $percentage ) : '' ); ?>" size="3" maxlength="3" placeholder="" />%</span>
137 <span class="h5p-min-percentage"><input type="text" value="<?php echo ( ! empty( $min_percentage ) ? absint( $min_percentage ) : '' ); ?>" size="3" maxlength="3" placeholder="Min" />% -</span>
138 <span class="h5p-max-percentage"><input type="text" value="<?php echo ( ! empty( $max_percentage ) ? absint( $max_percentage ) : '' ); ?>" size="3" maxlength="3" placeholder="Max" />%</span>
139
140
141 <?php
142 }
143 add_action( 'gamipress_requirement_ui_html_after_achievement_post', 'gamipress_h5p_requirement_ui_fields', 10, 2 );
144
145 /**
146 * Custom handler to save the content type on requirements UI
147 *
148 * @since 1.0.0
149 *
150 * @param $requirement_id
151 * @param $requirement
152 */
153 function gamipress_h5p_ajax_update_requirement( $requirement_id, $requirement ) {
154
155 $requirement = wp_parse_args( $requirement, array(
156 'h5p_content_type' => '',
157 'h5p_score' => '',
158 'h5p_min_score' => '',
159 'h5p_max_score' => '',
160 'h5p_percentage' => '',
161 'h5p_min_percentage' => '',
162 'h5p_max_percentage' => '',
163 ) );
164
165 if( isset( $requirement['trigger_type'] )
166 && ( $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type'
167 || $requirement['trigger_type'] === 'gamipress_h5p_max_complete_specific_content_type'
168 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type_min_score'
169 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type_max_score'
170 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type_between_score'
171 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type_min_percentage'
172 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type_max_percentage'
173 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type_between_percentage' ) ) {
174
175 // Save the content type field
176 update_post_meta( $requirement_id, '_gamipress_h5p_content_type', $requirement['h5p_content_type'] );
177 }
178
179 if( isset( $requirement['trigger_type'] )
180 && ( $requirement['trigger_type'] === 'gamipress_h5p_complete_content_min_score'
181 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_min_score'
182 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type_min_score'
183 || $requirement['trigger_type'] === 'gamipress_h5p_complete_content_min_score_tag'
184 || $requirement['trigger_type'] === 'gamipress_h5p_complete_content_max_score'
185 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_max_score'
186 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type_max_score'
187 || $requirement['trigger_type'] === 'gamipress_h5p_complete_content_max_score_tag' ) ) {
188
189 // Min/max score
190 update_post_meta( $requirement_id, '_gamipress_h5p_score', $requirement['h5p_score'] );
191 }
192
193 if( isset( $requirement['trigger_type'] )
194 && ( $requirement['trigger_type'] === 'gamipress_h5p_complete_content_between_score'
195 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_between_score'
196 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type_between_score'
197 || $requirement['trigger_type'] === 'gamipress_h5p_complete_content_between_score_tag' ) ) {
198
199 // Between score
200 update_post_meta( $requirement_id, '_gamipress_h5p_min_score', $requirement['h5p_min_score'] );
201 update_post_meta( $requirement_id, '_gamipress_h5p_max_score', $requirement['h5p_max_score'] );
202
203 }
204
205 if( isset( $requirement['trigger_type'] )
206 && ( $requirement['trigger_type'] === 'gamipress_h5p_complete_content_min_percentage'
207 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_min_percentage'
208 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type_min_percentage'
209 || $requirement['trigger_type'] === 'gamipress_h5p_complete_content_min_percentage_tag'
210 || $requirement['trigger_type'] === 'gamipress_h5p_complete_content_max_percentage'
211 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_max_percentage'
212 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type_max_percentage'
213 || $requirement['trigger_type'] === 'gamipress_h5p_complete_content_max_percentage_tag' ) ) {
214
215 // Percentage score
216 update_post_meta( $requirement_id, '_gamipress_h5p_percentage', $requirement['h5p_percentage'] );
217 }
218
219 if( isset( $requirement['trigger_type'] )
220 && ( $requirement['trigger_type'] === 'gamipress_h5p_complete_content_between_percentage'
221 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_between_percentage'
222 || $requirement['trigger_type'] === 'gamipress_h5p_complete_specific_content_type_between_percentage'
223 || $requirement['trigger_type'] === 'gamipress_h5p_complete_content_between_percentage_tag' ) ) {
224
225 // Percentage score
226 update_post_meta( $requirement_id, '_gamipress_h5p_min_percentage', $requirement['h5p_min_percentage'] );
227 update_post_meta( $requirement_id, '_gamipress_h5p_max_percentage', $requirement['h5p_max_percentage'] );
228 }
229 }
230 add_action( 'gamipress_ajax_update_requirement', 'gamipress_h5p_ajax_update_requirement', 10, 2 );