* @package Achievements
* @subpackage widgets
*
* $Id: achievements-widgets.php 909 2011-01-22 21:52:21Z DJPaul $
*/
/**
* Sitewide Leaderboard widget.
*
* @package Achievements
* @since 2.0
* @subpackage widgets
* @uses WP_Widget
*/
class DPA_Sitewide_Leaderboard extends WP_Widget {
/**
* Constructor
*
* @since 2.0
*/
function DPA_Sitewide_Leaderboard() {
$widget_ops = array( 'classname' => 'achievements-sitewide-leaderboard', 'description' => __( 'Sitewide leaderboard', 'dpa' ) );
$this->WP_Widget( 'achievements-sitewide', __( 'Achievements Leaderboard', 'dpa' ), $widget_ops, array( 'id_base' => 'achievements-sitewide' ) );
}
/**
* Outputs the HTML for this widget.
*
* @global object $bp BuddyPress global settings
* @param array $args An array of standard parameters for widgets
* @param array $instance An array of settings for this widget instance
* @since 2.0
* @todo Figure out a way to unify the output. Remove table?
*/
function widget( $args, $instance ) {
global $bp;
extract( $args, EXTR_SKIP );
if ( !$high_scorers = dpa_points_get_high_scorers( $instance['limit'] ) )
return;
$high_scorers_count = count( $high_scorers );
$appearance = apply_filters( 'dpa_widget_title', $instance['style'] );
if ( empty( $appearance ) ) // Handle widget changes from v2.0.3 to v2.0.4.
$appearance = 'leaguetable';
// Figure out the upper range for the percentage bars
if ( 'modern' == $appearance ) {
$high_scorers_max_count = 0;
foreach ( $high_scorers as $high_scorer )
if ( $high_scorer->points > $high_scorers_max_count )
$high_scorers_max_count = $high_scorer->points;
}
echo $before_widget;
echo $before_title;
echo esc_html( apply_filters( 'dpa_widget_title', $instance['title'] ) );
echo $after_title;
if ( 'leaguetable' == $appearance ) :
?>
.
20, 'item_id' => $high_scorers[$i]->id, 'type' => 'thumb', 'width' => 20 ) ) ?> id ) ?>
points ) ?>
points / $high_scorers_max_count ) * 100; ?>
__( 'Achievement Leaderboard', 'dpa' ), 'limit' => 12, 'style' => 'leaguetable' ) );
$limit = apply_filters( 'dpa_widget_limit', $instance['limit'] );
$style = apply_filters( 'dpa_widget_title', $instance['style'] );
$title = apply_filters( 'dpa_widget_title', $instance['title'] );
?>
dpa_get_sitewide_leaderboard_style_options();
foreach ( $style_options as $name => $description ) {
$selected = '';
if ( $style == $name )
$selected = 'selected="selected"';
printf( '%3$s ', esc_attr( $name ), $selected, $description );
}
?>
__( 'League table', 'dpa' ), 'modern' => __( 'Modern', 'dpa' ) ), apply_filters( 'dpa_sitewide_leaderboard_style_options', array() ) );
}
}
/**
* Member Achievement widget (displays Achievement's pictures, that the user has unlocked).
*
* @package Achievements
* @since 2.0
* @subpackage widgets
* @uses WP_Widget
*/
class DPA_Member_Achievements extends WP_Widget {
/**
* Constructor
*
* @since 2.0
*/
function DPA_Member_Achievements() {
$widget_ops = array( 'classname' => 'achievements-member-achievements', 'description' => __( "A photo grid of a member's unlocked Achievements", 'dpa' ) );
$this->WP_Widget( 'achievements-member-achievements', __( 'Achievements, Unlocked', 'dpa' ), $widget_ops, array( 'id_base' => 'achievements-member-achievements' ) );
}
/**
* Outputs the HTML for this widget.
*
* @global DPA_Achievement_Template $achievements_template Achievements template tag object
* @global object $bp BuddyPress global settings
* @param array $args An array of standard parameters for widgets
* @param array $instance An array of settings for this widget instance
* @since 2.0
*/
function widget( $args, $instance ) {
global $achievements_template, $bp;
if ( empty( $bp->loggedin_user->id ) )
return;
extract( $args, EXTR_SKIP );
if ( dpa_has_achievements( array( 'user_id' => $bp->loggedin_user->id, 'max' => $instance['limit'], 'populate_extras' => false, 'type' => 'unlocked' ) ) ) :
echo $before_widget;
if ( $instance['title'] ) {
echo $before_title;
echo esc_html( apply_filters( 'dpa_widget_title', $instance['title'] ) );
echo $after_title;
}
?>
__( "Your Recent Achievements", 'dpa' ), 'limit' => 12 ) );
$title = apply_filters( 'dpa_widget_title', $instance['title'] );
$limit = apply_filters( 'dpa_widget_limit', $instance['limit'] );
?>
'achievements-available-achievements', 'description' => __( "A photo grid of all the Achievements available on this site; intended for multisite", 'dpa' ) );
$this->WP_Widget( 'achievements-available-achievements', __( 'Achievements, All', 'dpa' ), $widget_ops, array( 'id_base' => 'achievements-available-achievements' ) );
}
/**
* Outputs the HTML for this widget.
*
* @global DPA_Achievement_Template $achievements_template Achievements template tag object
* @global int $blog_id Site ID
* @global object $bp BuddyPress global settings
* @param array $args An array of standard parameters for widgets
* @param array $instance An array of settings for this widget instance
* @since 2.0
*/
function widget( $args, $instance ) {
global $achievements_template, $blog_id, $bp;
extract( $args, EXTR_SKIP );
if ( dpa_has_achievements( 'type=active&per_page=' . $instance['limit'] . '&max=' . $instance['limit'] . '&populate_extras=0' ) ) :
echo $before_widget;
if ( $instance['title'] ) {
echo $before_title;
echo esc_html( apply_filters( 'dpa_widget_title', $instance['title'] ) );
echo $after_title;
}
?>
__( 'All Available Achievements', 'dpa' ), 'limit' => 12 ) );
$title = apply_filters( 'dpa_widget_title', $instance['title'] );
$limit = apply_filters( 'dpa_widget_limit', $instance['limit'] );
?>
'achievements-featured-achievement', 'description' => __( "Displays a single Achievement in detail", 'dpa' ) );
$this->WP_Widget( 'achievements-featured-achievement', __( 'Achievements, Featured', 'dpa' ), $widget_ops, array( 'id_base' => 'achievements-featured-achievement' ) );
}
/**
* Outputs the HTML for this widget.
*
* @global DPA_Achievement_Template $achievements_template Achievements template tag object
* @global object $bp BuddyPress global settings
* @param array $args An array of standard parameters for widgets
* @param array $instance An array of settings for this widget instance
* @since 2.0
*/
function widget( $args, $instance ) {
global $achievements_template, $bp;
extract( $args, EXTR_SKIP );
if ( dpa_has_achievements( array( 'slug' => $instance['achievement_slug'], 'populate_extras' => false, 'type' => 'single' ) ) ) :
echo $before_widget;
if ( $instance['title'] ) {
echo $before_title;
echo esc_html( apply_filters( 'dpa_widget_title', $instance['title'] ) );
echo $after_title;
}
?>
__( "Featured Achievement", 'dpa' ), 'achievement_slug' => '' ) );
$title = apply_filters( 'dpa_widget_title', $instance['title'] );
$achievement_slug = apply_filters( 'dpa_widget_achievement_slug', $instance['achievement_slug'] );
?>
get_achievements_list( $achievement_slug ) ?>
>
'achievements-member-achievements-available', 'description' => __( "A photo grid of Achievements which the member is yet to unlock", 'dpa' ) );
$this->WP_Widget( 'achievements-member-achievements-available', __( 'Achievements, Locked', 'dpa' ), $widget_ops, array( 'id_base' => 'achievements-member-achievements-available' ) );
}
/**
* Outputs the HTML for this widget.
*
* @global DPA_Achievement_Template $achievements_template Achievements template tag object
* @global object $bp BuddyPress global settings
* @param array $args An array of standard parameters for widgets
* @param array $instance An array of settings for this widget instance
* @since 2.0
*/
function widget( $args, $instance ) {
global $achievements_template, $bp;
if ( !$bp->loggedin_user->id )
return;
extract( $args, EXTR_SKIP );
if ( dpa_has_achievements( array( 'user_id' => $bp->loggedin_user->id, 'max' => $instance['limit'], 'populate_extras' => false, 'type' => 'locked' ) ) ) :
echo $before_widget;
if ( $instance['title'] ) {
echo $before_title;
echo esc_html( apply_filters( 'dpa_widget_title', $instance['title'] ) );
echo $after_title;
}
?>
__( "Unlock These Achievements", 'dpa' ), 'limit' => 12 ) );
$title = apply_filters( 'dpa_widget_title', $instance['title'] );
$limit = apply_filters( 'dpa_widget_limit', $instance['limit'] );
?>
'achievements-member-points', 'description' => __( "Displays a member's Achievement score", 'dpa' ) );
$this->WP_Widget( 'achievements-member-points', __( "Achievements, Member's Score", 'dpa' ), $widget_ops, array( 'id_base' => 'achievements-member-points' ) );
}
/**
* Outputs the HTML for this widget.
*
* @global object $bp BuddyPress global settings
* @param array $args An array of standard parameters for widgets
* @param array $instance An array of settings for this widget instance
* @since 2.0
*/
function widget( $args, $instance ) {
global $bp;
extract( $args, EXTR_SKIP );
if ( ( $instance['loggedin_user'] && empty( $bp->loggedin_user->id ) ) || ( !$instance['loggedin_user'] && empty( $bp->displayed_user->id ) ) )
return;
if ( $instance['loggedin_user'] )
$user_id = $bp->loggedin_user->id;
else
$user_id = $bp->displayed_user->id;
echo $before_widget;
if ( $instance['title'] ) {
echo $before_title;
echo esc_html( apply_filters( 'dpa_widget_title', $instance['title'] ) );
echo $after_title;
}
?>
__( "Achievement Score", 'dpa' ), 'loggedin_user' => 0 ) );
$title = apply_filters( 'dpa_widget_title', $instance['title'] );
$loggedin_user = apply_filters( 'dpa_widget_loggedin_user', $instance['loggedin_user'] );
$checked = '';
if ( $loggedin_user )
$checked = 'checked="checked"';
?>
/>