function decay($is_user)
{
    $now = time();
    if ($is_user) {
        $cs = BoincCreditUser::enum("");
    } else {
        $cs = BoincCreditTeam::enum("");
    }
    foreach ($cs as $c) {
        update_average($now, 0, 0, $c->expavg, $c->expavg_time);
        if ($is_user) {
            $c->update("expavg={$c->expavg}, expavg_time={$c->expavg_time} where userid={$c->userid} and appid={$c->appid}");
        } else {
            $c->update("expavg={$c->expavg}, expavg_time={$c->expavg_time} where teamid={$c->teamid} and appid={$c->appid}");
        }
    }
}
function export_item($item, $is_user, $f)
{
    global $sub_projects;
    fprintf($f, $is_user ? "<user>\n" : "<team>\n");
    fprintf($f, "    <id>{$item->id}</id>\n");
    $crs = $is_user ? BoincCreditUser::enum("userid={$item->id}") : BoincCreditTeam::enum("teamid={$item->id}");
    foreach ($sub_projects as $sub_project) {
        $total = 0;
        $average = 0;
        $njobs = 0;
        foreach ($crs as $cr) {
            if (in_array($cr->appid, $sub_project["appids"])) {
                $total += $cr->total;
                $average += $cr->expavg;
                $njobs += $cr->njobs;
            }
        }
        if ($total) {
            fprintf($f, "    <subproject name=\"" . $sub_project["name"] . "\">\n" . "        <workunits>{$njobs}</workunits>\n" . "        <credit>{$total}</credit>\n" . "        <expavg_credit>{$average}</expavg_credit>\n" . "    </subproject>\n");
        }
    }
    fprintf($f, $is_user ? "</user>\n" : "</team>\n");
}
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);
}
Beispiel #4
0
function show_list($is_team, $appid, $is_total)
{
    $x = $is_team ? "teams" : "participants";
    page_head("Top {$x} by application");
    $apps = BoincApp::enum("deprecated=0");
    if (!$appid) {
        $appid = $apps[0]->id;
    }
    start_table();
    show_header($is_team, $apps, $appid, $is_total);
    $x = $is_total ? "total" : "expavg";
    if ($is_team) {
        $items = BoincCreditTeam::enum("appid={$appid} order by {$x} desc");
    } else {
        $items = BoincCreditUser::enum("appid={$appid} order by {$x} desc");
    }
    $i = 0;
    foreach ($items as $item) {
        show_row($item, $apps, $is_team, $i);
        $i++;
    }
    end_table();
    page_tail();
}