function notify_users() { $now = time(); $rs = BoltRefresh::enum("due_time < {$now}"); $users = array(); foreach ($rs as $r) { $view = BoltView::lookup_id($r->view_id); $user_id = $view->user_id; if (!key_exists($user_id)) { $user = BoincUser::lookup_id($user_id); BoltUser::lookup($user); $user->refresh = array(); $users[$user_id] = $user; } $users[$user_id]->refresh[] = $r; } foreach ($users as $user) { notify_user($user); } }
page_head("Courses"); $user = get_logged_in_user(false); if ($user) { BoltUser::lookup($user); } $courses = BoltCourse::enum(); start_table(); table_header("Course", "Status"); foreach ($courses as $course) { if ($course->hidden && !($user->bolt->flags & BOLT_FLAG_SHOW_ALL)) { continue; } $e = $user ? BoltEnrollment::lookup($user->id, $course->id) : null; if ($e) { $start = date_str($e->create_time); $view = BoltView::lookup_id($e->last_view_id); $ago = time_diff(time() - $view->start_time); $pct = number_format($view->fraction_done * 100, 0); $status = "Started {$start}\n <br>Last visit: {$ago} ago\n <br>{$pct}% done\n "; if ($view->fraction_done < 1) { $status .= "<br><a href=bolt_sched.php?course_id={$course->id}&action=resume>Resume</a>\n "; } $status .= "<br><a href=bolt_sched.php?course_id={$course->id}&action=start>Restart</a>\n | <a href=bolt_course.php?course_id={$course->id}>History</a>\n "; } else { $status = "\n <a href=bolt_sched.php?course_id={$course->id}&action=start>Start</a>\n "; } row2_init("<b>{$course->name}</b>\n <br><span class=note>{$course->description}</span>", $status); show_refreshes(); echo "</td></tr>\n"; } end_table();
function start_refresh() { global $course_doc; global $refresh; $xset_result = BoltXsetResult::lookup_id($refresh->xset_result_id); if (!$xset_result) { error_page("Exercise set result not found"); } $view = BoltView::lookup_id($xset_result->view_id); if (!$view) { error_page("view not found"); } $iter = new BoltIter($course_doc); $iter->decode_state($view->state); $iter->at(); $xset = $iter->xset; if (!$xset || $xset->name != $xset_result->name) { error_page("missing exercise set"); } $xset->restart($iter); $iter->at(); $mode = default_mode($iter->item); $view_id = create_view($iter, $mode, 0); show_item($iter, $view_id, 0, $mode); }