--- loncom/interface/loncoursedata.pm 2002/07/24 14:52:32 1.4 +++ loncom/interface/loncoursedata.pm 2002/07/30 21:31:48 1.8 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # (Publication Handler # -# $Id: loncoursedata.pm,v 1.4 2002/07/24 14:52:32 stredwic Exp $ +# $Id: loncoursedata.pm,v 1.8 2002/07/30 21:31:48 stredwic Exp $ # # Copyright Michigan State University Board of Trustees # @@ -189,6 +189,7 @@ sub DownloadCourseInformation { my $modifiedTime = &GetFileTimestamp($domain, $name, $courseID.'.db', $Apache::lonnet::perlvar{'lonUsersDir'}); + if($lastDownloadTime >= $modifiedTime) { $courseData{'lastDownloadTime'}=time; $courseData{'UpToDate'} = 'true'; @@ -336,6 +337,8 @@ sub ProcessTopResourceMap { ':'.$currentResourceID; } + $cache->{$currentResourceID.':source'} = + $hash{'src_'.$currentResourceID}; my $meta=$hash{'src_'.$currentResourceID}; # $cache->{$currentResourceID.':title'}= # &Apache::lonnet::metdata($meta,'title'); @@ -343,36 +346,49 @@ sub ProcessTopResourceMap { $hash{'title_'.$currentResourceID}; # Get Parts for problem - foreach (split(/\,/,&Apache::lonnet::metadata($meta,'keys'))) { - if($_=~/^stores\_(\d+)\_tries$/) { - my $Part=&Apache::lonnet::metadata($meta,$_.'.part'); - if(!defined($cache->{$currentSequence.':'. - $currentResourceID.':parts'})) { - $cache->{$currentSequence.':'.$currentResourceID. - ':parts'}=$Part; - } else { - $cache->{$currentSequence.':'.$currentResourceID. - ':parts'}.=':'.$Part; + my %beenHere; + foreach (split(/\,/,&Apache::lonnet::metadata($meta,'packages'))) { + if(/^\w+response_\d+.*/) { + my (undef, $partId, $responseId) = split(/_/,$_); + if($beenHere{'p:'.$partId} == 0) { + $beenHere{'p:'.$partId}++; + if(!defined($cache->{$currentSequence.':'. + $currentResourceID.':parts'})) { + $cache->{$currentSequence.':'.$currentResourceID. + ':parts'}=$partId; + } else { + $cache->{$currentSequence.':'.$currentResourceID. + ':parts'}.=':'.$partId; + } } - foreach (split(/\,/, - &Apache::lonnet::metadata($meta,'packages'))) { - if($_=~/^optionresponse\_($Part)\_(\w+)$/) { - if(defined($cache->{'OptionResponses'})) { - $cache->{'OptionResponses'}.= ':::'. - $hash{'src_'.$currentResourceID}.'::'. - $hash{'title_'.$currentResourceID}.'::'. - $Part.'::'.$Problem; - } else { - $cache->{'OptionResponses'}= - $hash{'src_'.$currentResourceID}.'::'. - $hash{'title_'.$currentResourceID}.'::'. - $Part.'::'.$Problem; - } + if($beenHere{'r:'.$partId.':'.$responseId} == 0) { + $beenHere{'r:'.$partId.':'.$responseId}++; + if(!defined($cache->{$currentSequence.':'. + $currentResourceID.':'.$partId. + ':responseIDs'})) { + $cache->{$currentSequence.':'.$currentResourceID. + ':'.$partId.':responseIDs'}=$responseId; + } else { + $cache->{$currentSequence.':'.$currentResourceID. + ':'.$partId.':responseIDs'}.=':'. + $responseId; + } + } + if(/^optionresponse/ && + $beenHere{'o:'.$partId.':'.$currentResourceID} == 0) { + $beenHere{'o:'.$partId.$currentResourceID}++; + if(defined($cache->{'OptionResponses'})) { + $cache->{'OptionResponses'}.= ':::'. + $currentResourceID.':'. + $partId.':'.$responseId; + } else { + $cache->{'OptionResponses'}= $currentResourceID. + ':'.$partId.':'.$responseId; } } } - } - } + } + } # if resource == finish resource, then it is the end of a sequence/page if($currentResourceID eq $lastResourceID) { @@ -515,6 +531,7 @@ sub ProcessClasslist { $cache->{$name.':domain'}=$studentDomain; if(!defined($cache->{$name.':lastDownloadTime'})) { $cache->{$name.':lastDownloadTime'}='Not downloaded'; + $cache->{$name.':updateTime'}=' Not updated'; } my ($checkForError)=keys(%$studentInformation); @@ -558,6 +575,17 @@ sub ProcessClasslist { } $cache->{$name.':Status'}=$status; $cache->{$name.':section'}=$sec; + + if($sec eq '' || !defined($sec) || $sec eq ' ') { + $sec = 'none'; + } + if(defined($cache->{'sectionList'})) { + if($cache->{'sectionList'} !~ /(^$sec:|^$sec$|:$sec$|:$sec:)/) { + $cache->{'sectionList'} .= ':'.$sec; + } + } else { + $cache->{'sectionList'} = $sec; + } } $cache->{'ClasslistTimestamp'}=time; @@ -604,6 +632,12 @@ sub ProcessStudentData { if($courseData->{'UpToDate'} eq 'true') { $cache->{$name.':lastDownloadTime'}=$courseData->{'lastDownloadTime'}; + if($courseData->{'lastDownloadTime'} eq 'Not downloaded') { + $cache->{$name.':updateTime'} = ' Not updated'; + } else { + $cache->{$name.':updateTime'}= + localtime($courseData->{'lastDownloadTime'}); + } return; } @@ -617,6 +651,12 @@ sub ProcessStudentData { } $cache->{$name.':lastDownloadTime'}=$courseData->{'lastDownloadTime'}; + if($courseData->{'lastDownloadTime'} eq 'Not downloaded') { + $cache->{$name.':updateTime'} = ' Not updated'; + } else { + $cache->{$name.':updateTime'}= + localtime($courseData->{'lastDownloadTime'}); + } foreach (@courseKeys) { $cache->{$name.':'.$_}=$courseData->{$_}; } @@ -625,30 +665,27 @@ sub ProcessStudentData { } sub LoadDiscussion { -# my $symb=shift; -# $r->print('
$cid ... '.$symb); -# my %contrib=&Apache::lonnet::dump('msu_2964385f9033c63msul1','msu','2964385f9033c63msul1'); - my ($name, $courseID, $Discuss)=@_; - my %contrib=&DownloadCourseInformation($name, $courseID, 0); - + my ( $courseID)=@_; + my %Discuss=(); + my %contrib=&Apache::lonnet::dump( + $courseID, + $ENV{'course.'.$courseID.'.domain'}, + $ENV{'course.'.$courseID.'.num'}); + + #my %contrib=&DownloadCourseInformation($name, $courseID, 0); + foreach my $temp(keys %contrib) { if ($temp=~/^version/) { my $ver=$contrib{$temp}; my ($dummy,$prb)=split(':',$temp); for (my $idx=1; $idx<=$ver; $idx++ ) { my $name=$contrib{"$idx:$prb:sendername"}; - $Discuss->{"$name:$prb"}=$idx; + $Discuss{"$name:$prb"}=$idx; } } } -# $r->print('
cid='.$cid); -# my %contrib=&Apache::lonnet::restore($symb,$cid, -# $ENV{$cid.'.domain'}, -# $ENV{'course.'.$cid.'.num'}); - -# $Apache::lonxml::debug=1; -# &Apache::lonhomework::showhash(%Discuss); -# $Apache::lonxml::debug=0; + + return \%Discuss; } # ----- END PROCESSING FUNCTIONS ---------------------------------------