Diff for /loncom/interface/spreadsheet/assesscalc.pm between versions 1.50 and 1.53

version 1.50, 2005/05/17 20:14:19 version 1.53, 2006/05/01 06:17:16
Line 290  Returns: The value of a parameter, or '' Line 290  Returns: The value of a parameter, or ''
   
 This function cascades through the possible levels searching for a value for  This function cascades through the possible levels searching for a value for
 a parameter.  The levels are checked in the following order:  a parameter.  The levels are checked in the following order:
 user, course (at section level and course level), map, and lonnet::metadata.  user, course (at group, section level and course level), map, and 
   lonnet::metadata.
 This function uses %parmhash, which must be tied prior to calling it.  This function uses %parmhash, which must be tied prior to calling it.
 This function also requires %courseopt and %useropt to be initialized for  This function also requires %courseopt and %useropt to be initialized for
 this user and course.  this user and course.
Line 301  this user and course. Line 302  this user and course.
 ##################################################  ##################################################
 sub parmval {  sub parmval {
     my $self = shift;      my $self = shift;
     my ($what,$symb,$uname,$udom,$csec,$recurse,$mapname,$id,$fn)=@_;      my ($what,$symb,$uname,$udom,$csec,$recurse,$mapname,$id,$fn,$groups)=@_;
     $uname = $self->{'name'}    if (! defined($uname));      $uname  = $self->{'name'}     if (! defined($uname));
     $udom  = $self->{'domain'}  if (! defined($udom));      $udom   = $self->{'domain'}   if (! defined($udom));
     $csec  = $self->{'section'} if (! defined($csec));      $csec   = $self->{'section'}  if (! defined($csec));
     $symb  = $self->{'symb'}    if (! defined($symb));      $groups = $self->{'groups'}   if (! defined($groups)); 
       $symb   = $self->{'symb'}     if (! defined($symb));
     #      #
     my $result='';      my $result='';
     #      #
Line 334  sub parmval { Line 336  sub parmval {
     my $ucourselevel  = $usercourseprefix.'.'.$what;      my $ucourselevel  = $usercourseprefix.'.'.$what;
     my $ucourselevelr = $usercourseprefix.'.'.$symbparm;      my $ucourselevelr = $usercourseprefix.'.'.$symbparm;
     my $ucourselevelm = $usercourseprefix.'.'.$mapparm;      my $ucourselevelm = $usercourseprefix.'.'.$mapparm;
    # check user      # check user
     if (defined($uname)) {      if (defined($uname)) {
         return $useropt{$ucourselevelr} if (defined($useropt{$ucourselevelr}));          return $useropt{$ucourselevelr} if (defined($useropt{$ucourselevelr}));
         return $useropt{$ucourselevelm} if (defined($useropt{$ucourselevelm}));          return $useropt{$ucourselevelm} if (defined($useropt{$ucourselevelm}));
         return $useropt{$ucourselevel}  if (defined($useropt{$ucourselevel}));          return $useropt{$ucourselevel}  if (defined($useropt{$ucourselevel}));
     }      }
       # check groups
       if (defined($groups) && ref($groups eq 'ARRAY')) {
           foreach my $group (@{$groups}) {
               foreach my $level ($symbparm,$mapparm,$what) {
                   my $item = $courseprefix.'.['.$group.'].'.$level;
                   if (defined($courseopt{$item})) {
                       return $courseopt{$item};
                   }
               }
           }
       }
     # check section      # check section
     if (defined($csec)) {      if (defined($csec)) {
         return $courseopt{$seclevelr} if (defined($courseopt{$seclevelr}));          return $courseopt{$seclevelr} if (defined($courseopt{$seclevelr}));
Line 370  sub parmval { Line 383  sub parmval {
  my $newwhat=$rwhat;   my $newwhat=$rwhat;
  $newwhat=~s/\Q$space\E/$part/;   $newwhat=~s/\Q$space\E/$part/;
  my $partgeneral=$self->parmval($newwhat,$symb,$uname,$udom,$csec,1,   my $partgeneral=$self->parmval($newwhat,$symb,$uname,$udom,$csec,1,
        $mapname,$id,$fn);         $mapname,$id,$fn,$groups);
  if (defined($partgeneral)) { return $partgeneral; }   if (defined($partgeneral)) { return $partgeneral; }
     }      }
     if ($recurse) { return undef; }      if ($recurse) { return undef; }
Line 635  sub get_parameter_values { Line 648  sub get_parameter_values {
             my $value = $self->parmval($parmname,$self->{'symb'},              my $value = $self->parmval($parmname,$self->{'symb'},
        $self->{'name'},$self->{'domain'},         $self->{'name'},$self->{'domain'},
        $self->{'section'},undef,         $self->{'section'},undef,
        $mapname,$id,$fn);         $mapname,$id,$fn,$self->{'groups'});
             $parameters{$parmname} =$value;              $parameters{$parmname} =$value;
         }          }
         untie(%parmhash);          untie(%parmhash);
Line 703  sub parameter_part_is_valid { Line 716  sub parameter_part_is_valid {
         return 1;          return 1;
     }      }
     #      #
     my (undef,$part) =       my ($start,@pieces)=split('_',$parameter);
         ($parameter =~ m/^(resource|stores|parameter)_([^_]+)_.*/);      if ( $start !~ m/^(resource|stores|parameter)$/) { return 0; }
     if (exists($self->{'Parts'})          &&       while (@pieces) {
         exists($self->{'Parts'}->{$part}) &&          pop(@pieces);
         $self->{'Parts'}->{$part} ) {          my $testpart=join('_',@pieces);
         return 1;   if (exists($self->{'Parts'}->{$testpart}) &&
     } else {      $self->{'Parts'}->{$testpart} ) {
         return 0;      return 1;
    }
     }      }
       return 0;
 }  }
   
 sub compute {  sub compute {

Removed from v.1.50  
changed lines
  Added in v.1.53


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>