version 1.51.2.1, 2006/05/15 23:44:46
|
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=''; |
# |
# |
# This should be a |
# This should be a |
if (!defined($mapname) || !defined($id) || !defined($fn)) { |
if (!defined($mapname) || !defined($id) || !defined($fn)) { |
($mapname,$id,$fn)=&Apache::lonnet::decode_symb($symb); |
($mapname,$id,$fn)=&Apache::lonnet::decode_symb($symb); |
$mapname = &Apache::lonnet::deversion($mapname); |
|
} |
} |
# Cascading lookup scheme |
# Cascading lookup scheme |
my $rwhat=$what; |
my $rwhat=$what; |
Line 335 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 371 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 632 sub get_parameter_values {
|
Line 644 sub get_parameter_values {
|
if (tie(%parmhash,'GDBM_File', |
if (tie(%parmhash,'GDBM_File', |
$self->{'coursefilename'}.'_parms.db',&GDBM_READER(),0640)) { |
$self->{'coursefilename'}.'_parms.db',&GDBM_READER(),0640)) { |
my ($mapname,$id,$fn)=&Apache::lonnet::decode_symb($self->{'symb'}); |
my ($mapname,$id,$fn)=&Apache::lonnet::decode_symb($self->{'symb'}); |
$mapname = &Apache::lonnet::deversion($mapname); |
|
foreach my $parmname (@Parameters) { |
foreach my $parmname (@Parameters) { |
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); |