function mycred_get_users_of_rank($rank_id, $number = NULL, $order = 'DESC', $type = 'mycred_default')
 {
     if (!is_numeric($rank_id)) {
         $rank_id = mycred_get_rank_id_from_title($rank_id);
     }
     if ($rank_id === NULL) {
         return '';
     }
     global $wpdb;
     $mycred = mycred($type);
     $balance_key = $type;
     if ($mycred->is_multisite && $GLOBALS['blog_id'] > 1 && !$mycred->use_central_logging) {
         $balance_key .= '_' . $GLOBALS['blog_id'];
     }
     if (mycred_rank_based_on_total($type)) {
         $balance_key .= '_total';
     }
     $rank_meta_key = 'mycred_rank';
     if ($mycred->is_multisite && $GLOBALS['blog_id'] > 1 && !$mycred->use_master_template) {
         $rank_meta_key .= '_' . $GLOBALS['blog_id'];
     }
     if ($type != 'mycred_default') {
         $rank_meta_key .= $type;
     }
     $sql = "\n\t\t\tSELECT rank.user_id \n\t\t\tFROM {$wpdb->usermeta} rank \n\t\t\tINNER JOIN {$wpdb->usermeta} balance \n\t\t\t\tON ( rank.user_id = balance.user_id AND balance.meta_key = %s )";
     $sql .= "\n\t\t\tWHERE rank.meta_key = %s \n\t\t\t\tAND rank.meta_value = %d\n\t\t\tORDER BY balance.meta_value+0";
     // Order
     if ($order == 'ASC') {
         $sql .= ' ASC';
     } else {
         $sql .= ' DESC';
     }
     // Limit
     if ($number !== NULL) {
         $sql .= ' LIMIT 0,' . abs($number) . ';';
     } else {
         $sql .= ';';
     }
     // Run query
     $users = $wpdb->get_results($wpdb->prepare($sql, $balance_key, $rank_meta_key, $rank_id), 'ARRAY_A');
     $wpdb->flush();
     return apply_filters('mycred_get_users_of_rank', $users, $rank_id, $number, $order, $type);
 }
Exemplo n.º 2
0
 /**
  * Balance Adjustment
  * Check if users rank should change.
  * @since 1.1
  * @version 1.4
  */
 public function balance_adjustment($result, $request, $mycred)
 {
     // If the result was declined
     if ($result === false) {
         return $result;
     }
     // If ranks for this type is based on total and this is not a admin adjustment
     if (mycred_rank_based_on_total($request['type']) && $request['amount'] < 0 && $request['ref'] != 'manual') {
         return $result;
     }
     // Find users rank
     mycred_find_users_rank((int) $request['user_id'], true, $request['type']);
     return $result;
 }