function widget($args, $instance)
 {
     global $user_ID;
     extract($args);
     echo $before_widget;
     $title = apply_filters('widget_title', $instance['title']);
     if (!empty($title)) {
         echo $before_title . $title . $after_title;
     }
     //user must be logged in to view earned badges and points
     if (is_user_logged_in()) {
         //display user's points if widget option is enabled
         if ($instance['point_total'] == 'on') {
             echo '<p class="badgeos-total-points">' . sprintf(__('My Total Points: %s', 'badgeos'), '<strong>' . number_format(badgeos_get_users_points()) . '</strong>') . '</p>';
         }
         $achievements = badgeos_get_user_achievements();
         if (is_array($achievements) && !empty($achievements)) {
             $number_to_show = absint($instance['number']);
             $thecount = 0;
             wp_enqueue_script('badgeos-achievements');
             wp_enqueue_style('badgeos-widget');
             //load widget setting for achievement types to display
             $set_achievements = isset($instance['set_achievements']) ? $instance['set_achievements'] : '';
             //show most recently earned achievement first
             $achievements = array_reverse($achievements);
             echo '<ul class="widget-achievements-listing">';
             foreach ($achievements as $achievement) {
                 //verify achievement type is set to display in the widget settings
                 //if $set_achievements is not an array it means nothing is set so show all achievements
                 if (!is_array($set_achievements) || in_array($achievement->post_type, $set_achievements)) {
                     //exclude step CPT entries from displaying in the widget
                     if (get_post_type($achievement->ID) != 'step') {
                         $permalink = get_permalink($achievement->ID);
                         $title = get_the_title($achievement->ID);
                         $img = badgeos_get_achievement_post_thumbnail($achievement->ID, array(50, 50), 'wp-post-image');
                         $thumb = $img ? '<a style="margin-top: -25px;" class="badgeos-item-thumb" href="' . esc_url($permalink) . '">' . $img . '</a>' : '';
                         $class = 'widget-badgeos-item-title';
                         $item_class = $thumb ? ' has-thumb' : '';
                         // Setup credly data if giveable
                         $giveable = credly_is_achievement_giveable($achievement->ID, $user_ID);
                         $item_class .= $giveable ? ' share-credly addCredly' : '';
                         $credly_ID = $giveable ? 'data-credlyid="' . absint($achievement->ID) . '"' : '';
                         echo '<li id="widget-achievements-listing-item-' . absint($achievement->ID) . '" ' . $credly_ID . ' class="widget-achievements-listing-item' . esc_attr($item_class) . '">';
                         echo $thumb;
                         echo '<a class="widget-badgeos-item-title ' . esc_attr($class) . '" href="' . esc_url($permalink) . '">' . esc_html($title) . '</a>';
                         echo '</li>';
                         $thecount++;
                         if ($thecount == $number_to_show && $number_to_show != 0) {
                             break;
                         }
                     }
                 }
             }
             echo '</ul><!-- widget-achievements-listing -->';
         }
     } else {
         //user is not logged in so display a message
         _e('You must be logged in to view earned achievements', 'badgeos');
     }
     echo $after_widget;
 }
Пример #2
0
/**
 * Display achievements for a user on their profile screen
 *
 * @since  1.0.0
 * @param  object $user The current user's $user object
 * @return void
 */
function badgeos_user_profile_data($user = null)
{
    $achievement_ids = array();
    echo '<h2>' . __('BadgeOS Email Notifications', 'badgeos') . '</h2>';
    echo '<table class="form-table">';
    echo '<tr>';
    echo '<th scope="row">' . __('Email Preference', 'badgeos') . '</th>';
    echo '<td>';
    echo '<label for="_badgeos_can_notify_user"><input type="checkbox" name="_badgeos_can_notify_user" id="_badgeos_can_notify_user" value="1" ' . checked(badgeos_can_notify_user($user->ID), true, false) . '/>' . __('Enable BadgeOS Email Notifications', 'badgeos') . '</label>';
    echo '</td>';
    echo '</tr>';
    echo '</table>';
    //verify uesr meets minimum role to view earned badges
    if (current_user_can(badgeos_get_manager_capability())) {
        $achievements = badgeos_get_user_achievements(array('user_id' => absint($user->ID)));
        echo '<h2>' . __('Earned Achievements', 'badgeos') . '</h2>';
        echo '<table class="form-table">';
        echo '<tr>';
        echo '<th><label for="user_points">' . __('Earned Points', 'badgeos') . '</label></th>';
        echo '<td>';
        echo '<input type="text" name="user_points" id="user_points" value="' . badgeos_get_users_points($user->ID) . '" class="regular-text" /><br />';
        echo '<span class="description">' . __("The user's points total. Entering a new total will automatically log the change and difference between totals.", 'badgeos') . '</span>';
        echo '</td>';
        echo '</tr>';
        echo '<tr><td colspan="2">';
        // List all of a user's earned achievements
        if ($achievements) {
            echo '<table class="widefat badgeos-table">';
            echo '<thead><tr>';
            echo '<th>' . __('Image', 'badgeos') . '</th>';
            echo '<th>' . __('Name', 'badgeos') . '</th>';
            echo '<th>' . __('Action', 'badgeos') . '</th>';
            echo '</tr></thead>';
            foreach ($achievements as $achievement) {
                // Setup our revoke URL
                $revoke_url = add_query_arg(array('action' => 'revoke', 'user_id' => absint($user->ID), 'achievement_id' => absint($achievement->ID)));
                echo '<tr>';
                echo '<td>' . badgeos_get_achievement_post_thumbnail($achievement->ID, array(50, 50)) . '</td>';
                echo '<td>', edit_post_link(get_the_title($achievement->ID), '', '', $achievement->ID), ' </td>';
                echo '<td> <span class="delete"><a class="error" href="' . esc_url(wp_nonce_url($revoke_url, 'badgeos_revoke_achievement')) . '">' . __('Revoke Award', 'badgeos') . '</a></span></td>';
                echo '</tr>';
                $achievement_ids[] = $achievement->ID;
            }
            echo '</table>';
        }
        echo '</td></tr>';
        echo '</table>';
        // If debug mode is on, output our achievements array
        if (badgeos_is_debug_mode()) {
            echo __('DEBUG MODE ENABLED', 'badgeos') . '<br />';
            echo __('Metadata value for:', 'badgeos') . ' _badgeos_achievements<br />';
            var_dump($achievements);
        }
        echo '<br/>';
        // Output markup for awarding achievement for user
        badgeos_profile_award_achievement($user, $achievement_ids);
    }
}
 public function shortcode($atts)
 {
     $atts = shortcode_atts(array('type' => 'all', 'format' => 'simple', 'user_id' => 0, 'link_to' => false), $atts);
     if ($atts['type'] == 'all') {
         $atts['type'] = badgeos_get_achievement_types_slugs();
     }
     $points = absint(badgeos_get_users_points($atts['user_id']));
     $level = $this->get_level_info($points, $atts['type']);
     // no progress bar
     if (!$level['next_points']) {
         return '';
     }
     $progress = $points / $level['next_points'] * 100 . "%";
     $output = '';
     if ($atts['link_to']) {
         $output .= '<a href="' . $atts['link_to'] . '">';
     }
     $title = "";
     if ($level['current_achievement']) {
         $title = get_the_title($level['current_achievement']) . ": ";
     }
     $output .= $this->wppb_get_progress_bar(false, false, $progress, false, $progress, true, sprintf(__("%s%d/%d Points", 'badgeos-activity-progress'), $title, $points, $level['next_points']));
     if ($atts['link_to']) {
         $output .= '</a>';
     }
     if ($atts['format'] == 'extended') {
         $progress = $output;
         $output = __('Current activity level:', 'badgeos-activity-progress');
         if ($level['current_achievement']) {
             $output .= '<div class="badgeos-badge-wrap">';
             $output .= badgeos_get_achievement_post_thumbnail($level['current_achievement']);
             $output .= '<span class="badgeos-title-wrap"><a href="' . get_permalink($level['current_achievement']) . '">' . get_the_title($level['current_achievement']) . '</a></span>';
             $output .= '</div>';
         } else {
             $output .= ' ' . __('No activity level reached.', 'badgeos-activity-progress') . '<br>';
         }
         $output .= '<p>' . sprintf(__("Activity points needed for next level: %d", 'badgeos-activity-progress'), $level['next_points']) . '</p>';
         $output .= $progress;
     }
     wp_enqueue_style('activity-progress-shortcode');
     return $output;
 }
/**
 * Render an achievement
 *
 * @since  1.0.0
 * @param  integer $achievement The achievement's post ID
 * @return string               Concatenated markup
 */
function badgeos_render_achievement($achievement = 0)
{
    global $user_ID;
    // If we were given an ID, get the post
    if (is_numeric($achievement)) {
        $achievement = get_post($achievement);
    }
    // make sure our JS and CSS is enqueued
    wp_enqueue_script('badgeos-achievements');
    wp_enqueue_style('badgeos-widget');
    // check if user has earned this Achievement, and add an 'earned' class
    $earned_status = badgeos_get_user_achievements(array('user_id' => $user_ID, 'achievement_id' => absint($achievement->ID))) ? 'user-has-earned' : 'user-has-not-earned';
    // Setup our credly classes
    $credly_class = '';
    $credly_ID = '';
    // If the achievement is earned and givable, override our credly classes
    if ('user-has-earned' == $earned_status && ($giveable = credly_is_achievement_giveable($achievement->ID, $user_ID))) {
        $credly_class = ' share-credly addCredly';
        $credly_ID = 'data-credlyid="' . absint($achievement->ID) . '"';
    }
    // Each Achievement
    $output = '';
    $output .= '<div id="badgeos-achievements-list-item-' . $achievement->ID . '" class="badgeos-achievements-list-item ' . $earned_status . $credly_class . '"' . $credly_ID . '>';
    // Achievement Image
    $output .= '<div class="badgeos-item-image">';
    $output .= '<a href="' . get_permalink($achievement->ID) . '">' . badgeos_get_achievement_post_thumbnail($achievement->ID) . '</a>';
    $output .= '</div><!-- .badgeos-item-image -->';
    // Achievement Content
    $output .= '<div class="badgeos-item-description">';
    // Achievement Title
    $output .= '<h2 class="badgeos-item-title"><a href="' . get_permalink($achievement->ID) . '">' . get_the_title($achievement->ID) . '</a></h2>';
    // Achievement Short Description
    $output .= '<div class="badgeos-item-excerpt">';
    $output .= badgeos_achievement_points_markup($achievement->ID);
    $excerpt = !empty($achievement->post_excerpt) ? $achievement->post_excerpt : $achievement->post_content;
    $output .= wpautop(apply_filters('get_the_excerpt', $excerpt));
    $output .= '</div><!-- .badgeos-item-excerpt -->';
    // Render our Steps
    if ($steps = badgeos_get_required_achievements_for_achievement($achievement->ID)) {
        $output .= '<div class="badgeos-item-attached">';
        $output .= '<div id="show-more-' . $achievement->ID . '" class="badgeos-open-close-switch"><a class="show-hide-open" data-badgeid="' . $achievement->ID . '" data-action="open" href="#">' . __('Show Details', 'badgeos') . '</a></div>';
        $output .= '<div id="badgeos_toggle_more_window_' . $achievement->ID . '" class="badgeos-extras-window">' . badgeos_get_required_achievements_for_achievement_list_markup($steps, $achievement->ID) . '</div><!-- .badgeos-extras-window -->';
        $output .= '</div><!-- .badgeos-item-attached -->';
    }
    $output .= '</div><!-- .badgeos-item-description -->';
    $output .= '</div><!-- .badgeos-achievements-list-item -->';
    // Return our filterable markup
    return apply_filters('badgeos_render_achievement', $output, $achievement->ID);
}
Пример #5
0
/**
 * Output badges on profile
 *
 */
function boss_edu_profile_achievements()
{
    global $user_ID;
    //user must be logged in to view earned badges and points
    if (is_user_logged_in() && function_exists('badgeos_get_user_achievements')) {
        $achievements = badgeos_get_user_achievements(array('user_id' => bp_displayed_user_id()));
        if (is_array($achievements) && !empty($achievements)) {
            $number_to_show = 5;
            $thecount = 0;
            wp_enqueue_script('badgeos-achievements');
            wp_enqueue_style('badgeos-widget');
            //load widget setting for achievement types to display
            $set_achievements = isset($instance['set_achievements']) ? $instance['set_achievements'] : '';
            //show most recently earned achievement first
            $achievements = array_reverse($achievements);
            echo '<ul class="profile-achievements-listing">';
            foreach ($achievements as $achievement) {
                //verify achievement type is set to display in the widget settings
                //if $set_achievements is not an array it means nothing is set so show all achievements
                if (!is_array($set_achievements) || in_array($achievement->post_type, $set_achievements)) {
                    //exclude step CPT entries from displaying in the widget
                    if (get_post_type($achievement->ID) != 'step') {
                        $permalink = get_permalink($achievement->ID);
                        $title = get_the_title($achievement->ID);
                        $img = badgeos_get_achievement_post_thumbnail($achievement->ID, array(50, 50), 'wp-post-image');
                        $thumb = $img ? '<a style="margin-top: -25px;" class="badgeos-item-thumb" href="' . esc_url($permalink) . '">' . $img . '</a>' : '';
                        $class = 'widget-badgeos-item-title';
                        $item_class = $thumb ? ' has-thumb' : '';
                        // Setup credly data if giveable
                        $giveable = credly_is_achievement_giveable($achievement->ID, $user_ID);
                        $item_class .= $giveable ? ' share-credly addCredly' : '';
                        $credly_ID = $giveable ? 'data-credlyid="' . absint($achievement->ID) . '"' : '';
                        echo '<li id="widget-achievements-listing-item-' . absint($achievement->ID) . '" ' . $credly_ID . ' class="widget-achievements-listing-item' . esc_attr($item_class) . '">';
                        echo $thumb;
                        echo '<a class="widget-badgeos-item-title ' . esc_attr($class) . '" href="' . esc_url($permalink) . '">' . esc_html($title) . '</a>';
                        echo '</li>';
                        $thecount++;
                        if ($thecount == $number_to_show && $number_to_show != 0) {
                            echo '<li id="widget-achievements-listing-item-more" class="widget-achievements-listing-item">';
                            echo '<a class="badgeos-item-thumb" href="' . bp_core_get_user_domain(get_current_user_id()) . '/achievements/"><span class="fa fa-ellipsis-h"></span></a>';
                            echo '<a class="widget-badgeos-item-title ' . esc_attr($class) . '" href="' . bp_core_get_user_domain(get_current_user_id()) . '/achievements/">' . __('See All', 'social-learner') . '</a>';
                            echo '</li>';
                            break;
                        }
                    }
                }
            }
            echo '</ul><!-- widget-achievements-listing -->';
        }
    }
}