11<?php
22if ( ! defined ( 'myCRED_VERSION ' ) ) exit ;
33
4- if (! function_exists ('mycred_render_my_badges ' ) ) :
4+ /**
5+ * Shortcode: mycred_my_badges
6+ * Allows you to show the current users earned badges.
7+ * @since 1.5
8+ * @version 1.2.1
9+ */
10+ if ( ! function_exists ( 'mycred_render_my_badges ' ) ) :
511 function mycred_render_my_badges ( $ atts , $ content = '' ) {
612
7- extract (
8- shortcode_atts (
9- array (
10- 'show ' => 'earned ' ,
11- 'width ' => MYCRED_BADGE_WIDTH ,
12- 'height ' => MYCRED_BADGE_HEIGHT ,
13- 'user_id ' => 'current ' ,
14- 'title ' => '' ,
15- 'post_excerpt ' => ''
16- ), $ atts , MYCRED_SLUG . '_my_badges '
17- )
18- );
19-
20- if ( ! is_user_logged_in () && $ user_id == 'current ' ) {
13+ extract ( shortcode_atts ( array (
14+ 'show ' => 'earned ' ,
15+ 'width ' => MYCRED_BADGE_WIDTH ,
16+ 'height ' => MYCRED_BADGE_HEIGHT ,
17+ 'user_id ' => 'current ' ,
18+ 'title ' => 0 ,
19+ 'excerpt ' => 0 ,
20+ 'display ' => 'vertical '
21+ ), $ atts , MYCRED_SLUG . '_my_badges ' ) );
22+
23+ if ( ! is_user_logged_in () && $ user_id == 'current ' )
2124 return $ content ;
22- }
23-
24- $ all_badges = mycred_get_badge_ids ();
25- $ profile_user_id = mycred_get_user_id ( $ user_id );
26- $ users_badges = mycred_get_users_badges ( $ profile_user_id , true );
27- $ user_id = mycred_get_user_id ( $ user_id );
28-
29- ob_start ();
30-
31- echo '<div class="row" id="mycred-users-badges"><div class="col-xs-12"> ' ;
32-
33- // Show only badges that we have earned
34- if ( $ show == 'earned ' ) {
35-
36- foreach ( $ all_badges as $ badge_id ) {
37-
38- echo '<div class="the-badge"> ' ;
39-
40- $ page_id = get_page ($ badge_id );
41- $ badge_id = absint ( $ badge_id );
42- $ has_earned = mycred_get_badge ( $ badge_id );
43- $ badge = mycred_get_badge ( $ badge_id );
44- $ users_badges = mycred_get_users_badges ($ profile_user_id );
45- $ mycred = mycred ();
46-
47- if ( array_key_exists ( $ badge_id , $ users_badges ) ) {
48-
49- $ earned = 1 ;
50- $ earned_level = $ users_badges [ $ badge_id ];
51- $ badge_image = $ badge ->get_image ( $ earned_level );
52-
53- }
5425
55- if ( $ has_earned ) {
26+ $ user_id = mycred_get_user_id ( $ user_id );
27+ $ all_badges = mycred_get_badge_ids ();
28+ $ users_badges = mycred_get_users_badges ( $ user_id );
29+ $ css_classes = in_array ( $ display , array ( 'vertical ' , 'horizontal ' ) ) ? $ display : 'vertical ' ;
5630
57- $ badge_title = $ has_earned ->title ;
58- $ badge_img = $ has_earned ->main_image ;
59- $ level_image = $ has_earned ->level_image ;
60- $ show_img = $ has_earned ->user_has_badge ( $ profile_user_id );
31+ wp_enqueue_style ( 'mycred-badge-front-style ' );
6132
62- if ( $ show_img ) {
63-
64- $ earned_badge_image = ! empty ( $ has_earned ->level_image ) ? $ has_earned ->level_image : $ has_earned ->main_image ;
65-
66- echo '<div class="demo-badge-image"> ' . wp_kses_post ( $ earned_badge_image ) . '</div> ' ;
67-
68- if ( $ title == 'show ' ) {
69-
70- echo '<div class="demo-badge-title"> ' . esc_html ( $ badge_title ) . ' ' .'</div> ' ;
33+ ob_start ();
7134
72- }
73- else {
35+ echo '<div class="mycred-users-badges"> ' ;
7436
75- echo ' <div class="demo-badge-title" style="display:none;"> ' . esc_html ( $ badge_title ) . ' ' . ' </div> ' ;
37+ foreach ( $ all_badges as $ badge_id ) {
7638
77- }
39+ $ user_has_earned = array_key_exists ( $ badge_id , $ users_badges );
7840
79- if ( $ post_excerpt == 'show ' ) {
41+ if ( $ show == 'earned ' && ! $ user_has_earned ) continue ;
8042
81- echo ' <div class="page-excerpt"> ' . wp_kses_post ( $ page_id -> post_excerpt ) . ' ' . ' </div> ' ;
43+ $ css_classes = $ user_has_earned ? $ display . ' earned ' : $ display ;
8244
83- }
84- else {
85-
86- echo '<div class="page-excerpt" style="display:none;"> ' . wp_kses_post ( $ page_id ->post_excerpt ) . ' ' .'</div> ' ;
87-
88- }
45+ echo '<div class="the-badge ' . esc_attr ( $ css_classes ) .'"> ' ;
8946
90- }
47+ $ level = $ user_has_earned ? $ users_badges [ $ badge_id ] : NULL ;
48+ $ badge = mycred_get_badge ( $ badge_id , $ level );
49+ $ badge ->image_width = $ width ;
50+ $ badge ->image_height = $ height ;
9151
92- }
52+ if ( $ user_has_earned ) {
9353
94- }
95-
96- }
97- // Show all badges highlighting the ones we earned
98- elseif ( $ show == 'all ' ) {
99-
100- $ users_badges = mycred_get_users_badges ( $ user_id );
101- $ all_badges = mycred_get_badge_ids ();
102-
103- foreach ( $ all_badges as $ badge_id ) {
104-
105- echo '<div class="the-badge"> ' ;
106-
107- // User has not earned badge
108- if ( ! array_key_exists ( $ badge_id , $ users_badges ) ) {
109-
110- $ badge = mycred_get_badge ( $ badge_id );
111- $ page_id = get_page ( $ badge_id );
112- $ badge ->image_width = $ width ;
113- $ badge ->image_height = $ height ;
114- $ badge_title = $ badge ->title ;
115- $ badge_img = $ badge ->main_image ;
54+ if ( $ badge ->level_image !== false )
55+ echo wp_kses_post ( $ badge ->get_image ( $ level ) );
11656
117- if ( $ badge ->main_image !== false ) {
118-
119- echo '<div class="demo-badge-image"> ' . wp_kses_post ( $ badge_img ) . '</div> ' ;
120-
121- if ( $ title == 'show ' ) {
122-
123- echo '<div class="demo-badge-title"> ' . esc_html ( $ badge_title ) . ' ' .'</div> ' ;
124-
125- } else {
126-
127- echo '<div class="demo-badge-title" style="display:none;"> ' . esc_html ( $ badge_title ) . ' ' .'</div> ' ;
128-
129- }
130-
131- if ( $ post_excerpt == 'show ' ) {
132-
133- echo '<div class="page-excerpt"> ' . wp_kses_post ( $ page_id ->post_excerpt ) . ' ' .'</div> ' ;
134-
135- }
136- else {
137-
138- echo '<div class="page-excerpt" style="display:none;"> ' . wp_kses_post ( $ page_id ->post_excerpt ) . ' ' .'</div> ' ;
139-
140- }
141-
142- }
143-
144- }
145- // User has earned badge
146- else {
57+ }
58+ else {
14759
148- $ level = $ users_badges [ $ badge_id ];
149- $ badge = mycred_get_badge ( $ badge_id , $ level );
150- $ badge ->image_width = $ width ;
151- $ badge ->image_height = $ height ;
152- $ badge_page_id = get_page ( $ badge_id );
60+ if ( $ badge ->main_image !== false )
61+ echo wp_kses_post ( $ badge ->get_image ( 'main ' ) );
15362
154- if ( $ badge -> level_image !== false ) {
63+ }
15564
156-
157- echo '<div class="demo-badge-image"> ' . wp_kses_post ( $ badge ->get_image ( $ level ) ) . '</div> ' ;
65+ if ( $ title == 1 || $ excerpt == 1 ) {
15866
159- if ( $ title == 'show ' ) {
160-
161- echo '<div class="demo-badge-title"> ' . esc_html ( $ badge ->title ) . ' ' .'</div> ' ;
67+ echo '<div class="mycred-badge-content"> ' ;
16268
163- }
164- else {
165-
166- echo '<div class="demo-badge-title" style="display:none;"> ' . esc_html ( $ badge ->title ) . ' ' .'</div> ' ;
69+ if ( $ title == 1 && ! empty ( $ badge ->title ) )
70+ echo '<h4 class="title"> ' . esc_html ( $ badge ->title ) . '</h4> ' ;
16771
168- }
72+ if ( $ excerpt == 1 ) {
16973
170- if ( $ post_excerpt == 'show ' ) {
171-
172- echo '<div class="page-excerpt"> ' . wp_kses_post ( $ badge_page_id ->post_excerpt ) . ' ' .'</div> ' ;
74+ $ badge_excerpt = get_the_excerpt ( $ badge_id );
17375
174- }
175- else {
176-
177- echo '<div class="page-excerpt" style="display:none;"> ' . wp_kses_post ( $ badge_page_id ->post_excerpt ) . ' ' .'</div> ' ;;
178-
179- }
180-
181- }
76+ if ( ! empty ( $ badge_excerpt ) )
77+ echo '<p class="excerpt"> ' . esc_html ( $ badge_excerpt ) . '</p> ' ;
18278
183- }
79+ }
18480
18581 echo '</div> ' ;
18682
187- if ( $ title == 'show ' || $ post_excerpt == 'show ' ) {
188-
189- echo '<hr class="badge-line"> ' ;
190-
191- }
192- else {
193-
194- echo '' ;
195-
196- }
197-
19883 }
19984
85+ echo '</div> ' ;
86+
20087 }
201- echo '</div></div> ' ;
88+
89+ echo '</div> ' ;
20290
20391 $ output = ob_get_contents ();
20492 ob_end_clean ();
20593
206- return apply_filters ('mycred_my_badges ' , $ output , $ user_id );
94+ return apply_filters ( 'mycred_my_badges ' , $ output , $ user_id );
20795
208- }
96+ }
20997endif ;
21098
21199/**
@@ -409,10 +297,4 @@ function mycred_render_badge_evidence( $atts = '' ) {
409297
410298 return $ content ;
411299 }
412- endif ;
413-
414- add_action ( 'wp_enqueue_scripts ' , 'enqueue_badge_front_shortcode_scripts ' );
415-
416- function enqueue_badge_front_shortcode_scripts () {
417- wp_enqueue_style ( 'mycred-badge-front-style ' , plugins_url ( 'assets/css/front.css ' , myCRED_BADGE ), array (), myCRED_BADGE_VERSION , 'all ' );
418- }
300+ endif ;
0 commit comments