// $repeat = null; $xset = $iter->xset; if ($xset) { $is_last = $xset->xset_record_score($iter, $bolt_ex->score, $view->id, $avg_score, $repeat); if ($repeat) { $repeat->avg_score = $avg_score; } if ($is_last) { // if the exercise set if finished, make or update DB records // if ($xset->callback) { call_user_func($xset->callback, $avg_score); } $now = time(); $id = BoltXsetResult::insert("(create_time, user_id, course_id, name, score, view_id) values ({$now}, {$user->id}, {$course->id}, '{$xset->name}', {$avg_score}, {$view_id})"); $refresh_intervals = $xset->refresh; if ($refresh_intervals) { $refresh_rec = BoltRefreshRec::lookup("user_id={$user->id} and course_id={$course->id} and name='{$xset->name}'"); if ($refresh_rec) { $count = $refresh_rec->count; $n = count($refresh_intervals->intervals); if ($count >= $n) { $count = $n - 1; } $due_time = time() + $refresh_intervals->intervals[$count] * 86400; $refresh_rec->update("create_time={$now}, xset_result_id={$id}, due_time={$due_time}"); } else { $due_time = time() + $refresh_intervals->intervals[0] * 86400; BoltRefreshRec::insert("(user_id, course_id, name, create_time, xset_result_id, due_time, count) values ({$user->id}, {$course->id}, '{$xset->name}', {$now}, {$id}, {$due_time}, 0)"); }
function map_gen_uid($uid, $unit, $sb) { global $course, $now; $class = get_class($unit); switch ($class) { case 'BoltExercise': return map_gen_ex($uid, $unit, $sb); case 'BoltLesson': return map_gen_lesson($uid, $unit, $sb); default: $ret = false; foreach ($unit->units as $u) { $ret = map_gen_uid($uid, $u, $sb); if (!$ret) { break; } } if ($ret && $class == 'BoltExerciseSet') { $score = urand($sb->score_mean, $sb->score_dev); BoltXsetResult::insert("(create_time, user_id, course_id, name, score) values ({$now}, {$uid}, {$course->id}, '{$unit->name}', {$score})"); } return $ret; } }