function assign_pct_badge($is_user, $item, $percentiles, $badges) { for ($i = 0; $i < 3; $i++) { if ($item->expavg_credit >= $percentiles[$i]) { assign_badge($is_user, $item, $badges[$i]); unassign_badges($is_user, $item, $badges, $i); return; } } unassign_badges($is_user, $item, $badges, -1); }
function assign_sub_badge($is_user, $item, $levels, $badges, $where_clause) { if ($is_user) { $sub_total = BoincCreditUser::sum('total', "where userid=" . $item->id . " and ({$where_clause})"); } else { $sub_total = BoincCreditTeam::sum('total', "where teamid=" . $item->id . " and ({$where_clause})"); } // count from highest to lowest level, so the user get's assigned the // highest possible level and the lower levels get removed // for ($i = count($levels) - 1; $i >= 0; $i--) { if ($sub_total >= $levels[$i]) { assign_badge($is_user, $item, $badges[$i]); unassign_badges($is_user, $item, $badges, $i); return; } } // no level could be assigned so remove them all // unassign_badges($is_user, $item, $badges, -1); }