--- loncom/interface/loncoursedata.pm 2002/07/25 21:23:51 1.6 +++ loncom/interface/loncoursedata.pm 2002/07/30 23:07:10 1.9 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # (Publication Handler # -# $Id: loncoursedata.pm,v 1.6 2002/07/25 21:23:51 stredwic Exp $ +# $Id: loncoursedata.pm,v 1.9 2002/07/30 23:07:10 minaeibi Exp $ # # Copyright Michigan State University Board of Trustees # @@ -106,16 +106,16 @@ sub DownloadClasslist { my ($courseDomain,$courseNumber)=split(/\_/,$courseID); my %classlist; -# my $modifiedTime = &GetFileTimestamp($courseDomain, $courseNumber, -# 'classlist.db', -# $Apache::lonnet::perlvar{'lonUsersDir'}); - -# if($lastDownloadTime ne 'Not downloaded' && -# $lastDownloadTime >= $modifiedTime && $modifiedTime >= 0) { -# $classlist{'lastDownloadTime'}=time; -# $classlist{'UpToDate'} = 'true'; -# return \%classlist; -# } + my $modifiedTime = &GetFileTimestamp($courseDomain, $courseNumber, + 'classlist.db', + $Apache::lonnet::perlvar{'lonUsersDir'}); + + if($lastDownloadTime ne 'Not downloaded' && + $lastDownloadTime >= $modifiedTime && $modifiedTime >= 0) { + $classlist{'lastDownloadTime'}=time; + $classlist{'UpToDate'} = 'true'; + return \%classlist; + } %classlist=&Apache::lonnet::dump('classlist',$courseDomain, $courseNumber); my ($checkForError)=keys (%classlist); @@ -186,14 +186,15 @@ sub DownloadCourseInformation { my %courseData; my ($name,$domain) = split(/\:/,$namedata); -# my $modifiedTime = &GetFileTimestamp($domain, $name, -# $courseID.'.db', -# $Apache::lonnet::perlvar{'lonUsersDir'}); -# if($lastDownloadTime >= $modifiedTime) { -# $courseData{'lastDownloadTime'}=time; -# $courseData{'UpToDate'} = 'true'; -# return \%courseData; -# } + my $modifiedTime = &GetFileTimestamp($domain, $name, + $courseID.'.db', + $Apache::lonnet::perlvar{'lonUsersDir'}); + + if($lastDownloadTime >= $modifiedTime) { + $courseData{'lastDownloadTime'}=time; + $courseData{'UpToDate'} = 'true'; + return \%courseData; + } # Download course data %courseData=&Apache::lonnet::dump($courseID, $domain, $name); @@ -336,43 +337,60 @@ sub ProcessTopResourceMap { ':'.$currentResourceID; } + $cache->{$currentResourceID.':source'} = + $hash{'src_'.$currentResourceID}; my $meta=$hash{'src_'.$currentResourceID}; # $cache->{$currentResourceID.':title'}= # &Apache::lonnet::metdata($meta,'title'); $cache->{$currentResourceID.':title'}= $hash{'title_'.$currentResourceID}; + $cache->{$currentResourceID.':source'}= + $hash{'src_'.$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) { @@ -559,6 +577,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;