function execute($request)
{
    $language_info = api_autograder_get_language_info($request['path_parts'][1]);
    if ($language_info == null) {
        return build_response_not_found("Language not found.");
    }
    $language_key = $language_info['key'];
    $language_id = $language_info['language_id'];
    $problems = api_autograder_menu_get_problems($request['user_id'], 'practice', 0, $language_id);
    debug_print($problems);
    if ($problems['OK']) {
        $output = array('<h1>' . htmlspecialchars($language_info['name']) . ' Practice Problems</h1>');
        if (count($problems['ordered_problem_ids']) == 0) {
            array_push($output, "<div>Empty!</div>");
        }
        foreach ($problems['ordered_problem_ids'] as $problem_id) {
            $problem_info = $problems['problem_' . $problem_id];
            array_push($output, '<div><a href="/practice/' . $language_key . '/' . $problem_id . '">');
            array_push($output, htmlspecialchars($problem_info['title']));
            array_push($output, '</a></div>');
        }
        return build_response_ok($language_info['title'] . " Practice Problems", implode("\n", $output));
    } else {
        if ($problems['message'] == 'INVALID_LANGUAGE') {
            return build_response_not_found("Language not found.");
        }
    }
}
function api_autograder_create_new_item($user_id, $feature, $callback_arg, $language_key_or_id, $code, $problem_id)
{
    $language_info = api_autograder_get_language_info($language_key_or_id);
    if ($language_info == null || !$language_info['auto_grader_supported']) {
        return api_error('LANG_NOT_SUPPORTED');
    }
    $token = api_autograder_get_new_token();
    $item_id = sql_insert('auto_grader_queue', array('user_id' => $user_id, 'token' => $token, 'state' => 'NOT_STARTED', 'is_not_started' => 1, 'time_created' => time(), 'time_processed' => 0, 'time_finished' => 0, 'language_id' => $language_info['language_id'], 'code' => $code, 'problem_id' => $problem_id, 'output' => '', 'callback_arg' => $callback_arg, 'feature' => $feature));
    return api_success(array('item_id' => $item_id, 'token' => $token));
}
Exemple #3
0
function execute($request)
{
    $language_info = api_autograder_get_language_info($request['path_parts'][1]);
    $problem_id = intval($request['path_parts'][2]);
    if ($problem_id == 0 || $language_info == null) {
        return build_response_not_found("Problem not found.");
    }
    $problem = api_autograder_menu_get_problem($request['user_id'], $language_info['language_id'], 'practice', 0, $problem_id);
    if ($problem == null) {
        return build_response_not_found("Problem not found.");
    }
    $output = array('<h1>' . htmlspecialchars($problem['title']) . '</h1>', '<div>', nl2br(htmlspecialchars($problem['statement'])), '</div>', api_autograder_generate_client_html('practice', $language_info, $problem['template'], $problem_id));
    return build_response_ok('Problem', implode("\n", $output), array('js' => 'autograder.js', 'onload' => "ag_init('practice')"));
}