Example #1
0
function upload_grades($pset, $text, $fname)
{
    global $Conf;
    assert($pset->gitless_grades);
    $csv = new CsvParser($text);
    $csv->set_header($csv->next());
    while ($line = $csv->next()) {
        if (($who = get($line, "github_username")) && $who !== "-") {
            $user = $Conf->user_by_query("github_username=?", [$who]);
        } else {
            if (($who = get($line, "seascode_username")) && $who !== "-") {
                $user = $Conf->user_by_query("seascode_username=?", [$who]);
            } else {
                if (($who = get($line, "huid")) && $who !== "-") {
                    $user = $Conf->user_by_query("huid=?", [$who]);
                } else {
                    if (($who = get($line, "username")) && $who !== "-") {
                        $user = $Conf->user_by_query("github_username=? or seascode_username=? order by github_username=? desc limit 1", [$who, $who, $who]);
                    } else {
                        if (($who = get($line, "email")) && $who !== "-") {
                            $user = $Conf->user_by_email($who);
                        } else {
                            if ($who = get($line, "name")) {
                                list($first, $last) = Text::split_name($who);
                                $user = $Conf->user_by_query("firstName like '?s%' and lastName=?", [$first, $last]);
                                if ($user && $user->firstName != $first && !str_starts_with($user->firstName, "{$first} ")) {
                                    $user = null;
                                }
                            } else {
                                continue;
                            }
                        }
                    }
                }
            }
        }
        if ($user) {
            if (!save_grades($user, $pset, null, $line, true)) {
                $Conf->errorMsg("no grades set for “" . htmlspecialchars($who) . "”");
            }
        } else {
            $Conf->errorMsg(htmlspecialchars($fname) . ":" . $csv->lineno() . ": unknown user “" . htmlspecialchars($who) . "”");
        }
    }
    return true;
}
Example #2
0
function upload_grades($pset, $text, $fname)
{
    global $Conf;
    assert($pset->gitless_grades);
    $csv = new CsvParser($text);
    $csv->set_header($csv->next());
    while ($line = $csv->next()) {
        if (@$line["seascode_username"]) {
            $who = $line["seascode_username"];
            $user = Contact::find_by_username($who);
        } else {
            if (@$line["email"]) {
                $who = $line["email"];
                $user = Contact::find_by_email($who);
            } else {
                if (@$line["name"]) {
                    $who = $line["name"];
                    list($first, $last) = Text::split_name($who);
                    $user = Contact::find_by_query("firstName like '" . sqlqtrim($first) . "%' and lastName='" . sqlqtrim($last) . "'");
                    if ($user && $user->firstName != $first && !str_starts_with($user->firstName, "{$first} ")) {
                        $user = null;
                    }
                } else {
                    continue;
                }
            }
        }
        if ($user) {
            if (!save_grades($user, $pset, null, $line, true)) {
                $Conf->errorMsg("no grades set for “" . htmlspecialchars($who) . "”");
            }
        } else {
            $Conf->errorMsg(htmlspecialchars($fname) . ":" . $csv->lineno() . ": unknown user “" . htmlspecialchars($who) . "”");
        }
    }
    return true;
}