AnsPress_Leaderboard_Widget::get_top_users( int $interval, int $limit )
Description #
Get top users from database.
Parameters #
- $intervalint (Required) Interval in days.
- $limitint (Required) Limit of users.
Source #
File: widgets/leaderboard.php
private function get_top_users( $interval, $limit ) {
global $wpdb;
$interval = absint( $interval );
$limit = absint( $limit );
$cap_key = $wpdb->prefix . 'capabilities';
return $wpdb->get_results( // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching
$wpdb->prepare(
"SELECT users.ID, users.display_name, sum(rep_ev.points) AS aggregated FROM $wpdb->ap_reputations rep
INNER JOIN $wpdb->ap_reputation_events rep_ev ON rep.rep_event = rep_ev.slug
INNER JOIN $wpdb->users users ON users.ID = rep.rep_user_id
INNER JOIN $wpdb->usermeta meta ON meta.user_id = users.ID AND meta.meta_key = %s AND meta_value NOT LIKE %s
WHERE rep.rep_date > current_date - interval %d day
GROUP BY rep.rep_user_id
ORDER BY aggregated DESC, users.ID ASC
LIMIT %d",
$cap_key,
"%{$wpdb->esc_like('administrator')}%",
$interval,
$limit
)
);
}
Expand full source code Collapse full source code View on GitHub: widgets/leaderboard.php:44
Add your comment