$app->get('/api/getpref/:pref', function ($pref) use($app, $user) {
    $app->contentType('application/json');
    echo json_encode([$pref => $user->getPref($pref)]);
});
$app->get('/api/setpref/:pref/:value', function ($pref, $value) use($app, $user) {
    $app->contentType('application/json');
    $user->setPref($pref, $value);
    echo json_encode([$pref => $value]);
});
$app->get('/api/graph/level/:level', function ($level) use($app, $user) {
    $user_scores = $user->getAverageScores($level, -1);
    $lessons = [];
    for ($i = 1; $i <= count($user_scores); $i++) {
        array_push($lessons, $i);
    }
    $global_scores = array_slice(\PTA\App::getAverageScores($level), 0, count($user_scores));
    $chartdata = ['empty' => true];
    if (count($user_scores) > 0 || count($global_scores) > 0) {
        $chartdata = ['chart' => ['renderTo' => 'chart'], 'title' => ['text' => 'Performance'], 'xAxis' => ['title' => ['text' => 'Lessons'], 'categories' => $lessons], 'yAxis' => ['min' => 0, 'max' => 100, 'title' => ['text' => 'Average Score / Tries']], 'series' => [['name' => 'You', 'data' => $user_scores, 'type' => 'line'], ['name' => 'Other Users', 'data' => $global_scores, 'type' => 'line']]];
    }
    $app->contentType('application/json');
    echo json_encode($chartdata);
});
$app->post('/api/login/hook', function () use($app, $user) {
    $request = $app->request();
    $ip = $_SERVER['REMOTE_ADDR'];
    $logged = true;
    #if ($user->isLoggedIn() && $user->verifyNonce($request->post('nonce'), $ip, 'login-' . $user->getUsername(), 0)) {
    $user->logLogin($ip);
    #}
    $app->contentType('application/json');