PluginProbe
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI / 8.0.6
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI v8.0.6
8.0.6 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 All 48 releases
← All changes | integrations/peepso/includes/peepso-profile.php +730 -0 7.9.3 → 8.0.6 View file →
@@ -1,0 +1,730 @@
1 +<?php
2 +/**
3 + * User Profile
4 + *
5 + * @package GamiPress\PeepSo\User_Profile
6 + * @since 1.0.0
7 + */
8 +// Exit if accessed directly
9 +if( !defined( 'ABSPATH' ) ) exit;
10 +
11 +function gamipress_peepso_load_profile_actions() {
12 +
13 + // Bail if we are at admin area
14 + if( is_admin() ) return;
15 +
16 + $points_tab_title = gamipress_peepso_get_option( 'points_tab_title', __( 'Points', 'gamipress' ) );
17 + $points_tab_slug = gamipress_peepso_get_option( 'points_tab_slug', '' );
18 +
19 + // If empty slug generate it from the title
20 + if( empty( $points_tab_slug ) ) {
21 + $points_tab_slug = sanitize_title( $points_tab_title );
22 + }
23 +
24 + // Register the points segment action
25 + add_action( "peepso_profile_segment_{$points_tab_slug}", 'gamipress_peepso_profile_segment' );
26 +
27 + $achievements_tab_title = gamipress_peepso_get_option( 'achievements_tab_title', __( 'Achievements', 'gamipress' ) );
28 + $achievements_tab_slug = gamipress_peepso_get_option( 'achievements_tab_slug', '' );
29 +
30 + // If empty slug generate it from the title
31 + if( empty( $achievements_tab_slug ) ) {
32 + $achievements_tab_slug = sanitize_title( $achievements_tab_title );
33 + }
34 +
35 + // Register the achievements segment action
36 + add_action( "peepso_profile_segment_{$achievements_tab_slug}", 'gamipress_peepso_profile_segment' );
37 +
38 + $ranks_tab_title = gamipress_peepso_get_option( 'ranks_tab_title', __( 'Ranks', 'gamipress' ) );
39 + $ranks_tab_slug = gamipress_peepso_get_option( 'ranks_tab_slug', '' );
40 +
41 + // If empty slug generate it from the title
42 + if( empty( $ranks_tab_slug ) ) {
43 + $ranks_tab_slug = sanitize_title( $ranks_tab_title );
44 + }
45 +
46 + // Register the ranks segment action
47 + add_action( "peepso_profile_segment_{$ranks_tab_slug}", 'gamipress_peepso_profile_segment' );
48 +
49 +}
50 +add_filter( 'init', 'gamipress_peepso_load_profile_actions' );
51 +
52 +/**
53 + * Add new user navigation profile links
54 + *
55 + * @since 1.0.0
56 + *
57 + * @param array $links Array of current navigation links
58 + *
59 + * @return array
60 + */
61 +function gamipress_peepso_navigation_profile( $links ) {
62 +
63 + // Points tab
64 + $points_placement = gamipress_peepso_get_option( 'points_placement', '' );
65 +
66 + if( in_array( $points_placement, array( 'tab', 'both' ) ) ) {
67 +
68 + $points_tab_title = gamipress_peepso_get_option( 'points_tab_title', __( 'Points', 'gamipress' ) );
69 + $points_tab_slug = gamipress_peepso_get_option( 'points_tab_slug', '' );
70 +
71 + // If empty slug generate it from the title
72 + if( empty( $points_tab_slug ) ) {
73 + $points_tab_slug = sanitize_title( $points_tab_title );
74 + }
75 +
76 + $links['points'] = array(
77 + 'href' => $points_tab_slug,
78 + 'label'=> $points_tab_title,
79 + 'icon' => gamipress_peepso_get_option( 'points_tab_icon', 'ps-icon-star' )
80 + );
81 +
82 + }
83 +
84 + // Achievements tab
85 + $achievements_placement = gamipress_peepso_get_option( 'achievements_placement', '' );
86 +
87 + if( in_array( $achievements_placement, array( 'tab', 'both' ) ) ) {
88 +
89 + $achievements_tab_title = gamipress_peepso_get_option( 'achievements_tab_title', __( 'Achievements', 'gamipress' ) );
90 + $achievements_tab_slug = gamipress_peepso_get_option( 'achievements_tab_slug', '' );
91 +
92 + // If empty slug generate it from the title
93 + if( empty( $achievements_tab_slug ) ) {
94 + $achievements_tab_slug = sanitize_title( $achievements_tab_title );
95 + }
96 +
97 + $links['achievements'] = array(
98 + 'href' => $achievements_tab_slug,
99 + 'label'=> $achievements_tab_title,
100 + 'icon' => gamipress_peepso_get_option( 'achievements_tab_icon', 'ps-icon-certificate' )
101 + );
102 +
103 + }
104 +
105 + // Ranks tab
106 + $ranks_placement = gamipress_peepso_get_option( 'ranks_placement', '' );
107 +
108 + if( in_array( $ranks_placement, array( 'tab', 'both' ) ) ) {
109 +
110 + $ranks_tab_title = gamipress_peepso_get_option( 'ranks_tab_title', __( 'Ranks', 'gamipress' ) );
111 + $ranks_tab_slug = gamipress_peepso_get_option( 'ranks_tab_slug', '' );
112 +
113 + // If empty slug generate it from the title
114 + if( empty( $ranks_tab_slug ) ) {
115 + $ranks_tab_slug = sanitize_title( $ranks_tab_title );
116 + }
117 +
118 + $links['ranks'] = array(
119 + 'href' => $ranks_tab_slug,
120 + 'label'=> $ranks_tab_title,
121 + 'icon' => gamipress_peepso_get_option( 'ranks_tab_icon', 'ps-icon-award' )
122 + );
123 +
124 + }
125 +
126 + return $links;
127 +
128 +}
129 +add_filter( 'peepso_navigation_profile', 'gamipress_peepso_navigation_profile' );
130 +
131 +/**
132 + * Common render in user profile
133 + *
134 + * @since 1.0.0
135 + */
136 +function gamipress_peepso_profile_segment() {
137 +
138 + $current_filter = gamipress_peepso_profile_current_filter();
139 +
140 + $profile = PeepSoProfileShortcode::get_instance();
141 + $user_id = PeepSoUrlSegments::get_view_id( $profile->get_view_user_id() );
142 +
143 + ?>
144 +
145 + <div class="peepso ps-page-profile ps-page-gamipress">
146 +
147 + <?php PeepSoTemplate::exec_template('general','navbar'); ?>
148 +
149 + <?php PeepSoTemplate::exec_template('profile', 'focus', array('current'=>'badges')); ?>
150 +
151 + <section id="mainbody" class="ps-page-unstyled">
152 +
153 + <section id="component" role="article" class="ps-clearfix">
154 +
155 + <?php do_action( "gamipress_{$current_filter}_content", $user_id ); ?>
156 +
157 + </section><!--end component-->
158 +
159 + </section><!--end mainbody-->
160 +
161 + </div><!--end row-->
162 + <?php PeepSoTemplate::exec_template('activity', 'dialogs'); ?>
163 +
164 + <?php
165 +
166 +}
167 +
168 +/**
169 + * Return the user custom segment slug as a common segment slug
170 + *
171 + * @since 1.0.4
172 + *
173 + * @return string
174 + */
175 +function gamipress_peepso_profile_current_filter() {
176 +
177 + $current_filter = current_filter();
178 +
179 + // Check if is the points tab
180 + $points_tab_title = gamipress_peepso_get_option( 'points_tab_title', __( 'Points', 'gamipress' ) );
181 + $points_tab_slug = gamipress_peepso_get_option( 'points_tab_slug', '' );
182 +
183 + // If empty slug generate it from the title
184 + if( empty( $points_tab_slug ) ) {
185 + $points_tab_slug = sanitize_title( $points_tab_title );
186 + }
187 +
188 + if( $current_filter === "peepso_profile_segment_{$points_tab_slug}" ) {
189 + return 'peepso_profile_segment_points';
190 + }
191 +
192 + // Check if is the achievements tab
193 + $achievements_tab_title = gamipress_peepso_get_option( 'achievements_tab_title', __( 'Achievements', 'gamipress' ) );
194 + $achievements_tab_slug = gamipress_peepso_get_option( 'achievements_tab_slug', '' );
195 +
196 + // If empty slug generate it from the title
197 + if( empty( $achievements_tab_slug ) ) {
198 + $achievements_tab_slug = sanitize_title( $achievements_tab_title );
199 + }
200 +
201 + if( $current_filter === "peepso_profile_segment_{$achievements_tab_slug}" ) {
202 + return 'peepso_profile_segment_achievements';
203 + }
204 +
205 + // Check if is the ranks tab
206 + $ranks_tab_title = gamipress_peepso_get_option( 'ranks_tab_title', __( 'Ranks', 'gamipress' ) );
207 + $ranks_tab_slug = gamipress_peepso_get_option( 'ranks_tab_slug', '' );
208 +
209 + // If empty slug generate it from the title
210 + if( empty( $ranks_tab_slug ) ) {
211 + $ranks_tab_slug = sanitize_title( $ranks_tab_title );
212 + }
213 +
214 + if( $current_filter === "peepso_profile_segment_{$ranks_tab_slug}" ) {
215 + return 'peepso_profile_segment_ranks';
216 + }
217 +
218 + return $current_filter;
219 +
220 +}
221 +
222 +/**
223 + * Render points in user profile
224 + *
225 + * @since 1.0.0
226 + *
227 + * @param int $user_id Displayed user ID
228 + */
229 +function gamipress_peepso_profile_points_content( $user_id ) {
230 +
231 + $points_types_to_show = gamipress_peepso_profile_get_points_types();
232 +
233 + if ( empty( $points_types_to_show ) ) {
234 + return;
235 + }
236 +
237 + echo gamipress_points_shortcode( array(
238 + 'type' => implode( ',', $points_types_to_show ),
239 + 'current_user' => 'no',
240 + 'user_id' => $user_id,
241 + 'wpms' => (bool) gamipress_get_option( 'ms_show_all_achievements', false ) ? 'yes' : 'no',
242 + ) );
243 +
244 +}
245 +add_action( 'gamipress_peepso_profile_segment_points_content', 'gamipress_peepso_profile_points_content' );
246 +
247 +/**
248 + * Render achievements in user profile
249 + *
250 + * @since 1.0.0
251 + *
252 + * @param int $user_id Displayed user ID
253 + */
254 +function gamipress_peepso_profile_achievements_content( $user_id ) {
255 +
256 + $achievements_types_to_show = gamipress_peepso_profile_get_achievements_types();
257 +
258 + if ( empty( $achievements_types_to_show ) ) {
259 + return;
260 + }
261 +
262 + $prefix = 'profile_achievements_';
263 +
264 + // Setup achievement atts
265 + $achievement_atts = array();
266 +
267 + // Loop achievement shortcode fields to pass to the shortcode call
268 + foreach( GamiPress()->shortcodes['gamipress_achievement']->fields as $field_id => $field_args ) {
269 +
270 + if( $field_id === 'id' ) {
271 + continue;
272 + }
273 +
274 + if( $field_args['type'] === 'checkbox' ) {
275 + $achievement_atts[$field_id] = ( (bool) gamipress_peepso_get_option( $prefix . $field_id, false ) ? 'yes' : 'no' );
276 + } else {
277 + $achievement_atts[$field_id] = gamipress_peepso_get_option( $prefix . $field_id, ( isset( $field_args['default'] ) ? $field_args['default'] : '' ) );
278 + }
279 +
280 + }
281 +
282 + echo gamipress_achievements_shortcode( array_merge( array(
283 + 'type' => implode( ',', $achievements_types_to_show ),
284 + 'columns' => gamipress_peepso_get_option( $prefix . 'columns', '1' ),
285 + 'filter' => 'no',
286 + 'filter_value' => 'completed',
287 + 'search' => 'no',
288 + 'current_user' => 'no',
289 + 'user_id' => $user_id,
290 + 'wpms' => (bool) gamipress_get_option( 'ms_show_all_achievements', false ) ? 'yes' : 'no',
291 + 'limit' => gamipress_peepso_get_option( $prefix . 'limit', '10' ),
292 + 'orderby' => gamipress_peepso_get_option( $prefix . 'orderby', 'menu_order' ),
293 + 'order' => gamipress_peepso_get_option( $prefix . 'order', 'ASC' ),
294 + 'include' => '',
295 + 'exclude' => '',
296 + ), $achievement_atts ) );
297 +
298 +}
299 +add_action( 'gamipress_peepso_profile_segment_achievements_content', 'gamipress_peepso_profile_achievements_content' );
300 +
301 +/**
302 + * Render ranks in user profile
303 + *
304 + * @since 1.0.0
305 + *
306 + * @param int $user_id Displayed user ID
307 + */
308 +function gamipress_peepso_profile_ranks_content( $user_id ) {
309 +
310 + $ranks_types_to_show = gamipress_peepso_profile_get_ranks_types();
311 +
312 + if ( empty( $ranks_types_to_show ) ) {
313 + return;
314 + }
315 +
316 + $prefix = 'profile_ranks_';
317 +
318 + // Setup rank atts
319 + $rank_atts = array();
320 +
321 + // Loop rank shortcode fields to pass to the shortcode call
322 + foreach( GamiPress()->shortcodes['gamipress_rank']->fields as $field_id => $field_args ) {
323 +
324 + if( $field_id === 'id' ) {
325 + continue;
326 + }
327 +
328 + if( $field_args['type'] === 'checkbox' ) {
329 + $rank_atts[$field_id] = ( (bool) gamipress_peepso_get_option( $prefix . $field_id, false ) ? 'yes' : 'no' );
330 + } else {
331 + $rank_atts[$field_id] = gamipress_peepso_get_option( $prefix . $field_id, ( isset( $field_args['default'] ) ? $field_args['default'] : '' ) );
332 + }
333 +
334 + }
335 +
336 + echo gamipress_ranks_shortcode( array_merge( array(
337 + 'type' => implode( ',', $ranks_types_to_show ),
338 + 'columns' => gamipress_peepso_get_option( $prefix . 'columns', '1' ),
339 + 'current_user' => 'no',
340 + 'user_id' => $user_id,
341 + 'wpms' => (bool) gamipress_get_option( 'ms_show_all_achievements', false ) ? 'yes' : 'no',
342 + 'orderby' => gamipress_peepso_get_option( $prefix . 'orderby', 'priority' ),
343 + 'order' => gamipress_peepso_get_option( $prefix . 'order', 'DESC' ),
344 + 'include' => '',
345 + 'exclude' => '',
346 + ), $rank_atts ) );
347 +
348 +}
349 +add_action( 'gamipress_peepso_profile_segment_ranks_content', 'gamipress_peepso_profile_ranks_content' );
350 +
351 +/**
352 + * Display user information at top
353 + *
354 + * @since 1.0.0
355 + *
356 + * @param int $user_id Displayed user ID
357 + */
358 +function gamipress_peepso_after_render_user_name( $user_id ) {
359 +
360 + /* -------------------------------
361 + * Points
362 + ------------------------------- */
363 +
364 + $points_placement = gamipress_peepso_get_option( 'points_placement', '' );
365 +
366 + if( $points_placement === 'top' || $points_placement === 'both' ) {
367 +
368 + // Setup points types vars
369 + $points_types = gamipress_get_points_types();
370 + $points_types_slugs = gamipress_get_points_types_slugs();
371 +
372 + // Get points display settings
373 + $points_types_to_show = gamipress_peepso_profile_get_points_types();
374 + $points_types_thumbnail = (bool) gamipress_peepso_get_option( 'profile_points_types_top_thumbnail', false );
375 + $points_types_thumbnail_size = (int) gamipress_peepso_get_option( 'profile_points_types_top_thumbnail_size', 25 );
376 + $points_types_label = (bool) gamipress_peepso_get_option( 'profile_points_types_top_label', false );
377 +
378 + // Parse thumbnail size
379 + if( $points_types_thumbnail_size > 0 ) {
380 + $points_types_thumbnail_size = array( $points_types_thumbnail_size, $points_types_thumbnail_size );
381 + } else {
382 + $points_types_thumbnail_size = 'gamipress-points';
383 + }
384 +
385 + if( ! empty( $points_types_to_show ) ) : ?>
386 +
387 + <div class="gamipress-peepso-points">
388 +
389 + <?php foreach( $points_types_to_show as $points_type_to_show ) :
390 +
391 + // If points type not registered, skip
392 + if( ! in_array( $points_type_to_show, $points_types_slugs ) )
393 + continue;
394 +
395 + $points_type = $points_types[$points_type_to_show];
396 + $user_points = gamipress_get_user_points( $user_id, $points_type_to_show ); ?>
397 +
398 + <div class="gamipress-peepso-points-type gamipress-peepso-<?php echo $points_type_to_show; ?>">
399 +
400 + <?php // The points thumbnail ?>
401 + <?php if( $points_types_thumbnail ) : ?>
402 +
403 + <span class="gamipress-peepso-points-thumbnail gamipress-peepso-<?php echo $points_type_to_show; ?>-thumbnail">
404 + <?php echo gamipress_get_points_type_thumbnail( $points_type_to_show, $points_types_thumbnail_size ); ?>
405 + </span>
406 +
407 + <?php endif; ?>
408 +
409 + <?php // The user points amount ?>
410 + <span class="gamipress-peepso-user-points gamipress-peepso-user-<?php echo $points_type_to_show; ?>">
411 + <?php echo gamipress_format_points( $user_points, $points_type_to_show ); ?>
412 + </span>
413 +
414 + <?php // The points label ?>
415 + <?php if( $points_types_label ) : ?>
416 +
417 + <span class="gamipress-peepso-points-label gamipress-peepso-<?php echo $points_type_to_show; ?>-label">
418 + <?php echo _n( $points_type['singular_name'], $points_type['plural_name'], $user_points ); ?>
419 + </span>
420 +
421 + <?php endif; ?>
422 +
423 + </div>
424 +
425 + <?php endforeach; ?>
426 + </div>
427 + <?php endif;
428 +
429 + }
430 +
431 + /* -------------------------------
432 + * Achievements
433 + ------------------------------- */
434 +
435 + $achievements_placement = gamipress_peepso_get_option( 'achievements_placement', '' );
436 +
437 + if( $achievements_placement === 'top' || $achievements_placement === 'both' ) {
438 +
439 + // Setup achievement types vars
440 + $achievement_types = gamipress_get_achievement_types();
441 + $achievement_types_slugs = gamipress_get_achievement_types_slugs();
442 +
443 + // Get achievements display settings
444 + $achievement_types_to_show = gamipress_peepso_profile_get_achievements_types();
445 + $achievement_types_thumbnail = (bool) gamipress_peepso_get_option( 'profile_achievements_top_thumbnail', false );
446 + $achievement_types_thumbnail_size = (int) gamipress_peepso_get_option( 'profile_achievements_top_thumbnail_size', 25 );
447 + $achievement_types_title = (bool) gamipress_peepso_get_option( 'profile_achievements_top_title', false );
448 + $achievement_types_link = (bool) gamipress_peepso_get_option( 'profile_achievements_top_link', false );
449 + $achievement_types_label = (bool) gamipress_peepso_get_option( 'profile_achievements_top_label', false );
450 + $achievement_types_limit = (int) gamipress_peepso_get_option( 'profile_achievements_top_limit', 10 );
451 +
452 + // Parse thumbnail size
453 + if( $achievement_types_thumbnail_size > 0 ) {
454 + $achievement_types_thumbnail_size = array( $achievement_types_thumbnail_size, $achievement_types_thumbnail_size );
455 + } else {
456 + $achievement_types_thumbnail_size = 'gamipress-achievement';
457 + }
458 +
459 + if( ! empty( $achievement_types_to_show ) ) : ?>
460 +
461 + <div class="gamipress-peepso-achievements">
462 +
463 + <?php foreach( $achievement_types_to_show as $achievement_type_to_show ) :
464 +
465 + // If achievements type not registered, skip
466 + if( ! in_array( $achievement_type_to_show, $achievement_types_slugs ) )
467 + continue;
468 +
469 + $achievement_type = $achievement_types[$achievement_type_to_show];
470 + $user_achievements = gamipress_get_user_achievements( array(
471 + 'user_id' => $user_id,
472 + 'achievement_type' => $achievement_type_to_show,
473 + 'groupby' => 'achievement_id',
474 + 'limit' => $achievement_types_limit
475 + ) );
476 +
477 + // If user has not earned any achievements of this type, skip
478 + if( empty( $user_achievements ) ) {
479 + continue;
480 + } ?>
481 +
482 + <div class="gamipress-peepso-achievement gamipress-peepso-<?php echo $achievement_type_to_show; ?>">
483 +
484 + <?php // The achievement type label ?>
485 + <?php if( $achievement_types_label ) : ?>
486 + <span class="gamipress-peepso-achievement-type-label gamipress-peepso-<?php echo $achievement_type_to_show; ?>-label">
487 + <?php echo $achievement_type['plural_name']; ?>:
488 + </span>
489 + <?php endif; ?>
490 +
491 + <?php // Lets to get just the achievement thumbnail and title
492 + foreach( $user_achievements as $user_achievement ) : ?>
493 +
494 + <?php // The achievement thumbnail ?>
495 + <?php if( $achievement_types_thumbnail ) : ?>
496 +
497 + <?php // The achievement link ?>
498 + <?php if( $achievement_types_link ) : ?>
499 +
500 + <a href="<?php echo get_permalink( $user_achievement->ID ); ?>" title="<?php echo get_the_title( $user_achievement->ID ); ?>" class="gamipress-peepso-achievement-thumbnail gamipress-peepso-<?php echo $achievement_type_to_show; ?>-thumbnail">
501 + <?php echo gamipress_get_achievement_post_thumbnail( $user_achievement->ID, $achievement_types_thumbnail_size ); ?>
502 + </a>
503 +
504 + <?php else : ?>
505 +
506 + <span title="<?php echo get_the_title( $user_achievement->ID ); ?>" class="gamipress-peepso-achievement-thumbnail gamipress-peepso-<?php echo $achievement_type_to_show; ?>-thumbnail">
507 + <?php echo gamipress_get_achievement_post_thumbnail( $user_achievement->ID, $achievement_types_thumbnail_size ); ?>
508 + </span>
509 +
510 + <?php endif; ?>
511 +
512 + <?php endif; ?>
513 +
514 + <?php // The achievement title ?>
515 + <?php if( $achievement_types_title ) : ?>
516 +
517 + <?php // The achievement link ?>
518 + <?php if( $achievement_types_link ) : ?>
519 +
520 + <a href="<?php echo get_permalink( $user_achievement->ID ); ?>" title="<?php echo get_the_title( $user_achievement->ID ); ?>" class="gamipress-peepso-achievement-title gamipress-peepso-<?php echo $achievement_type_to_show; ?>-title">
521 + <?php echo get_the_title( $user_achievement->ID ); ?>
522 + </a>
523 +
524 + <?php else : ?>
525 +
526 + <span class="gamipress-peepso-achievement-title gamipress-peepso-<?php echo $achievement_type_to_show; ?>-title">
527 + <?php echo get_the_title( $user_achievement->ID ); ?>
528 + </span>
529 +
530 + <?php endif; ?>
531 +
532 + <?php endif; ?>
533 +
534 + <?php endforeach; ?>
535 +
536 + </div>
537 +
538 + <?php endforeach; ?>
539 +
540 + </div>
541 +
542 + <?php endif;
543 +
544 + }
545 +
546 + /* -------------------------------
547 + * Ranks
548 + ------------------------------- */
549 +
550 + $ranks_placement = gamipress_peepso_get_option( 'ranks_placement', '' );
551 +
552 + if( $ranks_placement === 'top' || $ranks_placement === 'both' ) {
553 +
554 + // Setup rank types vars
555 + $rank_types = gamipress_get_rank_types();
556 + $rank_types_slugs = gamipress_get_rank_types_slugs();
557 +
558 + // Get ranks display settings
559 + $rank_types_to_show = gamipress_peepso_profile_get_ranks_types();
560 + $rank_types_thumbnail = (bool) gamipress_peepso_get_option( 'profile_ranks_top_thumbnail', false );
561 + $rank_types_thumbnail_size = (int) gamipress_peepso_get_option( 'profile_ranks_top_thumbnail_size', 25 );
562 + $rank_types_title = (bool) gamipress_peepso_get_option( 'profile_ranks_top_title', false );
563 + $rank_types_link = (bool) gamipress_peepso_get_option( 'profile_ranks_top_link', false );
564 + $rank_types_label = (bool) gamipress_peepso_get_option( 'profile_ranks_top_label', false );
565 +
566 + // Parse thumbnail size
567 + if( $rank_types_thumbnail_size > 0 ) {
568 + $rank_types_thumbnail_size = array( $rank_types_thumbnail_size, $rank_types_thumbnail_size );
569 + } else {
570 + $rank_types_thumbnail_size = 'gamipress-rank';
571 + }
572 +
573 + if( ! empty( $rank_types_to_show ) ) : ?>
574 +
575 + <div class="gamipress-peepso-ranks">
576 +
577 + <?php foreach( $rank_types_to_show as $rank_type_to_show ) :
578 +
579 + // If rank type not registered, skip
580 + if( ! in_array( $rank_type_to_show, $rank_types_slugs ) )
581 + continue;
582 +
583 + $rank_type = $rank_types[$rank_type_to_show];
584 + $user_rank = gamipress_get_user_rank( $user_id, $rank_type_to_show ); ?>
585 +
586 + <div class="gamipress-peepso-rank gamipress-peepso-<?php echo $rank_type_to_show; ?>">
587 +
588 + <?php // The rank type label ?>
589 + <?php if( $rank_types_label ) : ?>
590 + <span class="gamipress-peepso-rank-label gamipress-peepso-<?php echo $rank_type_to_show; ?>-label">
591 + <?php echo $rank_type['singular_name']; ?>:
592 + </span>
593 + <?php endif; ?>
594 +
595 + <?php // The rank thumbnail ?>
596 + <?php if( $rank_types_thumbnail ) : ?>
597 +
598 + <?php // The rank link ?>
599 + <?php if( $rank_types_link ) : ?>
600 +
601 + <a href="<?php echo get_permalink( $user_rank->ID ); ?>" title="<?php echo $user_rank->post_title; ?>" class="gamipress-peepso-rank-thumbnail gamipress-peepso-<?php echo $rank_type_to_show; ?>-thumbnail">
602 + <?php echo gamipress_get_rank_post_thumbnail( $user_rank->ID, $rank_types_thumbnail_size ); ?>
603 + </a>
604 +
605 + <?php else : ?>
606 +
607 + <span title="<?php echo $user_rank->post_title; ?>" class="gamipress-peepso-rank-thumbnail gamipress-peepso-<?php echo $rank_type_to_show; ?>-thumbnail">
608 + <?php echo gamipress_get_rank_post_thumbnail( $user_rank->ID, $rank_types_thumbnail_size ); ?>
609 + </span>
610 +
611 + <?php endif; ?>
612 +
613 + <?php endif; ?>
614 +
615 + <?php // The rank title ?>
616 + <?php if( $rank_types_title ) : ?>
617 +
618 + <?php // The rank link ?>
619 + <?php if( $rank_types_link ) : ?>
620 +
621 + <a href="<?php echo get_permalink( $user_rank->ID ); ?>" title="<?php echo $user_rank->post_title; ?>" class="gamipress-peepso-rank-title gamipress-peepso-<?php echo $rank_type_to_show; ?>-title">
622 + <?php echo $user_rank->post_title; ?>
623 + </a>
624 +
625 + <?php else : ?>
626 +
627 + <span class="gamipress-peepso-rank-title gamipress-peepso-<?php echo $rank_type_to_show; ?>-title">
628 + <?php echo $user_rank->post_title; ?>
629 + </span>
630 +
631 + <?php endif; ?>
632 +
633 + <?php endif; ?>
634 +
635 + </div>
636 +
637 + <?php endforeach; ?>
638 + </div>
639 + <?php endif;
640 +
641 + }
642 +
643 +}
644 +add_action( 'peepso_profile_cover_full_after_name', 'gamipress_peepso_after_render_user_name' );
645 +
646 +/**
647 + * Helper function to retrieve the points types configured at profile screen
648 + *
649 + * @since 1.0.8
650 + *
651 + * @return array
652 + */
653 +function gamipress_peepso_profile_get_points_types() {
654 +
655 + $points_types = array();
656 +
657 + $points_types_slugs = gamipress_get_points_types_slugs();
658 +
659 + $points_types_to_show = gamipress_peepso_get_option( 'profile_points_types', array() );
660 +
661 + foreach( $points_types_to_show as $points_type_slug ) {
662 +
663 + if( ! in_array( $points_type_slug, $points_types_slugs ) ) {
664 + continue;
665 + }
666 +
667 + $points_types[] = $points_type_slug;
668 + }
669 +
670 + return $points_types;
671 +
672 +}
673 +
674 +/**
675 + * Helper function to retrieve the achievement types configured at profile screen
676 + *
677 + * @since 1.0.5
678 + *
679 + * @return array
680 + */
681 +function gamipress_peepso_profile_get_achievements_types() {
682 +
683 + $achievements_types = array();
684 +
685 + $achievement_types_slugs = gamipress_get_achievement_types_slugs();
686 +
687 + $achievements_types_to_show = gamipress_peepso_get_option( 'profile_achievements_types', array() );
688 +
689 + foreach( $achievements_types_to_show as $achievement_type_slug ) {
690 +
691 + // Skip if not registered
692 + if( ! in_array( $achievement_type_slug, $achievement_types_slugs ) ) {
693 + continue;
694 + }
695 +
696 + $achievements_types[] = $achievement_type_slug;
697 + }
698 +
699 + return $achievements_types;
700 +
701 +}
702 +
703 +/**
704 + * Helper function to retrieve the rank types configured at profile screen
705 + *
706 + * @since 1.1.1
707 + *
708 + * @return array
709 + */
710 +function gamipress_peepso_profile_get_ranks_types() {
711 +
712 + $ranks_types = array();
713 +
714 + $rank_types_slugs = gamipress_get_rank_types_slugs();
715 +
716 + $ranks_types_to_show = gamipress_peepso_get_option( 'profile_ranks_types', array() );
717 +
718 + foreach( $ranks_types_to_show as $rank_type_slug ) {
719 +
720 + // Skip if not registered
721 + if( ! in_array( $rank_type_slug, $rank_types_slugs ) ) {
722 + continue;
723 + }
724 +
725 + $ranks_types[] = $rank_type_slug;
726 + }
727 +
728 + return $ranks_types;
729 +
730 +}