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); }
/** * 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; }