function show_view($view) { if ($view->end_time) { $d = $view->end_time - $view->start_time; $dur = "{$d} seconds"; } else { $dur = "---"; } if ($view->result_id) { $result = BoltResult::lookup_id($view->result_id); $qs = str_replace("action=answer", "action=answer_page", $result->response); $score = number_format($result->score * 100); $x = "<br>Score: {$score}%\n\t\t\t<br><a href=bolt_sched.php?{$qs}>Answer page</a>"; } echo "<tr>\n\t\t<td valign=top>{$view->id}</td>\n\t\t<td valign=top>" . time_str($view->start_time) . "</td>\n\t\t<td valign=top>{$dur}</td>\n\t\t<td valign=top>{$view->item_name}</td>\n\t\t<td valign=top>" . mode_name($view->mode) . " {$x}</td>\n\t"; //<td valign=top>".phase_name($view->phase)."</td> echo "\n\t\t<td valign=top>" . action_name($view->action) . "</td>\n\t\t</tr>\n\t"; }
} } if ($view->mode == BOLT_MODE_FINISHED) { show_finished_page($view->id, $view->prev_view_id); break; } $iter = new BoltIter($course_doc); $iter->decode_state($view->state); $iter->at(); $mode = $view->mode; if ($view->item_name == $iter->item->name && $mode == BOLT_MODE_ANSWER) { // if we're returning to an answer page, // we need to look up the user's responses and the score. // $view_orig = BoltView::lookup_id($view->prev_view_id); $result = BoltResult::lookup_id($view_orig->result_id); srand($view_orig->id); $bolt_ex->query_string = $result->response; $bolt_ex->score = $result->score; $bolt_ex->index = 0; $view_id = create_view($iter, $mode, $view_orig->id); show_item($iter, $view_id, $view_orig->id, $mode); } else { $view_id = create_view($iter, $mode, $view->id); show_item($iter, $view_id, $view->id, $mode); } break; case 'question': $view = finalize_view($view_id, BOLT_ACTION_QUESTION); debug_show_state(unserialize($view->state), "Initial"); $now = time();
function clear() { global $course_id; admin_page_head("Deleting course data"); BoltEnrollment::delete_aux("course_id = {$course_id}"); BoltView::delete_aux("course_id = {$course_id}"); BoltResult::delete_aux("course_id = {$course_id}"); BoltXsetResult::delete_aux("course_id = {$course_id}"); BoltSelectFinished::delete_aux("course_id = {$course_id}"); BoltRefreshRec::delete_aux("course_id = {$course_id}"); BoltQuestion::delete_aux("course_id = {$course_id}"); echo "\n\t\tCourse data deleted.\n\t"; admin_page_tail(); }
function map_gen_ex($uid, $unit, $sb) { global $course, $now; if (frand() < $sb->attr) { $mode = BOLT_MODE_SHOW; $action = BOLT_ACTION_NONE; BoltView::insert("(user_id, course_id, item_name, mode, action, start_time) values ({$uid}, {$course->id}, '{$unit->name}', {$mode}, {$action}, {$now})"); return false; } else { $t = $now + urand($sb->time_mean, $sb->time_dev); $mode = BOLT_MODE_SHOW; $action = BOLT_ACTION_NEXT; BoltView::insert("(user_id, course_id, item_name, mode, action, start_time, end_time) values ({$uid}, {$course->id}, '{$unit->name}', {$mode}, {$action}, {$now}, {$t})"); $score = urand($sb->score_mean, $sb->score_dev); BoltResult::insert("(create_time, user_id, course_id, item_name, score) values ({$now}, {$uid}, {$course->id}, '{$unit->name}', {$score})"); return map_gen_ans($uid, $unit, $sb); } }