public function create_item($request) { $params = $request->get_params(); $problem_id = $params['problem_id']; $content = $params['content']; $tried = $params['tried']; $problem_data = null; if (isset($params['post_data_key'])) { $post_data_key = $params['post_data_key']; $problem_data = get_option($post_data_key); // Don't ever keep this data around. delete_option($post_data_key); } // Try fetching another question from the same problem. if (!$problem_data) { $query = new Query(array('problem_id' => $problem_id)); $questions = $query->get(); foreach ($questions as $q) { if ($q->get_problem_text()) { $problem_data = array('problem_id' => $q->get_problem_id(), 'problem_set' => $q->get_problem_set(), 'course' => $q->get_course(), 'section' => $q->get_section(), 'problem_text' => $q->get_problem_text()); break; } } } $question = new \WeBWorK\Server\Question(); $question->set_author_id(get_current_user_id()); $question->set_content($content); $question->set_tried($tried); $question->set_problem_id($problem_data['problem_id']); $question->set_problem_set($problem_data['problem_set']); $question->set_course($problem_data['course']); $question->set_section($problem_data['section']); $question->set_problem_text($problem_data['problem_text']); if ($question->save()) { $query = new Query(array('question_id' => $question->get_id())); $results = $query->get_for_endpoint(); // @todo not found? $retval = reset($results); $r = rest_ensure_response($retval); $r->set_status(201); } else { $r = rest_ensure_response(false); $r->set_status(500); } return $r; }
public function create_item($request) { $params = $request->get_params(); $problem_id = $params['problem_id']; $content = $params['content']; $tried = $params['tried']; $question = new \WeBWorK\Server\Question(); $question->set_author_id(get_current_user_id()); $question->set_content($content); $question->set_tried($tried); $question->set_problem_id($problem_id); if ($question->save()) { $retval = array('questionId' => $question->get_id(), 'content' => $question->get_content(), 'tried' => $question->get_tried(), 'authorAvatar' => $question->get_author_avatar(), 'authorName' => $question->get_author_name()); $r = rest_ensure_response($retval); $r->set_status(201); } else { $r = rest_ensure_response(false); $r->set_status(500); } return $r; }