--- loncom/homework/bridgetask.pm 2005/12/01 18:46:31 1.87 +++ loncom/homework/bridgetask.pm 2005/12/06 10:13:15 1.88 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: bridgetask.pm,v 1.87 2005/12/01 18:46:31 albertel Exp $ +# $Id: bridgetask.pm,v 1.88 2005/12/06 10:13:15 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -955,6 +955,25 @@ sub check_queue_unlock { return 'not_owner'; } +sub in_queue { + my ($queue,$symb,$cdom,$cnum,$udom,$uname)=@_; + if ($queue eq 'none') { return 0; } + if (!defined($symb) || !defined($cdom) || !defined($cnum) + || !defined($udom) || !defined($uname)) { + ($symb,my $cid,$udom,$uname)=&Apache::lonxml::whichuser(); + $cnum=$env{'course.'.$cid.'.num'}; + $cdom=$env{'course.'.$cid.'.domain'}; + } + + my $key=&encode_queue_key($symb,$udom,$uname); + my %results = &Apache::lonnet::get($queue,[$key],$cdom,$cnum); + + if (defined($results{$key})) { + return 1; + } + return 0; +} + sub remove_from_queue { my ($queue,$symb,$cdom,$cnum,$udom,$uname)=@_; if ($queue eq 'none') { return 'ok'; } @@ -964,9 +983,11 @@ sub remove_from_queue { $cnum=$env{'course.'.$cid.'.num'}; $cdom=$env{'course.'.$cid.'.domain'}; } + if (!&in_queue($queue,$symb,$cdom,$cnum,$udom,$uname)) { + return 'ok'; + } my $key=&encode_queue_key($symb,$udom,$uname); my @keys=($key,"$key\0locked"); - &Apache::lonnet::logthis("removing @keys"); return &Apache::lonnet::del($queue,\@keys,$cdom,$cnum); } @@ -1353,7 +1374,8 @@ sub select_user { my $cnum=$env{'course.'.$cid.'.num'}; my $cdom=$env{'course.'.$cid.'.domain'}; - my %status = &get_student_status($symb,$cdom,$cnum,$udom,$uname); + my %status = &get_student_status($symb,$cdom,$cnum,$udom,$uname, + 'Task'); my $queue = 'none'; my $cannot_grade; if ($status{'reviewqueue'} =~ /^(in_progress|enqueue)$/) {