Index: openacs-4/packages/assessment/tcl/as-assessment-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/tcl/as-assessment-procs.tcl,v diff -u -r1.15 -r1.16 --- openacs-4/packages/assessment/tcl/as-assessment-procs.tcl 19 Jan 2005 16:49:14 -0000 1.15 +++ openacs-4/packages/assessment/tcl/as-assessment-procs.tcl 23 Jan 2005 18:10:48 -0000 1.16 @@ -26,6 +26,7 @@ {-number_tries ""} {-wait_between_tries ""} {-time_for_response ""} + {-ip_mask ""} {-show_feedback ""} {-section_navigation ""} {-survey_p ""} @@ -67,6 +68,7 @@ [list number_tries $number_tries] \ [list wait_between_tries $wait_between_tries] \ [list time_for_response $time_for_response] \ + [list ip_mask $ip_mask] \ [list show_feedback $show_feedback] \ [list section_navigation $section_navigation] \ [list survey_p $survey_p]] ] @@ -95,6 +97,7 @@ {-number_tries ""} {-wait_between_tries ""} {-time_for_response ""} + {-ip_mask ""} {-show_feedback ""} {-section_navigation ""} } { @@ -128,6 +131,7 @@ [list number_tries $number_tries] \ [list wait_between_tries $wait_between_tries] \ [list time_for_response $time_for_response] \ + [list ip_mask $ip_mask] \ [list show_feedback $show_feedback] \ [list section_navigation $section_navigation] ] ] @@ -198,6 +202,7 @@ [list number_tries $a(number_tries)] \ [list wait_between_tries $a(wait_between_tries)] \ [list time_for_response $a(time_for_response)] \ + [list ip_mask $a(ip_mask)] \ [list show_feedback $a(show_feedback)] \ [list section_navigation $a(section_navigation)] ] ] @@ -295,6 +300,48 @@ db_dml update_assessment_percent {} } +ad_proc -public as::assessment::check_session_conditions { + -assessment_id:required + -subject_id:required +} { + @author Timo Hentschel (timo@timohentschel.de) + @creation-date 2004-12-22 + + Checks if subject is allowed to take the assessment +} { + db_1row assessment_data {} + db_1row total_tries {} + if {![empty_string_p $wait_between_tries]} { + set wait_between_tries [expr 60 * $wait_between_tries] + } + if {$total_tries > 0} { + db_1row cur_wait_time {} + } else { + set cur_wait_time $wait_between_tries + } + + set error_list "" + if {(![empty_string_p $start_time] && $start_time > $cur_time) || (![empty_string_p $end_time] && $end_time < $cur_time)} { + append error_list "