displayed_user->id )
return;
?>
'. bp_get_displayed_user_username() .''. __( ' has been a member for ', 'bp-member-profile-stats' ) .''. etivite_bp_member_profile_stats_get_member_registered() .'.';
}
function etivite_bp_member_profile_stats_member_days() {
echo etivite_bp_member_profile_stats_get_member_days();
}
function etivite_bp_member_profile_stats_get_member_days() {
$total_count = etivite_bp_member_profile_stats_days_since();
if ( $total_count == 0 ) {
$content = ''. $total_count .'' . __( ' days registered ', 'bp-member-profile-stats' ) . '';
} else {
$content = ''. $total_count .'' . __( ' days registered ', 'bp-member-profile-stats' ) . '';
}
return apply_filters( 'etivite_bp_member_profile_stats_get_member_days', $content, $total_count );
}
//simple templatetag for displaying the registered since date
function etivite_bp_member_profile_stats_member_registered() {
echo etivite_bp_member_profile_stats_get_member_registered();
}
function etivite_bp_member_profile_stats_get_member_registered() {
global $bp;
return apply_filters( 'etivite_bp_member_profile_stats_get_member_registered', esc_attr( bp_core_time_since( $bp->displayed_user->userdata->user_registered ) ) );
}
function etivite_bp_member_profile_stats_member_status_daysince() {
echo etivite_bp_member_profile_stats_get_member_status_daysince();
}
function etivite_bp_member_profile_stats_get_member_status_daysince() {
if ( !bp_is_active( 'activity' ) )
return;
$daysince = etivite_bp_member_profile_stats_days_since();
$total_count = etivite_bp_member_profile_stats_get_member_status_count();
$content = '';
if ( $total_count == 0 ) {
$content .= __( 'No status updates yet.', 'bp-member-profile-stats' );
} else if ( $total_count == 1 ) {
$content .= ''. $total_count .''. __( ' status update', 'bp-member-profile-stats' );
} else {
if ( $daysince > 0 ) {
$content .= ''. $total_count .''. __( ' status updates (', 'bp-member-profile-stats' ) . round( $total_count / $daysince, 2 ) . __( ' updates per day on average)', 'bp-member-profile-stats' );
} else {
$content .= ''. $total_count .''. __( ' status updates', 'bp-member-profile-stats' );
}
}
$content .= '
';
return apply_filters( 'etivite_bp_member_profile_stats_get_member_status_daysince', $content, $total_count );
}
function etivite_bp_member_profile_stats_member_status() {
echo etivite_bp_member_profile_stats_get_member_status();
}
function etivite_bp_member_profile_stats_get_member_status() {
if ( !bp_is_active( 'activity' ) )
return;
$total_count = etivite_bp_member_profile_stats_get_member_status_count();
if ( $total_count == 0 ) {
$content = '' . __( ' No updates', 'bp-member-profile-stats' ) . '';
} else if ( $total_count == 1 ) {
$content = ''. $total_count .'' . __( ' update', 'bp-member-profile-stats' ) . '';
} else {
$content = ''. $total_count .'' . __( ' updates', 'bp-member-profile-stats' ) . '';
}
return apply_filters( 'etivite_bp_member_profile_stats_get_member_status', $content, $total_count );
}
function etivite_bp_member_profile_stats_get_member_status_count( $user_id = false ) {
global $bp, $wpdb;
if ( !$user_id )
$user_id = ( $bp->displayed_user->id ) ? $bp->displayed_user->id : $bp->loggedin_user->id;
//if no cache is found
if ( !$count = wp_cache_get( 'etivite_bp_member_profile_stats_get_member_status_'. $user_id, 'bp' ) ) {
$count = $wpdb->get_var( $wpdb->prepare( "SELECT count(a.id) FROM {$bp->activity->table_name} a WHERE a.user_id = {$user_id} AND type = 'activity_update' AND a.component = '{$bp->activity->id}'" ) );
if ( !$count )
$count == 0;
/* Cache the count */
if ( !empty( $count ) )
wp_cache_set( 'etivite_bp_member_profile_stats_get_member_status_'. $user_id, $count, 'bp' );
}
return $count;
}
//delete cache when removing status update
function etivite_bp_member_profile_stats_status_count_delete_clear_cache( $args ) {
if ( $args['type'] && $args['type'] == 'activity_update' ) {
/* Check if the user's latest update has been deleted */
if ( empty( $args['user_id'] ) )
$user_id = $bp->loggedin_user->id;
else
$user_id = $args['user_id'];
wp_cache_delete( 'etivite_bp_member_profile_stats_get_member_status_'. $user_id );
}
}
add_action( 'bp_activity_delete', 'etivite_bp_member_profile_stats_status_count_delete_clear_cache' );
//delete cache when adding status update
function etivite_bp_member_profile_stats_status_count_posted_clear_cache( $content, $user_id, $activity_id ) {
wp_cache_delete( 'etivite_bp_member_profile_stats_get_member_status_'. $user_id );
}
add_action( 'bp_activity_posted_update', 'etivite_bp_member_profile_stats_status_count_posted_clear_cache', 50, 3 );
function etivite_bp_member_profile_stats_member_posts_daysince() {
echo etivite_bp_member_profile_stats_get_member_posts_daysince();
}
function etivite_bp_member_profile_stats_get_member_posts_daysince() {
if ( !bp_is_active( 'forums' ) )
return;
$daysince = etivite_bp_member_profile_stats_days_since();
$total_count = etivite_bp_member_profile_stats_get_member_post_count();
$content = '';
if ( $total_count == 0 ) {
$content .= __( 'No forum posts yet.', 'bp-member-profile-stats' );
} else if ( $total_count == 1 ) {
$content .= ''. $total_count .''. __( ' forum post', 'bp-member-profile-stats' );
} else {
if ( $daysince > 0 ) {
$content .= ''. $total_count .''. __( ' forum posts (', 'bp-member-profile-stats' ) . round( $total_count / $daysince, 2 ) . __( ' posts per day on average)', 'bp-member-profile-stats' );
} else {
$content .= ''. $total_count .''. __( ' forum posts', 'bp-member-profile-stats' );
}
}
$content .= '
';
return apply_filters( 'etivite_bp_member_profile_stats_get_member_posts_daysince', $content, $total_count );
}
function etivite_bp_member_profile_stats_member_posts() {
echo etivite_bp_member_profile_stats_get_member_posts();
}
function etivite_bp_member_profile_stats_get_member_posts() {
if ( !bp_is_active( 'forums' ) )
return;
$total_count = etivite_bp_member_profile_stats_get_member_post_count();
if ( $total_count == 0 ) {
$content = '' . __( ' No forum posts', 'bp-member-profile-stats' ) . '';
} else if ( $total_count == 1 ) {
$content = ''. $total_count .'' . __( ' forum post', 'bp-member-profile-stats' ) . '';
} else {
$content = ''. $total_count .'' . __( ' forum posts', 'bp-member-profile-stats' ) . '';
}
return apply_filters( 'etivite_bp_member_profile_stats_get_member_posts', $content, $total_count );
}
function etivite_bp_member_profile_stats_get_member_post_count( $user_id = false ) {
global $bp, $wpdb, $bbdb;
do_action( 'bbpress_init' );
if ( !$user_id )
$user_id = ( $bp->displayed_user->id ) ? $bp->displayed_user->id : $bp->loggedin_user->id;
$total_count = $wpdb->get_var( $wpdb->prepare( "SELECT count(post_id) FROM {$bbdb->posts} WHERE poster_id = {$user_id} AND post_status = 0" ) );
if ( !$total_count )
$total_count == 0;
return $total_count;
}
function etivite_bp_member_profile_stats_member_topics_daysince() {
echo etivite_bp_member_profile_stats_get_member_topics_daysince();
}
function etivite_bp_member_profile_stats_get_member_topics_daysince() {
if ( !bp_is_active( 'forums' ) )
return;
$daysince = etivite_bp_member_profile_stats_days_since();
$total_count = bp_forums_total_topic_count_for_user();
$content = '';
if ( $total_count == 0 ) {
$content .= __( 'No forum topics yet.', 'bp-member-profile-stats' );
} else if ( $total_count == 1 ) {
$content .= ''. $total_count .''. __( ' forum topic', 'bp-member-profile-stats' );
} else {
if ( $daysince > 0 ) {
$content .= ''. $total_count .''. __( ' forum topics (', 'bp-member-profile-stats' ) . round( $total_count / $daysince, 2 ) . __( ' topics per day on average)', 'bp-member-profile-stats' );
} else {
$content .= ''. $total_count .''. __( ' forum topics', 'bp-member-profile-stats' );
}
}
$content .= '
';
return apply_filters( 'etivite_bp_member_profile_stats_get_member_topics_daysince', $content, $total_count );
}
function etivite_bp_member_profile_stats_member_topics() {
echo etivite_bp_member_profile_stats_get_member_topics();
}
function etivite_bp_member_profile_stats_get_member_topics() {
if ( !bp_is_active( 'forums' ) )
return;
$total_count = bp_forums_total_topic_count_for_user();
if ( $total_count == 0 ) {
$content = '' . __( ' No forum topics', 'bp-member-profile-stats' ) . '';
} else if ( $total_count == 1 ) {
$content = ''. $total_count .'' . __( ' forum topic', 'bp-member-profile-stats' ) . '';
} else {
$content = ''. $total_count .'' . __( ' forum topics', 'bp-member-profile-stats' ) . '';
}
return apply_filters( 'etivite_bp_member_profile_stats_get_member_topics', $content, $total_count );
}
function etivite_bp_member_profile_stats_member_comments_daysince() {
echo etivite_bp_member_profile_stats_get_member_comments_daysince();
}
function etivite_bp_member_profile_stats_get_member_comments_daysince() {
$daysince = etivite_bp_member_profile_stats_days_since();
$total_count = etivite_bp_member_profile_stats_get_member_comment_count();
$content = '';
if ( $total_count == 0 ) {
$content .= __( 'No blog comments yet.', 'bp-member-profile-stats' );
} else if ( $total_count == 1 ) {
$content .= ''. $total_count .''. __( ' blog comment', 'bp-member-profile-stats' );
} else {
if ( $daysince > 0 ) {
$content .= ''. $total_count .''. __( ' blog comments (', 'bp-member-profile-stats' ) . round( $total_count / $daysince, 2 ) . __( ' comments per day on average)', 'bp-member-profile-stats' );
} else {
$content .= ''. $total_count .''. __( ' blog comments', 'bp-member-profile-stats' );
}
}
$content .= '
';
return apply_filters( 'etivite_bp_member_profile_stats_get_member_comments_daysince', $content, $total_count );
}
function etivite_bp_member_profile_stats_member_comments() {
echo etivite_bp_member_profile_stats_get_member_comments();
}
function etivite_bp_member_profile_stats_get_member_comments() {
$total_count = etivite_bp_member_profile_stats_get_member_comment_count();
if ( $total_count == 0 ) {
$content = '' . __( ' No blog comments', 'bp-member-profile-stats' ) . '';
} else if ( $total_count == 1 ) {
$content = ''. $total_count .'' . __( ' blog comment', 'bp-member-profile-stats' ) . '';
} else {
$content = ''. $total_count .'' . __( ' blog comments', 'bp-member-profile-stats' ) . '';
}
return apply_filters( 'etivite_bp_member_profile_stats_get_member_comments', $content, $total_count );
}
function etivite_bp_member_profile_stats_get_member_comment_count( $user_id = false ) {
global $bp, $wpdb;
if ( !$user_id )
$user_id = ( $bp->displayed_user->id ) ? $bp->displayed_user->id : $bp->loggedin_user->id;
$total_count = $wpdb->get_var( $wpdb->prepare( "SELECT count( comment_ID ) FROM {$wpdb->comments} WHERE comment_approved = 1 AND user_id = {$user_id}" ) );
if ( !$total_count )
$total_count == 0;
return $total_count;
}
function etivite_bp_member_profile_stats_member_userblogs_daysince() {
echo etivite_bp_member_profile_stats_get_member_userblogs_daysince();
}
function etivite_bp_member_profile_stats_get_member_userblogs_daysince() {
if ( !bp_is_active( 'blogs' ) )
return;
$daysince = etivite_bp_member_profile_stats_days_since();
$total_count = bp_blogs_total_blogs_for_user();
$content = '';
if ( $total_count == 0 ) {
$content .= __( 'No user blogs yet.', 'bp-member-profile-stats' );
} else if ( $total_count == 1 ) {
$content .= ''. $total_count .''. __( ' user blog', 'bp-member-profile-stats' );
} else {
if ( $daysince > 0 ) {
$content .= ''. $total_count .''. __( ' user blogs (', 'bp-member-profile-stats' );
} else {
$content .= ''. $total_count .''. __( ' user blogs', 'bp-member-profile-stats' );
}
}
$content .= '
';
return apply_filters( 'etivite_bp_member_profile_stats_get_member_userblogs_daysince', $content, $total_count );
}
function etivite_bp_member_profile_stats_member_userblogs() {
echo etivite_bp_member_profile_stats_get_member_userblogs();
}
function etivite_bp_member_profile_stats_get_member_userblogs() {
if ( !bp_is_active( 'blogs' ) )
return;
$total_count = bp_blogs_total_blogs_for_user();
if ( $total_count == 0 ) {
$content = '' . __( ' No user blogs', 'bp-member-profile-stats' ) . '';
} else if ( $total_count == 1 ) {
$content = ''. $total_count .'' . __( ' user blog', 'bp-member-profile-stats' ) . '';
} else {
$content = ''. $total_count .'' . __( ' user blogs', 'bp-member-profile-stats' ) . '';
}
return apply_filters( 'etivite_bp_member_profile_stats_get_member_userblogs', $content, $total_count );
}
function etivite_bp_member_profile_stats_member_dpa_daysince() {
echo etivite_bp_member_profile_stats_get_member_dpa_daysince();
}
function etivite_bp_member_profile_stats_get_member_dpa_daysince() {
global $bp;
$user_id = ( $bp->displayed_user->id ) ? $bp->displayed_user->id : $bp->loggedin_user->id;
$total_count = dpa_get_total_achievement_count_for_user( $user_id );
$score_count = dpa_get_member_achievements_score( $user_id );
$content = '';
if ( $total_count == 0 ) {
$content .= __( ' No unlocked achievements', 'bp-member-profile-stats' );
} else if ( $total_count == 1 ) {
$content .= ''. $total_count .'' . __( ' achievement for ', 'bp-member-profile-stats' ) .''. $score_count .''. __( ' points', 'bp-member-profile-stats' );
} else {
$content .= ''. $total_count .'' . __( ' achievements for ', 'bp-member-profile-stats' ) .''. $score_count .''. __( ' points', 'bp-member-profile-stats' );
}
$content .= '
';
return apply_filters( 'etivite_bp_member_profile_stats_get_member_dpa_daysince', $content, $total_count, $score_count );
}
function etivite_bp_member_profile_stats_member_dpa() {
echo etivite_bp_member_profile_stats_get_member_dpa();
}
function etivite_bp_member_profile_stats_get_member_dpa() {
global $bp;
$user_id = ( $bp->displayed_user->id ) ? $bp->displayed_user->id : $bp->loggedin_user->id;
$total_count = dpa_get_total_achievement_count_for_user( $user_id );
$score_count = dpa_get_member_achievements_score( $user_id );
if ( $total_count == 0 ) {
$content = '' . __( ' No unlocked achievements', 'bp-member-profile-stats' ) . '';
} else if ( $total_count == 1 ) {
$content = ''. $total_count .'' . __( ' achievement for ', 'bp-member-profile-stats' ) .''. $score_count .''. __( ' points', 'bp-member-profile-stats' ) .'';
} else {
$content = ''. $total_count .'' . __( ' achievements for ', 'bp-member-profile-stats' ) .''. $score_count .''. __( ' points', 'bp-member-profile-stats' ) .'';
}
return apply_filters( 'etivite_bp_member_profile_stats_get_member_dpa', $content, $total_count, $score_count );
}
function etivite_bp_member_profile_stats_displaycounts_check( $optioncount ) {
$enabledcounts = (array) maybe_unserialize( get_option( 'bp_member_profile_stats_displaycounts') );
return in_array( $optioncount, $enabledcounts );
}
//helper - internal bp_since includes extra fat we don't need.
function etivite_bp_member_profile_stats_days_since( $newer_date = false ) {
global $bp;
$older_date = ( $bp->displayed_user->id ) ? $bp->displayed_user->userdata->user_registered : $bp->loggedin_user->userdata->user_registered;
if ( !is_numeric( $older_date ) ) {
$time_chunks = explode( ':', str_replace( ' ', ':', $older_date ) );
$date_chunks = explode( '-', str_replace( ' ', '-', $older_date ) );
$older_date = gmmktime( (int)$time_chunks[1], (int)$time_chunks[2], (int)$time_chunks[3], (int)$date_chunks[1], (int)$date_chunks[2], (int)$date_chunks[0] );
}
/* $newer_date will equal false if we want to know the time elapsed between a date and the current time */
/* $newer_date will have a value if we want to work out time elapsed between two known dates */
$newer_date = ( !$newer_date ) ? gmmktime( gmdate( 'H' ), gmdate( 'i' ), gmdate( 's' ), gmdate( 'n' ), gmdate( 'j' ), gmdate( 'Y' ) ) : $newer_date;
/* Difference in seconds */
$since = $newer_date - $older_date;
/* Something went wrong with date calculation and we ended up with a negative date. */
if ( 0 > $since )
return 0;
$count = floor( $since / 86400 );
return $count;
}
?>