--- loncom/homework/bridgetask.pm 2005/11/21 22:42:22 1.83 +++ loncom/homework/bridgetask.pm 2005/11/22 20:01:12 1.85 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: bridgetask.pm,v 1.83 2005/11/21 22:42:22 albertel Exp $ +# $Id: bridgetask.pm,v 1.85 2005/11/22 20:01:12 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -990,10 +990,10 @@ sub get_queue_data { return undef; } + sub check_queue_for_key { - my ($cid,$queue,$todo)=@_; - my $cnum=$env{'course.'.$cid.'.num'}; - my $cdom=$env{'course.'.$cid.'.domain'}; + my ($cdom,$cnum,$queue,$todo)=@_; + my %results= &Apache::lonnet::get($queue,[$todo,"$todo\0locked"],$cdom,$cnum); @@ -1236,6 +1236,27 @@ sub lock_key { return 0; } +sub get_users_in_queue { + my ($queue,$symb,$cdom,$cnum) = @_; + if (!defined($cdom) || !defined($cnum)) { + my (undef,$cid)=&Apache::lonxml::whichuser(); + $cnum=$env{'course.'.$cid.'.num'}; + $cdom=$env{'course.'.$cid.'.domain'}; + } + my $regexp="^$symb\0"; + my %queue=&Apache::lonnet::dump($queue,$cdom,$cnum,$regexp); + my ($tmp)=%queue; + if ($tmp=~/^error: 2 /) { return; } + my @users; + foreach my $key (sort(keys(%queue))) { + next if ($key=~/locked$/); + next if ($key=~/timestamp$/); + my ($symb,$uname,$udom) = &decode_queue_key($key); + push(@users,"$uname:$udom"); + } + return @users; +} + sub get_from_queue { my ($queue)=@_; my $result; @@ -1319,7 +1340,9 @@ sub select_user { foreach my $student (sort {lc($$fullname{$a}) cmp lc($$fullname{$b}) } keys %$fullname) { my ($uname,$udom) = split(/:/,$student); - my %status = &get_student_status($symb,$cid,$udom,$uname); + my $cnum=$env{'course.'.$cid.'.num'}; + my $cdom=$env{'course.'.$cid.'.domain'}; + my %status = &get_student_status($symb,$cdom,$cnum,$udom,$uname); my $queue = 'none'; my $cannot_grade; if ($status{'reviewqueue'} =~ /^(in_progress|enqueue)$/) { @@ -1398,16 +1421,16 @@ RESULT } sub get_student_status { - my ($symb,$cid,$udom,$uname)=@_; + my ($symb,$cdom,$cnum,$udom,$uname)=@_; my %record = &Apache::lonnet::restore($symb,$env{'request.course.id'}, $udom,$uname); my %status; $status{'status'}=$record{'resource.status'}; $status{'version'}=$record{'resource.version'}; $status{'grader'}=$record{'resource.grader'}; - $status{'reviewqueue'}=&check_queue_for_key($cid,'reviewqueue', + $status{'reviewqueue'}=&check_queue_for_key($cdom,$cnum,'reviewqueue', &encode_queue_key($symb,$udom,$uname)); - $status{'gradingqueue'}=&check_queue_for_key($cid,'gradingqueue', + $status{'gradingqueue'}=&check_queue_for_key($cdom,$cnum,'gradingqueue', &encode_queue_key($symb,$udom,$uname)); return %status; }