public function shortcode($atts, $content = null) { $atts = shortcode_atts(array('id' => false), $atts); $achievement = $atts['id']; $user_id = get_current_user_id(); $user_has_achievement = $user_id && badgeos_has_user_earned_achievement(intval($achievement), $user_id); $return = ''; if (!$achievement) { $return = '<div class="error">' . __('You have to specify a valid achievement id in the "id" parameter!', 'achievement-shortcode-for-badgeos') . '</div>'; } elseif ($user_has_achievement) { $return = do_shortcode($content); } return $return; }
/** * Returns a message if user has earned the achievement. * * @since 1.1.0 * * @param integer $achievement_id Achievement ID. * @param integer $user_id User ID. * @return string HTML Markup. */ function badgeos_render_earned_achievement_text($achievement_id = 0, $user_id = 0) { $earned_message = ''; if (badgeos_has_user_earned_achievement($achievement_id, $user_id)) { $earned_message .= '<div class="badgeos-achievement-earned"><p>' . __('You have earned this achievement!', 'badgeos') . '</p></div>'; if ($congrats_text = get_post_meta($achievement_id, '_badgeos_congratulations_text', true)) { $earned_message .= '<div class="badgeos-achievement-congratulations">' . wpautop($congrats_text) . '</div>'; } } return apply_filters('badgeos_earned_achievement_message', $earned_message, $achievement_id, $user_id); }
/** * Get an array of all users who have earned a given achievement * * @since 1.1.0 * @param integer $achievement_id The given achievement's post ID * @return array Array of user objects */ function badgeos_get_achievement_earners($achievement_id = 0) { // Grab our earners $earners = new WP_User_Query(array('meta_key' => '_badgeos_achievements', 'meta_value' => $achievement_id, 'meta_compare' => 'LIKE')); $earned_users = array(); foreach ($earners->results as $earner) { if (badgeos_has_user_earned_achievement($achievement_id, $earner->ID)) { $earned_users[] = $earner; } } // Send back our query results return $earned_users; }